我已经阅读了所有相关主题,还没有找到我的问题的完整答案。
我想给SYSTEM和Read& amp;执行用户组权限到程序文件下的文件夹。没有更多,没有更少。
我知道有三种方式可以使用WIX授予一个文件夹的权限,对于我来说,它们都不是很好,我会解释为什么:
1)常规许可要素:
<CreateFolder Directory="Test"> <Permission User="SYSTEM" GenericAll="yes"/> <Permission User="Users" Domain="[LOCAL_MACHINE_NAME]" GenericRead="yes" Read="yes" GenericExecute="yes" ChangePermission="yes"/> </CreateFolder>
问题:外部操作系统失败,因为它不知道“用户”关键字。我也尝试过SID。除了我需要将Permission元素放在Test目录下的每个文件(但如果这是唯一的情况,我将管理)
2)WixUtilsExtension PermissionEx元素:
<CreateFolder Directory="Test"> <util:PermissionEx User="SYSTEM" GenericAll="yes"/> <util:PermissionEx User="Users" Domain="[LOCAL_MACHINE_NAME]" GenericRead="yes" Read="yes" GenericExecute="yes" ChangePermission="yes"/> </CreateFolder>
问题:该文件夹还保留Program Files文件夹的默认权限。我不能允许
3)PermissionEx与Sddl:
问题:此元素仅在使用MSI 5.0进行安装时可用。我使用的是安装程序3.01。
我有这个完全相同的问题,并与Rob M谈过。我要做基督徒G的答案(
http://stackoverflow.com/a/5296967/18475),但是Rob建议使用WixQueryOsWellKnownSID(
http://wix.sourceforge.net/manual-wix3/osinfo.htm)来查找非美国地区。
<PropertyRef Id="WIX_ACCOUNT_LOCALSYSTEM" /> <PropertyRef Id="WIX_ACCOUNT_USERS" />
进一步在.wxs文件中,您要应用权限,就像这样:
<Permission GenericAll="yes" User="[WIX_ACCOUNT_LOCALSYSTEM]" /> <Permission GenericRead="yes" GenericExecute="yes" User="[WIX_ACCOUNT_USERS]" />
现在当你运行光时,你只需要链接WixUtilExtension。
light -ext WiXUtilExtension ...
注意:根据您的WiX版本,可能不完全支持。如果它不适合您,可能还有其他选项可用于translate SIDs。