我的C#应用程序有一个Visual Studio Installer项目。它已设置为卸载我的应用程序的任何先前版本,安装新版本,然后在安装后运行该应用程序。它可以按预期工作到最后的“请等待”阶段:
此时,我的应用程序的新版本已经安装并且运行得非常愉快,但是上面的屏幕截图就位于那里(完全响应)并且只有在我完成后才会进入“安装完成”窗口我手动关闭了新安装的应用程序版本。
我的安装程序项目的配置是否有问题?我不希望人们只是为了完成安装过程而关闭应用程序,然后才能再次手动运行应用程序!这就是为什么我将安装程序设置为在安装后自动运行新版本的原因!
答案 0 :(得分:2)
我没有看到明确提到的主要问题是安装结束时程序的运行是同步的,因此安装程序会等待它完成。如果您不想将项目更改为WiX,则至少有两种解决方案:
不是直接将程序作为自定义操作运行,而是创建另一个小的自定义操作,以异步方式触发您的exe并退出。
Visual Studio设置不允许您像其他工具一样设置异步设置,但您可以通过打开MSI文件(使用Orca)并转到CustomAction表来执行此操作。很可能您的自定义操作的类型为3090.如果将其更改为3282(添加192),则自定义操作将是异步的,安装将完成。
答案 1 :(得分:1)
使用Visual Studio Installer项目时,这似乎是一个常见问题。以下问题确定了类似的问题:
Visual Studio Installer > How To Launch App at End of Installer
以下问题显示了一个解决方案,但是对于它的可行性存在分歧:
Run exe after msi installation?
我建议的解决方案是,如果可能的话,尝试使用WiX(http://wixtoolset.org/)来编写Windows Installer。与Visual Studio Installer项目相比,学习曲线可能稍微陡峭一些,但是一旦您对它感到满意,您就会发现您已经接触到了Windows Installer的更多功能以及一系列附加功能。由Wix工具集提供。 WiX的文档提供了一个如何实现您要做的事情的示例: