【问题标题】:WiX installer includes dll into msiWiX 安装程序将 dll 包含到 msi 中
【发布时间】:2016-08-23 22:19:33
【问题描述】:

我正在尝试使用 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>

但是您可以很容易地理解,为每个 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>

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

谢谢

【问题讨论】:

  • 另外仅供参考,您的组件中不需要 标签。另一个最佳实践是安装程序中的每个文件都有一个单独的组件,除非它们非常紧密地耦合在一起。您的第二种方法不是一个好主意,因为它会删除该目录中的 everything。即使是安装程序也绝对无权删除文件(如果用户出于任何原因将它们放在那里)。希望热工具对您很有帮助。我用它来将 3000 多个文件目录收集到 SDK 安装程序中,所以它很有帮助。

标签: c# .net dll wix windows-installer


【解决方案1】:

你想要的是一个收获工具来为你做这件事。幸运的是它已经存在:Heat

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

注意-t &lt;xsl&gt; 开关,它可以让您完全控制如何调整最终输出。

【讨论】:

    猜你喜欢
    • 2013-04-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-03
    相关资源
    最近更新 更多