我发现的几十个Q& A条目(除了一个在stackoverflow中!)接近这个问题,但没有教我需要什么。我有一个几乎简单的安装:Windows服务和相关的托盘图标应用程序。它们与标准的VS Setup项目一起安装得很好。安装文件后,我需要向用户提供一个对话框,以在服务的exe.config文件中设置一些参数。在该对话框中,用户应该能够中止安装。我已经尝试了两种自定义操作流程的方法,并且在进行安装回滚时遇到了一个问题。
方法1:自定义操作的exe,在提交时运行。 这种作品。应用程序返回非零退出代码,并发生安装回滚。我不喜欢的是:
方法2:安装程序作为自定义操作,在安装或提交时运行。 这对我来说比较干净(只有自定义操作中列出的一个项目),但是让回滚过程比方法1更糟糕。似乎我必须在重写方法(Install / Commit)中抛出一个异常,然后在回滚发生之前给我几个错误对话框,然后回滚并不总是卸载服务。
在没有使用WiX或类似选项的情况下,最简洁的方法是什么?
答案 0 :(得分:0)
我推荐这种方法:
这样在安装之前收集信息,用户也可以毫无问题地中止安装。
Visual Studio不支持此方法,但可以使用免费或商业安装创作工具完成此操作。
如果您想坚持自定义操作,可以试试这个:
答案 1 :(得分:0)
简单的答案是不要使用VS Installer类。它们有许多基本的设计缺陷。我建议您查看Windows Installer XML(WiX)部署工具基础(DTF)。 DTF是托管代码的远优越托管模型/互操作库,并输出与C / C ++自定义操作兼容(从MSI角度)的DLL。它们可以被任何MSI创作工具用作自定义操作,而不仅仅是WiX安装程序。