2016-07-22 106 views
1

我正在编写一个Inno安装程序脚本,需要添加/修改某些文件的权限。但是,它正在设置某些文件的权限而不是其他文件。相关代码:Inno安装程序拒绝设置某些文件的权限

[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

+0

向我们展示安装程序日志。 –

+0

你已经做到了,对吧?所以删除评论。 –

回答

1

日志文件显示,这两个文件被安装两次。

很明显为什么第一个文件安装了两次。第一次通过通配符输入,第二次通过显式输入。没有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 
+0

啊,我明白了。有什么方法可以测试你的排除模式吗?我有一种感觉,这不会是我最后一次搞砸了。 –

+0

不确定你的意思是“测试”。您可以检查安装程序日志文件以查看安装的文件以及是否安装了两次。正如我对你的日志所做的那样。 –

+0

我的意思是,我编写搜索或排除模式,然后立即获得有关我的模式匹配哪些文件的反馈。它与批处理文件中匹配的模式相同吗? –