几十个问题&我发现一个条目(除了一个在stackoverflow上!)已经接近这个问题,但没有教会我需要什么。我有什么应该是一个几乎简单的安装:一个Windows服务和相关的托盘图标应用程序。他们使用标准的VS安装项目进行安装。在安装这些文件之后,我需要向用户展示一个对话框,以在服务的exe.config文件中设置一些参数。在该对话框中,用户应该能够中止安装。我已经尝试了两种自定义操作过程的方法,并在安装回滚时与每个方法碰到了一面墙。方法1:自定义操作的exe文件,在提交时运行。 这种作品。应用程序返回一个非零的退出代码,并发生安装回滚。我不喜欢的是:如何在自定义操作中使用VS安装程序类
- 当应用程序退出(后用户选择取消),安装显示错误消息说,有一个与安装问题,用户应与供应商联系。由于情况并非如此,我宁愿选择更正确的消息(“用户取消安装”)或根本没有消息。
- 这两个项目输出(服务和托盘应用程序)都必须列在全部四个自定义操作部分或我的对话框不会出现。相反,会出现有关缺少InstallState文件的错误,并且安装始终失败。直觉上,这似乎是错误的。
方法2:安装程序作为自定义操作,在安装或提交时运行。 这对我来说更清洁(只有自定义操作中列出的一个项目),但获取回滚过程比方法1更糟糕。似乎我必须在重写的方法(安装/提交)中抛出异常,然后在回滚发生之前给我几个错误对话框,然后回滚并不总是卸载服务。
如何在不使用WiX或类似选项的情况下完成这项工作最简洁的方法是什么?
谢谢,克里斯(和@Cosmin)。所以,我没有一些额外的工具,在一条小溪上?过去几天我在WiX教程中度过了一段时间,但是我确实安装了它并与Votive一起玩过。与VS的整合正在招人,如果这是一条走向的路线,我现在所缺少的是一个几乎简单的例子,它使我在整个过程中端到端。我不知道如何使用DTF添加的整洁东西,也没有人告诉我如何为一个VS应用程序构建一个WiX文件,例如3个项目程序集。我是否必须购买这本书,或者是否有一个以VS为中心的教程? – 2011-03-22 21:32:53
DTF将您的C#转换为C++等价DLL自定义操作。 Visual Studio也可以编写C++ DLL自定义操作,所以它应该很容易集成。否则,在我的博客上有VDPROJ,DTF,WiX的例子都可以查看。 – 2011-03-22 21:41:06
我搜索了你的档案(回到2008年5月),发现了关于DTF和你使用它的讨论(这实际上是我所有的兴趣开始),但没有完整的例子。我错过了吗?我感到我所缺少的东西被许多人认为太过琐碎以至于不能覆盖他们的作品,但我坚持这一点。 – 2011-03-28 17:32:02