包括所有依赖项

Chr*_*nal 20 windows-installer wix wix3 paraffin

我刚刚开始使用WiX,因为我需要能够在CI服务器上自动构建MSI.反正是否自动包含项目的所有依赖项?

Rob*_*ing 9

heat.exe的"proj"扩展正在变得越来越好. 热量还没有准备好以自动化方式用于生产.这是将初始结构放在一起的一种非常合理的方法,但是在重复运行时却没有做正确的事情(例如,Component/@Guids不稳定,但是......).

当在heat.exe中解决上述问题后,将其合并到您的构建过程中肯定会省去上面提到的所有麻烦.我们的列表是在核心工具集中修复了最令人震惊的错误后做得更好.


Eri*_*sch 5

我也刚刚开始使用 WIX,我做了一个快速而肮脏的技巧来自动添加引用。这个想法是扫描要打包的项目的输出文件夹中的所有 .dll。

在 WIX 项目的预构建中,添加

call "$(ProjectDir)GenerateDependency.bat" "$(SolutionDir)" "$(ProjectDir)Dependencies.wxs"
Run Code Online (Sandbox Code Playgroud)

在您的 WIX 项目中添加一个GenerateDependency.bat 文件,其中包含

@echo off
set SOLUTIONDIR=%1
set OUTPUTFILE=%2
echo Starting Dependency check...
echo ^<?xml version="1.0" encoding="UTF-8"?^> > %OUTPUTFILE%
echo ^<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"^> >> %OUTPUTFILE%
echo   ^<Fragment^> >> %OUTPUTFILE%
echo     ^<ComponentGroup Id="MesDependance" Directory="INSTALLFOLDER"^> >> %OUTPUTFILE%

for %%F in (%SOLUTIONDIR%WixServiceInstallerExample\bin\Debug\*.dll) do (
   echo "-- Adding %%~nxF" 
    echo       ^<Component Id="%%~nF"^> >> %OUTPUTFILE%
    echo                     ^<File  Id="%%~nF" Name="%%~nxF" Source="%%~dpnxF" Vital="yes" KeyPath="yes" DiskId="1"/^> >> %OUTPUTFILE%
    echo       ^</Component^> >> %OUTPUTFILE%
)
echo     ^</ComponentGroup^> >> %OUTPUTFILE%
echo   ^</Fragment^> >> %OUTPUTFILE%
echo ^</Wix^> >> %OUTPUTFILE%
echo Dependency check done.
Run Code Online (Sandbox Code Playgroud)

根据需要修改“WixServiceInstallerExample\bin\Debug”。这个soulhd是你想要打包的项目的输出文件夹

注意:请注意,VisualStudio 经常会搞乱编码。最好使用 Notepad++ 编辑此文件,并确保其格式为 ANSI,而不是 UTF8。

这将生成一个 Dependency.wxs,您可以将其包含在项目中。如果您处于源代码管理之下,请将其排除在外。

每次构建都会在实际制作包之前重新扫描 .dll 并重建 Dependency.wxs。