WiX安装程序将dll包含在msi中

Kru*_*sty 1 .net c# dll windows-installer wix

我正在尝试使用WiX创建安装程序.要将DLL包含到.msi包中,我尝试了两种不同的方法.其中之一是:

<DirectoryRef Id="SETTINGSDIR">
  <Component Id="CMP_CopySettings" Guid="AC7D1AA1-798B-48F5-AF8D-188B1050D47C" KeyPath="yes">
    <CreateFolder />
    <File Id="DBA.bat" Source="$(var.SolutionDir)\scr\A\A.WindowsService\bin\$(var.Configuration)\Settings\A_DB clear.bat" Checksum="yes"/>
    <File Id="AConfiguration.xml" Source="$(var.SolutionDir)\scr\A\A.WindowsService\bin\$(var.Configuration)\Settings\AConfiguration.xml" Checksum="yes"/>
    <File Id="ADB.CE.DEFAULT.sdf" Source="$(var.SolutionDir)\scr\A\A.WindowsService\bin\$(var.Configuration)\Settings\ADB.CE.DEFAULT.sdf" Checksum="yes"/>
    <File Id="ADB.CE.sdf" Source="$(var.SolutionDir)\scr\A\A.WindowsService\bin\$(var.Configuration)\Settings\A.CE.sdf" Checksum="yes"/>
    <RemoveFile Id="RemoveFileSettings" Name="*" On="uninstall"/>
  </Component>
</DirectoryRef>
Run Code Online (Sandbox Code Playgroud)

但是你可以很容易地理解,为每个DLL编写一个xml节点是非常困难的(6个项目每个都有200多个DLL).

第二个更快,但WiX只是创建一个文件夹的链接,而不是复制DLL到msi包

<DirectoryRef Id="SETTINGSDIR">
  <Component Id="CMP_CopySettings" Guid="AC7D1AA1-798B-48F5-AF8D-188B1050D47C" KeyPath="yes">
    <CreateFolder />
    <CopyFile Id="SettingsID" SourceProperty="SETTINGSSOURCEDIRECTORY" DestinationDirectory="SETTINGSDIR" SourceName="*" />
    <RemoveFile Id="RemoveFileSettings" Name="*" On="uninstall"/>
  </Component>
</DirectoryRef>
Run Code Online (Sandbox Code Playgroud)

有没有一个快速的解决方案,我可以在第二种方式添加或我必须使用heat.exe工具?在这种情况下,你能解释一下如何使用它吗?官方文档很差

谢谢

LeB*_*ste 5

你想要的是一个收获工具,为你做这件事.幸运的是它已经存在:热火

在您的具体情况下,您可能想要使用该命令,heat dir ".\My Files" -gg -g1 -directoryid "YourDirectoryId" -sfrag -template:fragment -out directory.wxs但检查您的需求是什么,您想要跳过的收获等...

请注意-t <xsl>开关,它可以让您完全控制调整最终输出的方式.