我正在创建一个主要使用WiX 3.6的安装包,因此我可以利用Burn自举功能.到目前为止,我有几个捆绑在一起的MSI软件包,它们将与内置的bootstrapper应用程序一起安装(WixStandardBootstrapperApplication.RtfLicense).
我已经读过Burn允许通过指定自定义来替换默认的bootstrapper应用程序UX.dll,但是我还没有找到描述自定义ux.dll构造方式的任何资源(也就是说,它如何与Burn引擎集成,什么我使用的技术,应该实现哪些接口等等.
我的目标是创建一个品牌引导程序,它可以从用户收集任意信息,并将该信息传递到各种捆绑的MSI文件,EXE文件等.
所以我真的有两个问题:
UX.dll?我知道WiX MSI中存在类似的问题,但是我在安装后使用Burn创建的引导程序EXE文件中启动应用程序时遇到问题.我的完整包在下面.
如果它对场景有任何影响,则引导程序以被动模式启动,因此用户不需要按任何内容.
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:bal="http://schemas.microsoft.com/wix/BalExtension"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension">
<Bundle Name="My Company AutoUpdater"
Version="1.0.11"
Manufacturer="My Company"
UpgradeCode="--GUID--">
<BootstrapperApplicationRef Id="WixStandardBootstrapperApplication.HyperlinkLicense">
<bal:WixStandardBootstrapperApplication SuppressOptionsUI="yes"
LicenseUrl=""
LogoFile="logo.png" />
</BootstrapperApplicationRef>
<Chain>
<MsiPackage SourceFile="..\App1\bin\Release\App1.msi" />
<MsiPackage SourceFile="..\App2\bin\Release\App2.msi" />
</Chain>
</Bundle>
<Fragment>
<Property Id="WixShellExecTarget"
Value="[#C:\Program Files (x86)\My Company\App1.exe]" />
<Binary Id="MyCA"
SourceFile="[#C:\Program Files (x86)\My Company\App1.exe]"/>
<CustomAction Id="LaunchApplication"
BinaryKey="MyCA"
ExeCommand="-switch"
Execute="deferred"
Return="check"
HideTarget="no"
Impersonate="no" />
<InstallExecuteSequence>
<Custom Action="LaunchApplication"
After="InstallFiles" />
</InstallExecuteSequence>
</Fragment>
</Wix>
Run Code Online (Sandbox Code Playgroud) 我有一个使用Visual Studio 2015开发的c ++应用程序,以及一个Wix安装程序和一个Burn bootstrapper.该应用程序的早期版本能够使用Visual Studio合并模块来安装必要的先决条件,但在使用Visual Studio 2015时看起来这不是一个选项(请参阅Redistributables用于部署在Windows 7上使用Visual Studio 2015开发的C++ exe)).
根据该链接中的建议,我们已经开始使用带有vital ="yes"的ExePackage在Burn中安装vcredist.这通常很有效 - 我们有几个客户由于vcredist的各种问题导致安装失败.直到最近,这些都是导致安装失败的错误.
在过去的几天里,由于安装了较新版本的可再发行组件,我们收到了几个安装程序失败的报告:vcredist失败,错误代码为0x80070666,导致我们的引导程序失败.
我的问题是:
安装可以使用.NET 4.0或4.5的应用程序时,安装先决条件.NET框架时的最佳做法是什么?你如何使用Burn in WiX实现它?
这些是我所知道的选项和权衡:
选项1:安装.NET 4.0(正如您所需)
选项2:如果不存在.NET 4.5,请安装.NET 4.5
选项3:仅当.NET 4.x不存在时才安装.NET 4.5
据我所知,如果性能改进很重要,最佳做法是选项2,如果平均部署速度很重要,则选择3.这听起来不错吗?我错过了选项1的任何优势吗?最重要的是,如果选项3确实有意义,那么在从Web安装.NET时如何使用Burn实现它?
如果我从常规msi安装程序切换到WiX刻录软件包安装程序,我应该如何选择我的UpgradeCode,以便实现从msi到bundle的升级路径?
例:
版本1.0作为普通的msi安装程序发布,其中UpgradeCode = X.
版本2.0将作为Burn捆绑包发布,包括产品和先决条件,如.NET.如果我希望v2捆绑包能够升级v1 msi,我应该使用以下哪个备选方案
A)msi里面应该保持UpgradeCode = X,并且bundle应该使用与它包装的msi相同的UpgradeCode.v2安装程序可以升级v1安装.
B)msi里面应该保持UpgradeCode = X,并且bundle应该得到一个新的UpgradeCode = Y.
C)msi里面应该得到一个新的UpgradeCode = Y并且bundle应该接管UpgradeCode = X,所以bundle v2可以升级msi v1.
我正在使用Burn for MSIs包.我正在使用Votive(Visual Studio)和我自己的自定义BA而不是WiXBA.我尝试使用调试自定义BA Debugger.Launch().但是当我开始调试时,会出现错误消息.
没有为任何调用堆栈帧加载符号.源代码无法显示
我意识到package.exe链接了位于的CustomBA dll C:\Documents and Settings\user\Local Settings\Temp\{GUID}\.{GUID}总是改变.因此,每当我运行package.exe时,总是会更改目录.
我认为这是发生错误的原因.
在Visual Studio中,当我使用CustomBA dll启动package.exe时,它位于绝对路径(.../Debug/bin/CustomBA.dll).但是在执行package.exe之后,它会链接到Local Settings\Temp\{GUID}目录.因此,当我们开始调试并附加到CustomBA dll时,CustomBA dll的目录会动态更改并No symbols are loaded发生错误.
C:\Documents and
Settings\user\Local Settings\Temp\{GUID}\?我们可以静态选择dll的路径吗?我有一个捆绑在WiX Burn引导程序中的MSI软件包.我可以从目标计算机上的捆绑包中提取此MSI吗?
我在一年多前在Visual Studio 2010中创建了一个WIX项目.它创建一个MSI文件和一个bootstrapper setup.exe.实际上,它为两种语言创建了一对文件 - 英语和法语.我现在正在将此项目集成到我们的TFS CI构建中.我无法通过CI构建来生成bootstrapper setup.exe文件.
我们最近将所有构建服务器上的Wix升级到Wix 3.6 RC.所以,我以为我会尝试Burn,而不是使用旧式的bootstrapper.我在我的解决方案中添加了一个新的Bootstrapper项目.bootstrapper项目包含一个简单的bundle.wxs,它只加载我的旧MSI项目生成的MSI.但是,当我尝试构建时,我收到以下错误:
错误LGHT0103:系统找不到文件'C:\ Tf\Advantage\Dev\Solution\Configuration\LaunchPad.Wix\bin\Release\fr-fr\LaunchPad.msi; C:\ Tf\Advantage\Dev\Solution \配置\ LaunchPad.Wix\BIN \发布\ EN-US\LaunchPad.msi".
我在bundle中的包引用如下所示:
<MsiPackage Id="MyApplication" SourceFile="$(var.LaunchPad.Wix.TargetPath)" />
Run Code Online (Sandbox Code Playgroud)
LaunchPad.Wix是Wix MSI项目的名称.如果我更改LaunchPad.Wix项目只构建一种语言,那么它工作正常.在我看来,bootstrapper项目类型不支持构建多种语言的安装文件.这是真的?有关解决方法的任何建议吗?
编辑
经过进一步调查,我想知道bootstrapper项目是否支持本地化.我尝试将我的Wix MSI项目设置为仅创建fr-fr.我的bootstrapper项目用英语创建的setup.exe.当我编辑bootstrapper项目的项目属性时,"Cultures to build"字段被锁定并且空白.我如何建立一个非英语的引导程序?这可能吗?
我有一个WiX bootstrapper包:
<Bundle Name="blah" Version="1.0.0" Manufacturer="blah" UpgradeCode="some-guid-string">
Run Code Online (Sandbox Code Playgroud)
当我生成一个新的构建并尝试在之前的安装中安装它时,引导程序应该自行升级(因为它的版本相同),但是它会在程序和功能中留下旧版本.如果在同一版本上安装,我该如何完全卸载以前的版本,如何从程序和功能中删除旧版本?我已经在线查看,但没有关于这个主题的明确答案.
编辑:此问题提示使用自定义BA通过更改OnPlanRelatedBundle中的请求状态来覆盖默认的无操作行为.我不确定这是什么意思,或者我如何能够加入OnPlanRelatedBundle ......任何人都可以澄清一下吗?自定义BA =自定义构建操作吗?
burn ×10
wix ×10
wix3.6 ×6
bootstrapper ×2
.net ×1
installation ×1
localization ×1
vcredist ×1
votive ×1