【发布时间】:2016-07-20 16:44:47
【问题描述】:
我发现数十个问答条目(除了一个在 stackoverflow 中!)与这个问题很接近,但并没有教我我需要什么。我有一个几乎简单的安装:一个 Windows 服务和一个关联的托盘图标应用程序。他们使用标准的 VS Setup 项目安装得很好。安装文件后,我需要向用户显示一个对话框,以便在服务的 exe.config 文件中设置一些参数。在该对话框中,用户应该能够中止安装。我尝试了两种自定义操作过程的方法,但在使安装回滚时都遇到了困难。
方法 1:自定义操作的 exe,在提交时运行。 这类作品。应用程序返回一个非零退出代码并发生安装回滚。我不喜欢的是:
- 当应用程序退出时(用户选择取消后),安装会显示一条错误消息,指出安装存在问题,用户应联系供应商。由于情况并非如此,我希望得到更正确的消息(“用户取消安装”)或根本没有消息。
- 两个项目输出(服务和托盘应用程序)必须在所有四个自定义操作部分下列出,否则我的对话框将不会出现。相反,会出现有关缺少 InstallState 文件的错误,并且安装总是失败。直觉上,这似乎是错误的。
方法 2:安装程序作为自定义操作,在安装或提交时运行。 这对我来说更干净(只有自定义操作中列出的一项),但是让进程回滚比方法 1 更糟糕。看来我必须在覆盖的方法(安装/提交)中抛出异常,这然后在回滚发生之前给我几个错误对话框,然后回滚并不总是卸载服务。
在不使用 WiX 或类似选项的情况下完成这项工作的最简洁方法是什么?
【问题讨论】:
标签: installation windows-installer custom-action