在 Mensching 先生的评论之后,我将补充一点细节。
假设您至少使用 Wix 3.0,您可以使用 MakeSfxCA.exe 将依赖项打包到单个 DLL 中。(这是 DFT 的一个插件——部署工具基金会。)基本上,首先要确保项目正在复制您的依赖 DLL。制作一个 CustomAction.config 文件。使用简单的 .bat 文件进行测试,例如:
REM MyMakeSfxCA.bat - Run under $(TargetDir); abs. paths reqd.
"%WIX%\SDK\MakeSfxCA" ^
%cd%\Managed_custom_action_pkg.dll ^
"%WIX%\SDK\x86\sfxca.dll" ^
%cd%\Managed_custom_action.dll ^
%cd%\Dependent1.dll ^
%cd%\Dependent2.dll ^
%cd%\Microsoft.Web.Administration.dll ^
%cd%\Microsoft.Deployment.WindowsInstaller.dll ^
%cd%\CustomAction.config
一旦成功,转换为构建后事件:
"$(WIX)\SDK\MakeSfxCA" ^
$(TargetDir)\Managed_custom_action_pkg.dll ^
"$(WIX)\SDK\x86\sfxca.dll" ^
$(TargetDir)\Managed_custom_action.dll ^
$(TargetDir)\Dependent1.dll ^
$(TargetDir)\Dependent2.dll ^
$(TargetDir)\Microsoft.Web.Administration.dll ^
$(TargetDir)\Microsoft.Deployment.WindowsInstaller.dll ^
$(TargetDir)\CustomAction.config
在您的 .wxs 文件中,您的二进制密钥将如下所示:
<Binary Id="Managed_custom_action_CA_dll"
SourceFile="$(var.Managed_custom_action.TargetDir)$(var.Managed_custom_action.TargetName)_pkg.dll" />
对于他们的 CustomAction.config,您可以在网上找到示例。
这是我找到的最好的方法。