WiX安装后程序无法加载DLL文件'SQLite.Interop.dll'

3
我使用WiX来打包MSI安装文件。在安装后,我执行程序但遇到以下错误。
无法加载DLL 'SQLite.Interop.dll':找不到指定的模块。(HRESULT异常:0x8007007E)
我尝试将两个引用:SQLite.Interop(x86和x64)添加到WiX项目中。但我得到了以下错误:
扩展“...\SQLite.Interop.dll”无法加载,原因如下:无法加载文件或程序集“file://.../x86/SQLite.Interop.dll”或其某个依赖项。该模块应该包含一个程序集清单。
这个错误是由WiX还是我的应用程序引起的?


更新

我尝试将 SQLite.Interop.dll (x64) 的引用添加到主项目中,但是出现了以下错误。

无法添加对 'V:\Users...\bin\Debug\x64\SQLite.Interop.dll' 的引用。请确保该文件可访问,并且是有效的程序集或 COM 组件。


参考资料



SQLite DLL必须放置在应用程序目录中,x86和x64的子文件夹中 - 在VS中,您可以添加一个后期构建步骤来执行此操作,或将DLL添加到其文件夹中并启用复制到输出目录。不过,我对WiX不是很了解。 - Florian Koch
@FlorianKoch - 你是指\bin\debug\x86\bin\debug\x64吗? - Casper
是的,就像这样。 - Florian Koch
@FlorianKoch - 但问题仍然存在。 - Casper
我尝试直接复制 \bin\debug\x86\bin\debug\x64 到应用程序目录中,问题得到解决。这意味着 WiX 无法帮助我将这两个文件复制到正确的位置。如何指示WiX为我完成此操作? - Casper
这是我无法真正帮助你的部分... 我从未使用过WIX。 - Florian Koch
1个回答

3
Product.wxs 文件中添加以下内容:
<Directory Id="INSTALLFOLDER" Name="MyApp">
    <!-- ... -->
    <Directory Id="x86_dir" Name="x86" />
    <Directory Id="x64_dir" Name="x64" />
</Directory>

并添加以下内容:
<Fragment>
    <ComponentGroup Id="x86_files" Directory="x86">
        <Component Id="SQLite_x86.Interop.dll" Guid="{GUID}">
            <File Id="SQLite_x86.Interop.dll" Name="SQLite.Interop.dll" Source="$(var.MyApp_TargetDir)x86\SQLite.Interop.dll" />
        </Component>
    </ComponentGroup>
</Fragment>
<Fragment>
    <ComponentGroup Id="x64_files" Directory="x64">
        <Component Id="SQLite_x64.Interop.dll" Guid="{GUID}">
            <File Id="SQLite_x64.Interop.dll" Name="SQLite.Interop.dll" Source="$(var.MyApp_TargetDir)x64\SQLite.Interop.dll" />
        </Component>
    </ComponentGroup>
</Fragment>

{btsdaf} - Kamran Shahid

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