Inno Setup 无法安装到 LocalSystem 的 %LOCALAPPDATA%



我有一个作为本地系统帐户运行的Windows服务。它将一些数据存储在%LOCALAPPDATA%文件夹中。对于LocalSystem,这是以下位置:

C:Windowssystem32configsystemprofileAppDataLocal

这项工作顺利进行;该服务创建自己的子文件夹并向其中写入文件。

现在,使用Inno Setup,我正在尝试将一个初始文件安装到该文件夹:

[Files]
Source: "LICENSE"; DestDir: "{sys}configsystemprofileAppDataLocalInnoTest"; Flags: ignoreversion

日志表明这很好:

[14:20:10,722]   -- File entry --
[14:20:10,725]   Dest filename: C:Windowssystem32configsystemprofileAppDataLocalInnoTestLICENSE
[14:20:10,729]   Time stamp of our file: 2022-10-24 13:56:42.000
[14:20:10,731]   Installing the file.
[14:20:10,734]   Creating directory: C:Windowssystem32configsystemprofileAppDataLocalInnoTest
[14:20:10,738]   Successfully installed the file.

上面写着";成功安装文件">,但无论是文件还是目录都不可见

然而,再次运行安装程序,您将被告知目标文件存在:

[14:24:47,381]   -- File entry --
[14:24:47,395]   Dest filename: C:Windowssystem32configsystemprofileAppDataLocalInnoTestLICENSE
[14:24:47,398]   Time stamp of our file: 2022-10-24 13:56:42.000
[14:24:47,400]   Dest file exists.
[14:24:47,403]   Time stamp of existing file: 2022-10-24 13:56:42.000
[14:24:47,405]   Installing the file.
[14:24:47,410]   Successfully installed the file.

所以:安装程序认为文件存在,但我看不到。

这特别是系统帐户的问题;如果我切换到LocalService帐户的%LOCALAPPDATA%,事情就会按预期进行:

[Files]
Source: "LICENSE"; DestDir: "{win}ServiceProfilesLocalServiceAppDataLocalInnoTest"; Flags: ignoreversion

如果有人能告诉我们这里正在发生(或没有发生(什么,我们将不胜感激。

这里是一个最小、可复制和完整的例子。

这几乎是:
安装到{sys}的文件/DLL没有出现在C:\Windows\system32中
尽管您的问题可能需要具体的答案。

如果我理解正确,您希望在32位和64位系统上都安装到System32。因此有两种选择:

  • 使用64位模式;

  • 如果您不想(或不敢(将整个安装程序切换到64位模式,则需要在[Files]部分中输入两个条目。一个用于带64bit标志的64位系统,一个用于不带标志的32位系统:

    [Files]
    Source: "LICENSE"; 
    DestDir: "{sys}configsystemprofileAppDataLocalInnoTest"; 
    Flags: ignoreversion; Flags: 64bit; Check: IsWin64
    Source: "LICENSE"; 
    DestDir: "{sys}configsystemprofileAppDataLocalInnoTest"; 
    Flags: ignoreversion; Check: not IsWin64
    

相关内容

  • 没有找到相关文章

最新更新