Inno Setup 拒绝设置某些文件的权限

Inno Setup refuses to set permissions of some files

我正在编写一个需要 add/modify 某些文件权限的 Inno Setup 脚本。但是,它正在设置某些文件的权限,而不是其他文件。相关代码:

[Files]
Source: "K:\user\Odin\Installer Files\C_Odin\*"; DestDir: "{sd}\Odin"; Flags: ignoreversion recursesubdirs createallsubdirs

// CODE OF INTEREST STARTS HERE
Source: "K:\user\Odin\Installer Files\C_Odin\PDOXUSRS.NET"; DestDir: "{sd}\Odin"; Permissions: users-modify
Source: "K:\user\Odin\Installer Files\Data\PDOXUSRS.NET"; DestDir: "{sd}\Odin\Data"; Permissions: users-modify
Source: "K:\user\Odin\Installer Files\Data\Users.DB"; DestDir: "{sd}\Odin\Data"; Permissions: users-modify

第一个文件的权限设置正确,后两个文件的权限设置不正确。非常感谢任何见解

运行 带有 /LOG 的安装程序可执行文件,在其中找到。

2016-07-22 16:45:12.502   -- File entry --
2016-07-22 16:45:12.502   Dest filename: C:\Odin\WorkStn.cfg
2016-07-22 16:45:12.502   Time stamp of our file: 2016-07-22 16:19:28.000
2016-07-22 16:45:12.502   Dest file exists.
2016-07-22 16:45:12.502   Time stamp of existing file: 2016-07-22 16:19:28.000
2016-07-22 16:45:12.502   Version of our file: (none)
2016-07-22 16:45:12.518   Version of existing file: (none)
2016-07-22 16:45:12.518   Installing the file.
2016-07-22 16:45:12.518   Successfully installed the file.
2016-07-22 16:45:12.518   Setting permissions on file: C:\Odin\WorkStn.cfg
2016-07-22 16:45:12.518   -- File entry --
2016-07-22 16:45:12.518   Dest filename: C:\Odin\Data\PDOXUSRS.NET
2016-07-22 16:45:12.518   Time stamp of our file: 2016-07-22 12:04:28.000
2016-07-22 16:45:12.518   Installing the file.
2016-07-22 16:45:12.518   Creating directory: C:\Odin\Data
2016-07-22 16:45:12.518   Successfully installed the file.
2016-07-22 16:45:12.518   Setting permissions on file: C:\Odin\Data\PDOXUSRS.NET
2016-07-22 16:45:12.518   -- File entry --

完整日志https://gist.github.com/nguillermin/d814a14f68db8ebba1720a3af2f42a54

日志文件显示两个文件都安装了两次。

第一个文件为什么要安装两次就明白了。第一次通过通配符条目,第二次通过显式条目。没有 Permissions 属性的通配符条目在带有 Permissions 属性的显式条目之前,因此具有权限的第二次安装会覆盖没有权限的第一次安装。

但是您没有向我们展示安装有问题文件的第二个条目。所以我们不知道它是什么样的,也不知道它是在带有 Permissions 属性的条目之前还是之后。


无论如何,请注意让两个条目安装同一个文件是错误的。

这两个条目以某种方式合并了,这不起作用。该文件实际上安装了两次,第一次入口的属性丢失了。您应该 exclude 具有通配符条目中特定条目的文件,例如:

Source: "K:\user\Odin\Installer Files\C_Odin\*"; Excludes: "PDOXUSRS.NET"; \
    DestDir: "{sd}\Odin"; Flags: ignoreversion recursesubdirs createallsubdirs

Source: "K:\user\Odin\Installer Files\C_Odin\PDOXUSRS.NET"; \
    DestDir: "{sd}\Odin"; Permissions: users-modify