包括所有依赖项

时间:2008-11-19 16:01:55

标签: wix windows-installer wix3 paraffin

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

6 个答案:

答案 0 :(得分:9)

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

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

答案 1 :(得分:4)

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

在预构建WIX项目时,添加

call "$(ProjectDir)GenerateDependency.bat" "$(SolutionDir)" "$(ProjectDir)Dependencies.wxs"

在包含

的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.

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

注意:请注意,VisualStudio经常会遇到编码问题。使用Notepad ++更好地编辑此文件,并确保它使用ANSI,而不是UTF8。

这将生成您可以包含在项目中的Dependencies.wxs。如果您受源代码管理,请将其从中排除。

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

答案 2 :(得分:1)

从Wintellect看一下paraffin

答案 3 :(得分:0)

根据我的经验,Wix仍然是一个非常手动的过程。您必须单独添加每个依赖项 - 我认为您的想法是在构建项目的同时构建Wix安装程序,并在代码中添加每个项目时添加它们。通过这种方式,似乎不必回头去回顾项目。尽管如此,这肯定是一个很好的建议!

答案 4 :(得分:0)

我没有在WIX中看到可以做到这一点的东西,你应该知道你的解决方案/项目所需的所有依赖项。阅读此blog,里面是引用:

  

保持你的来源关闭和你的   依赖性更接近(道歉   太阳姿。)

我发现确保MSI中没有遗漏任何内容的最佳方法是在安装干净的虚拟PC上测试安装程序。

我见过的最接近你想要的东西就是这个人的blog

目前,我们不得不手工完成。

答案 5 :(得分:0)

我刚开始使用WIX并认为WixEdit(http://wixedit.sourceforge.net/)摇滚可以添加多个文件/ dll,解决了我对Wix轻松获取文件的挫败感。只需保持文件有条理,然后使用导入文件夹功能。当然,它并不支持每个文件都有一个组件的新3.0建议。

热量也很好,每个文件支持一个组件。我的列表中的下一步是获得一些自动化,以便这些文件自动更新为视觉工作室。