0

我正在尝试向所有用户授予对我的 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.

整个下午我一直在拔头发,而且我一开始头发不多,所以我不能再失去 - 所以如果有人知道这里发生了什么,将不胜感激! !

谢谢,

克里斯。

4

1 回答 1

1

那么一天有什么不同呢?!今天早上,我启动了我的开发 PC,并决心在今天彻底解决这个问题 - 但是当我打开 Visual Studio 时 - 我注意到一些奇怪的东西 - 奇怪但正确(!) - 引用的 WixUtilExtension dll 的版本号现在是3.0.0.0——昨晚我睡觉的时候是0.0!!我尝试编译解决方案,它现在可以正常工作了——所以我不知道昨天发生了什么,但老实说,我很高兴现在一切正常。很抱歉浪费了阅读我帖子的 9 个人的时间。

于 2015-04-02T10:20:29.493 回答