12

使用 WiX,我想分发一个使用 SQLite 的 C# 程序。

SQLite 推荐下面的文件结构,所以我使用它:

在此处输入图像描述

在 Wix 中,我创建了x86x64文件夹并将正确的 DLL 放入每个文件夹中:

 <Directory Id='x86' Name='x86'>
   <Component Id='x86' Guid='...'>
     <CreateFolder />
     <File Id='f86' Name='SQLite.Interop.dll' Source='x86\SQLite.Interop.dll' />
   </Component>
 </Directory>
 <Directory Id='x64' Name='x64'>
   <Component Id='x64' Guid='...'>
     <CreateFolder />
     <File Id='f64' Name='SQLite.Interop.dll' Source='x64\SQLite.Interop.dll' />
   </Component>
 </Directory>

问题: WiX 说error LGHT0204 : ICE99: The directory name: x64 is the same as one of the MSI Public Properties and can cause unforeseen side effects.


提示:如果我从 WiX 脚本中删除这两个目录,然后手动将它们复制到安装程序的位置,那么它可以工作。这听起来很愚蠢,但也许解决方案是在 WiX 脚本中创建 x86_ 和 x64_ 目录,并在第一次执行程序时重命名它们?

4

1 回答 1

22

SQLite 没有问题。您使用 x64 作为目录 ID。这是这里的问题。如果您使用任何 Windows 保留属性作为目录 ID(如WindowsVolume ), ICE99会引发错误。

您必须更改 x64 目录 ID。它将解决此问题。

  <Directory Id='DIR_x64' Name='x64'>
于 2013-05-31T08:52:40.827 回答