使用Wix分发一个使用SQLite的程序(必须能在32位和64位系统下运行)。

12
使用WiX,我想分发一个使用SQLite的C#程序。 SQLite推荐以下文件结构},因此我使用它:

enter image description here

在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提示错误 LGHT0204:ICE99:目录名称:x64与MSI公共属性之一相同,可能会导致意外的副作用。


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

23

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

您需要更改x64目录ID。这将修复此问题。

  <Directory Id='DIR_x64' Name='x64'>

你知道这个文件是不是通过heat.exe生成的吗? - ChristianMurschall

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接