0

我的 C# 应用程序有一个 Visual Studio 安装程序项目。它已设置为卸载我的应用程序的任何以前版本,安装新版本,然后在安装后运行该应用程序。它按预期工作,直到它位于最后的“请稍候”阶段:

例子

此时,我的应用程序的新版本已经安装并且运行得非常愉快,但是上面的屏幕截图就在那里(完全响应)并且只有在我手动关闭后它才会移动到“安装完成”窗口关闭我的应用程序的新安装版本。

在此处输入图像描述

我的安装程序项目的配置有问题吗?我不希望人们为了完成安装过程而不得不关闭应用程序,然后必须再次手动运行应用程序!这就是为什么我将安装程序设置为在安装后自动运行新版本!

4

2 回答 2

2

我没有看到明确提到的主要问题是安装结束时程序的运行是同步的,因此安装程序会等待它完成。如果您不想将项目更改为 WiX,至少有两种解决方案:

  1. 与其将程序直接作为自定义操作运行,不如创建另一个小的自定义操作,异步触发您的 exe 并退出。

  2. Visual Studio 设置不允许您像其他工具那样设置异步设置,但您可以通过打开 MSI 文件(使用 Orca)并转到 CustomAction 表来执行此操作。很可能您的自定义操作的类型为 3090。如果您将其更改为 3282(添加 192),自定义操作将是异步的并且安装将完成。

于 2017-02-20T00:36:03.537 回答
1

这似乎是使用 Visual Studio 安装程序项目时的常见问题。以下问题确定了一个类似的问题:

Visual Studio 安装程序 > 如何在安装程序结束时启动应用程序

下面的问题显示了一个解决方案,但是对于它的可取性存在分歧:

msi安装后运行exe?

我推荐的解决方案是,如果可能的话,尝试使用 WiX ( http://wixtoolset.org/ ) 来编写您的 Windows 安装程序。与 Visual Studio Installer 项目相比,学习曲线可能会稍微陡峭一些,但是一旦您对它感到满意,您会发现您会接触到 Windows Installer 的更多功能以及一系列附加功能由 Wix 工具集提供。WiX 的文档提供了一个示例,说明如何实现您想要做的事情:

http://wixtoolset.org/documentation/manual/v3/howtos/ui_and_localization/run_program_after_install.html

于 2017-02-19T14:16:54.317 回答