使用Wix,分发一个使用SQLite的程序(必须在32位和64位上工作)

Nic*_*oul 12 64-bit wix system.data.sqlite

有了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>
Run Code Online (Sandbox Code Playgroud)

问题: 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_目录,并在首次执行程序时重命名它们?

Vin*_*oth 22

SQLite没有问题.您正在使用x64作为目录ID.这是问题所在.如果您使用任何Windows保留属性作为WindowsVolume之类的目录ID,ICE99将引发错误.

您必须更改x64目录ID.它将解决这个问题.

  <Directory Id='DIR_x64' Name='x64'>
Run Code Online (Sandbox Code Playgroud)