Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何处理好几个问题;ExitCode“;s设为“s”;“强制重新启动”;在WiX包中?_Wix - Fatal编程技术网

如何处理好几个问题;ExitCode“;s设为“s”;“强制重新启动”;在WiX包中?

如何处理好几个问题;ExitCode“;s设为“s”;“强制重新启动”;在WiX包中?,wix,Wix,捆绑包项目有两个EXE安装程序,它们都必须重新启动计算机。代码如下: <Chain> <ExePackage Id="RDRole" Cache="no" Compressed="yes" PerMachine="yes" Vital="no" SourceFile="Resource\ServerManagerCmd.exe" Permanent="yes"

捆绑包项目有两个EXE安装程序,它们都必须重新启动计算机。代码如下:

<Chain>
    <ExePackage
        Id="RDRole"
        Cache="no"
        Compressed="yes"
        PerMachine="yes"
        Vital="no"
        SourceFile="Resource\ServerManagerCmd.exe"
        Permanent="yes"
        InstallCommand="-install RDS-RD-Server">

        <ExitCode
            Behavior="forceReboot"/>
    </ExePackage>

    <ExePackage
        Id="DoNetFull"
        Name =".NET Framework 4.0 full runtime"
        Cache="yes"
        Compressed="yes"
        PerMachine="yes"
        Vital="yes"
        SourceFile="Resource\dotNetFx40_Full_x86_x64.exe"
        InstallCommand="/q /norestart"
        Permanent="yes">

        <ExitCode
            Behavior="forceReboot"/>
    </ExePackage>


如果同时安装了
RDRole
DoNetFull
,如何使计算机只重新启动一次?

这是目前Burn引擎不支持的。有一个功能请求打开,用于创建类似于
RollbackBoundary
的东西,该请求表示如果此时需要重新启动,就接受它。我们可以称之为
restartbundary
。然而,这在今天并不存在


但是,与Burn中的大多数内容一样,您可以通过开发自定义引导程序应用程序来创建相同的概念,该应用程序在发现以前的软件包需要重新启动时,从OnExecutePackageComplete返回强制重新启动。一旦有了自定义BA,实现起来就不那么困难了。

Rob WiX最令人沮丧的一点是,使用XML作为规范语言,而不是仅仅拥有一个带有面向对象API的库,该库允许干净地构建安装,这导致了所有这些“上下文”问题,因为操作由支持的模式相互关联。直到今天,我仍然不明白为什么Windows上的安装程序不能简单。几十年来,安装人员花的时间是应用程序开始时的10倍,这是每个开发人员的祸根。WiX工具集提供了一个代码域,您可以根据自己的喜好编写代码。安装自然是非常分层的(因为安装的大多数资源都是基于树的),这使得XML成为表示数据的一种非常自然的方式(只要尖括号不会太麻烦您)。至于安装的复杂性,Windows Installer功能强大,可能比它应该的更复杂。然而,IMHO,安装为应用程序的sins付费。如果您的应用程序是干净的,那么安装应该相对简单。如果您的应用程序很复杂或决策失误,您需要在安装时付费。我被告知,在一个庞大的服务器安装序列中,一个后台产品多次要求用户“重新启动两次”。直到今天,我还在想这些设置在做什么。计划运行一次,然后需要第二次重新启动?设置具有相互依赖性的服务?所有东西都依赖的系统范围的路径设置-比如编译器?具有链接依赖项的COM文件?太复杂了,设计肯定很糟糕。但是在这种情况下,重启控制序列可能是引导程序需要的最重要的功能。