2012-12-13 60 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