我有一个文件夹树,我复制到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
什么大师说?
的'[迪尔斯]'项应该工作,但你应该使用'{commonappdata} '而不是硬编码'C:\ ProgramData'。 (是的,像这样授予权限通常是设计得很差的应用程序的标志。)您是否曾尝试彻底卸载应用程序并确保在运行安装之前该文件夹不存在? – Miral
@Miral如何将程序数据的graning权限设计为糟糕的设计?这是推荐用于存储系统范围应用程序设置的地方... – ghord
首先,因为大多数人默认需要系统范围的设置,因为他们根本没有充分考虑到它,意识到人们可能想要在用户级别定制它们。 (更容易,更好。)其次,因为任何可写入所有用户的内容都会受到所有用户(或其帐户中运行的病毒)的固有篡改,从而增加此类损害的影响。最后,因为对所有用户都可读的内容可能会侵犯隐私。很明显,并非所有这些论点都适用于所有事情,但令人惊讶的是,很少有人甚至想到。 – Miral