我正在尝试向所有用户授予对我的 MSI 在 ProgramData 中创建的文件夹以及其中的所有子文件夹和内容的完全访问权限。我的代码基于Wix:如何设置文件夹和所有子文件夹的权限,所以我的目录结构如下:
<Directory Id="CommonAppDataFolder" Name="ProgramData">
<Directory Id="COMPANYFOLDER_PROGDATA" Name="ACME Limited">
<Directory Id="ACMEFOLDER_PROGDATA" Name="ACME">
<Component Id="ACMEFOLDER_PROGDATA_Permission" Guid="{59DDCF9A-E5B2-4733-99C1-964BBB1A8D9C}">
<CreateFolder>
<util:PermissionEx User="Users" GenericAll="yes"/>
</CreateFolder>
</Component>
我正在使用 WiX v3.9.1006.0 和 Visual Studio 2013 Update 4;我的 wix 文件顶部和链接器部分的项目工具设置中有 xmlns:util="http://schemas.microsoft.com/wix/UtilExtension" ,我有:
-ext "C:\Program Files (x86)\WiX Toolset v3.9\bin\WixNetFxExtension.dll"
-ext "C:\Program Files (x86)\WiX Toolset v3.9\bin\WixUIExtension.dll"
-ext "C:\Program Files (x86)\WiX Toolset v3.9\bin\WixUtilExtension.dll"
目前,我没有对 Visual Studio 中的 WixUtilExtension.dll 文件的引用,如果我尝试编译它,我会得到:
Error 1 The CreateFolder element contains an unhandled extension element 'util:PermissionEx'. Please ensure that the extension for elements in the 'http://schemas.microsoft.com/wix/UtilExtension' namespace has been provided
如果我添加对 dll 的引用 - 会发生两件奇怪的事情;首先,当我从 wix bin 文件夹中添加 dll 时,当它出现在 Visual Studio 中并单击参考时,它说版本是 0.0 ?!?
如果我忽略它并尝试编译项目,我现在得到:
The extension 'Microsoft.Tools.WindowsInstallerXml.Extensions.UtilExtension' contains a defintion for table 'EventManifest' that collides with a previously loaded table definition. Please remove one of the conflicting extensions or rename one of the tables to avoid the collision.
整个下午我一直在拔头发,而且我一开始头发不多,所以我不能再失去 - 所以如果有人知道这里发生了什么,将不胜感激! !
谢谢,
克里斯。