My Bootstrapper安装程序需要按以下顺序执行此操作:
我的问题是:无论何时我运行可执行文件(无论是通过<ExePackage>
还是通过自定义操作),安装都会停止,并且在可执行文件停止之前不会继续(通过我手动停止它)或地狱冻结。
请注意,除了初始安装外,一切都必须自动完成;没有人可以按任何按钮(这就是为什么我必须在安装结束后重新启动机器。)
由于安装程序冻结了可执行文件,我无法运行另一个自定义操作来停止可执行文件,或者,实际上,做任何事情。问题不在于我的可执行文件,因为任何可执行文件都会发生这种情况(并且行为也会出现在玩具示例中)。
为了说明我的意思(并进一步展示我所说的内容),我的玩具安装程序的<Chain>
元素看起来像这样:
<Chain>
<MsiPackage SourceFile="$(var.msiA.TargetPath)" />
<ExePackage SourceFile="Show_Bitmap.exe"/>
<MsiPackage SourceFile="$(var.msiB.TargetPath)" />
<MsiPackage SourceFile="$(var.msiC.TargetPath)" />
</Chain>
当我使用详细日志记录运行时,我得到这些离散的日志文件:
安装实际上不会完成 - 它会挂在exe上,没有时间限制。
但是,如果我要将<Chain>
元素更改为如下所示:
<Chain>
<MsiPackage SourceFile="$(var.msiA.TargetPath)" />
<MsiPackage SourceFile="$(var.msiB.TargetPath)" />
<MsiPackage SourceFile="$(var.msiC.TargetPath)" />
<ExePackage SourceFile="Show_Bitmap.exe"/>
</Chain>
并使用详细日志记录运行它,我会得到这些离散的日志文件:
再一次,我必须取消安装,因为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)
时它就会运行。