2016-07-22 77 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

我的意思是,我編寫搜索或排除模式,然後立即獲得有關我的模式匹配哪些文件的反饋。它與批處理文件中匹配的模式相同嗎? –