我正在尝试使用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工具?在这种情况下,你能解释一下如何使用它吗?官方文档很差
由于
答案 0 :(得分:5)
你想要的是一个为你做这个的收获工具。幸运的是它已经存在:Heat
在您的具体情况下,您可能希望使用命令heat dir ".\My Files" -gg -g1 -directoryid "YourDirectoryId" -sfrag -template:fragment -out directory.wxs
,但请检查您的需求是什么,您想要跳过的收获等...
请注意-t <xsl>
开关,它可让您完全控制调整最终输出的方式。