刚开始使用Visual Studio中的WiX。找不到bootstrapper项目模板的大量文档。
我创建了一个空白的WPF应用程序。然后我创建了一个安装项目...
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="WiXBenchInstaller" Language="1033" Version="1.0.0.0" Manufacturer="None" UpgradeCode="9d845a6d-3e16-45d6-b0c4-7e818e465bfe">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate EmbedCab="yes"/>
<Feature Id="ProductFeature" Title="WiXBenchInstaller" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="WiXBench" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<!-- TODO: Remove the comments around this Component element and the ComponentRef below in order to add resources to this installer. -->
<Component Id="ProductComponent">
<File Source="$(var.WiXBench.TargetPath)"/>
</Component>
</ComponentGroup>
</Fragment>
然后我创建了一个bootstrapper项目......
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Bundle Name="WixBenchBootstrap" Version="1.0.0.0" Manufacturer="None" UpgradeCode="4b1049ed-38ba-4289-8d8d-e291160201e0">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.RtfLicense" />
<Chain>
<MsiPackage SourceFile="$(var.WiXBenchInstaller.TargetPath)"/>
</Chain>
</Bundle>
一切运转良好。我的问题是这是否是正确的方法。对于一个简单的应用程序来说,拥有2个安装程序项目似乎有些过分。我可以简单地使用包含所需内容的单个引导程序项目吗?
答案 0 :(得分:1)
这取决于你想要达到的目标,包的数量,UI等。
http://wixtoolset.org/documentation/manual/v3/bundle/
“bundle是在单个用户体验中链接在一起的安装包的集合。在应用程序的.MSI文件之前,Bundle通常用于安装先决条件,例如.NET Framework或Visual C ++运行时。允许将非常大的应用程序或应用程序套件分解为更小的逻辑安装包,同时仍然向最终用户呈现单个产品“
如果您有一个msi软件包,并且您不需要复杂的UI,那么仅仅使用MSI项目。 如果您有多个软件包或者您想要一个WPF UI,则必须使用现在使用的引导程序。
答案 1 :(得分:1)
是的,这是正确的方法。
通常,VS项目会生成一个主输出(.exe,.dll,.netmodule,.lib,.msi等),而wixprojs也不例外。对此没有规定;它只是MSBuild .targets文件及其相关VS项目设计者的设计。
如果它分散了不同的开发人员,您可以拥有包含不同项目子集的不同解决方案。 (解决方案包括零个或多个项目。项目包含在零个或多个解决方案中。)