WiX如何同时运行exe和(Bootstrapper)安装程序

时间:2017-06-14 19:35:13

标签: windows wix custom-action bootstrapper

My Bootstrapper安装程序需要按以下顺序执行此操作:

  1. 运行在整个屏幕上绘制位图的可执行文件
  2. 安装/更新,做其事
  3. 重新启动
  4. 我的问题是:无论何时我运行可执行文件(无论是通过<ExePackage>还是通过自定义操作),安装都会停止,并且在可执行文件停止之前不会继续(通过我手动停止它)或地狱冻结。

    请注意,除了初始安装外,一切都必须自动完成;没有人可以按任何按钮(这就是为什么我必须在安装结束后重新启动机器。)

    由于安装程序冻结了可执行文件,我无法运行另一个自定义操作来停止可执行文件,或者,实际上,做任何事情。问题不在于我的可执行文件,因为任何可执行文件都会发生这种情况(并且行为也会出现在玩具示例中)。

    为了说明我的意思(并进一步展示我所说的内容),我的玩具安装程序的<Chain>元素看起来像这样:

    <Chain>
        <MsiPackage SourceFile="$(var.msiA.TargetPath)" /> 
        <ExePackage SourceFile="Show_Bitmap.exe"/>
        <MsiPackage SourceFile="$(var.msiB.TargetPath)" /> 
        <MsiPackage SourceFile="$(var.msiC.TargetPath)" /> 
    </Chain>
    

    当我使用详细日志记录运行时,我得到这些离散的日志文件:

    1. Bootstrapper日志文件(显示已安装 msiA 并且可执行文件已启动)。
    2. msiA 的日志文件。
    3. 安装实际上不会完成 - 它会挂在exe上,没有时间限制。

      但是,如果我要将<Chain>元素更改为如下所示:

      <Chain>
          <MsiPackage SourceFile="$(var.msiA.TargetPath)" /> 
          <MsiPackage SourceFile="$(var.msiB.TargetPath)" /> 
          <MsiPackage SourceFile="$(var.msiC.TargetPath)" /> 
          <ExePackage SourceFile="Show_Bitmap.exe"/>
      </Chain>
      

      并使用详细日志记录运行它,我会得到这些离散的日志文件:

      1. 安装了Bootstrapper日志文件(显示 msiA,msiB msiC ,并且可执行文件已启动)。
      2. msiA 的日志文件。
      3. msiB 的日志文件。
      4. msiC 的日志文件。
      5. 再一次,我必须取消安装,因为exe没有时间限制。

        (请注意,如果我不使用 元素来运行exe,而是通过自定义操作使用C#运行它,我会得到相同的行为。)< / p>

        最终,我的问题是:如何运行可执行文件以便与其余安装同时运行?

        我意识到这可能是Windows问题,而不是Windows Installer问题,但是......好吧,Windows不是我的强项(我的专长是建造枕头堡垒)。

        任何帮助将不胜感激。

        原来这是一个.Net Process事物......

        我应该刚刚输入代码Process.Start("path\to\Show.Bitmap.exe");,而是通过完成创建流程对象(Process p = new Process(), ..., p.Start())等的整个过程来启动流程...我猜你什么时候去在整个过程中,它不会异步运行或者某些东西,但是当你只是调用Process.Start(filename)时它就会运行。

0 个答案:

没有答案