2012-12-13 59 views
3

我有一個文件夾樹,我複製到C:\ ProgramData我安裝的軟件(不要怪我,我沒有設計,編寫或設計它)需要全部控制每個人的這個數據。InnoSetup的文件夾權限遞歸設置

所以我把在[文件] sectionL

Source: "C:\ProgramData\PFPS\MapDataServer\*"; DestDir: "C:\ProgramData\PFPS\FalconViewCommand"; Flags: ignoreversion createallsubdirs recursesubdirs; Permissions: everyone-full; Excludes: "*.LDF" 

是的,這確實給大家每個單獨的文件的完全控制權,但該方案需要創建文件和文件夾的權限(目錄)是以下行不是爲大家設定的。

我嘗試添加[迪爾斯]節,但沒有奏效:

[Dirs] 
Name: "C:\ProgramData\PFPS\FalconViewCommand"; Flags: uninsalwaysuninstall; Permissions: everyone-full 

什麼大師說?

+2

的'[迪爾斯]'項應該工作,但你應該使用'{commonappdata} '而不是硬編碼'C:\ ProgramData'。 (是的,像這樣授予權限通常是設計得很差的應用程序的標誌。)您是否曾嘗試徹底卸載應用程序並確保在運行安裝之前該文件夾不存在? – Miral

+0

@Miral如何將程序數據的graning權限設計爲糟糕的設計?這是推薦用於存儲系統範圍應用程序設置的地方... – ghord

+0

首先,因爲大多數人默認需要系統範圍的設置,因爲他們根本沒有充分考慮到它,意識到人們可能想要在用戶級別定製它們。 (更容易,更好。)其次,因爲任何可寫入所有用戶的內容都會受到所有用戶(或其帳戶中運行的病毒)的固有篡改,從而增加此類損害的影響。最後,因爲對所有用戶都可讀的內容可能會侵犯隱私。很明顯,並非所有這些論點都適用於所有事情,但令人驚訝的是,很少有人甚至想到。 – Miral

回答

0

我一直在做的是最後的RUN,我發現Dirs沒有工作(是的,當測試安裝腳本時,我總是做一個完整的unistall),否則你怎麼知道會發生什麼?產品何時發貨?

我同意你關於{commonappdata},但我試圖去除隨機性,直到我到達問題的底部。

這是我一直在努力:

[Run] 
Filename: "C:\Windows\System32\icacls.exe"; Parameters: "C:\ProgramData\PFPS\FalconViewCommand /grant:r Users:(OI)(CI)F"; WorkingDir: "{tmp}"; Description: "Changing Directory Permissions"; StatusMsg: "Changing Directory Permissions" 
+0

小問題,但卸載可能不是一個乾淨的安裝相同。 – Deanna

+0

請注意icacls在Windows XP中不可用。從Win7複製的文件不會運行(不是win32應用程序,必須用.NET編寫)或Windows Server 2003中的一個功能有限。 – Kitet

1

這個工作對我來說:

[Dirs]  
Name:"{app}\"; Permissions:everyone-modify 
+0

切勿爲'{app}'或任何其他可以保存可執行文件的位置執行此操作。對共享數據/設置而言,它仍然是危險的(但更少的是攻擊面),這取決於它們的使用方式。 – Deanna