标签: burn

自定义WiX Burn bootstrapper用户界面?

我正在创建一个主要使用WiX 3.6的安装包,因此我可以利用Burn自举功能.到目前为止,我有几个捆绑在一起的MSI软件包,它们将与内置的bootstrapper应用程序一起安装(WixStandardBootstrapperApplication.RtfLicense).

我已经读过Burn允许通过指定自定义来替换默认的bootstrapper应用程序UX.dll,但是我还没有找到描述自定义ux.dll构造方式的任何资源(也就是说,它如何与Burn引擎集成,什么我使用的技术,应该实现哪些接口等等.

我的目标是创建一个品牌引导程序,它可以从用户收集任意信息,并将该信息传递到各种捆绑的MSI文件,EXE文件等.

所以我真的有两个问题:

  1. 默认的bootstrapper应用程序在多大程度上可以自定义?
  2. 是否有可用的资源描述如何构建自定义UX.dll

wix burn wix3.6

45
推荐指数
4
解决办法
3万
查看次数

使用WiX/Burn安装后启动应用程序

我知道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)

installation wix bootstrapper burn wix3.6

19
推荐指数
2
解决办法
1万
查看次数

Wix Burn vcredist

我有一个使用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,导致我们的引导程序失败.

我的问题是:

  1. 正在部署vcredist的"正确"方法吗?(假设我们需要一个exe安装程序)
  2. 我们如何知道安装了哪些版本的可再发行组件(不一定在引导程序中,这些信息是否以某种用户可读形式存储)?
  3. 是否有我们应该分发的可再发行版本的更新版本?(目前使用14.0.23026)这是基于用于编译的Visual Studio版本还是应该始终分发最新版本?(当前VS版本14.0.23107.0)
  4. 作为最后的手段,是否可以检测从vcredist返回的错误代码并允许该值确定安装是继续还是失败?

wix burn vcredist visual-studio-2015

19
推荐指数
1
解决办法
7449
查看次数

如何使用WiX Burn智能地安装.NET 4.x.

安装可以使用.NET 4.0或4.5的应用程序时,安装先决条件.NET框架时的最佳做法是什么?你如何使用Burn in WiX实现它?

这些是我所知道的选项和权衡:

选项1:安装.NET 4.0(正如您所需)

  • 优点:未知(除了Windows XP,这是唯一的选择)

选项2:如果不存在.NET 4.5,请安装.NET 4.5

  • 优点:用户将来不必为将来的应用程序安装.NET 4.5.当用户稍后升级到.NET 4.5时,App将不会遇到.NET版本更改.应用程序立即获得.NET 4.5的性能改进.

选项3:仅当.NET 4.x不存在时才安装.NET 4.5

  • 优点:如果已安装.NET 4.0,则比选项2快得多.如果不是,则选项2的优点适用.

据我所知,如果性能改进很重要,最佳做法是选项2,如果平均部署速度很重要,则选择3.这听起来不错吗?我错过了选项1的任何优势吗?最重要的是,如果选项3确实有意义,那么在从Web安装.NET时如何使用Burn实现它?

bootstrapping windows-installer wix burn wix3.6

18
推荐指数
1
解决办法
1万
查看次数

如何为burn Bundle设置UpgradeCode

如果我从常规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.

wix burn

18
推荐指数
1
解决办法
3563
查看次数

如何调试自定义引导程序?

我正在使用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发生错误.

  • 为什么package.exe链接dll位于C:\Documents and Settings\user\Local Settings\Temp\{GUID}\?我们可以静态选择dll的路径吗?
  • 如果我们不能静态选择dll路径,我如何使用CustomBA的调试功能?

windows-installer wix burn wix3.6 votive

17
推荐指数
3
解决办法
5151
查看次数

提取Burn bootstrapper的内容

我有一个捆绑在WiX Burn引导程序中的MSI软件包.我可以从目标计算机上的捆绑包中提取此MSI吗?

wix burn

16
推荐指数
2
解决办法
8050
查看次数

WiX Burn 3.6 beta - 自定义UI示例

WiX Burn 3.6自定义UI 有什么好的参考/示例吗?

我用Google搜索,但它们是破碎的信息.

wix burn wix3.6

14
推荐指数
1
解决办法
1万
查看次数

创建本地化的WIX 3.6引导程序.

我在一年多前在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"字段被锁定并且空白.我如何建立一个非英语的引导程序?这可能吗?

localization wix visual-studio-2010 burn wix3.6

14
推荐指数
1
解决办法
8742
查看次数

如果检测到相同版本,则升级引导程序包

我有一个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 =自定义构建操作吗?

.net windows-installer wix bootstrapper burn

14
推荐指数
2
解决办法
1538
查看次数