MSI启动条件自定义操作

时间:2009-02-26 16:42:29

标签: c# asp.net installer windows-installer custom-action

我已经能够触发C#自定义操作来覆盖MSI的安装和提交阶段。但是,在部署ASP.NET应用程序时,我希望能够在安装开始之前执行检查。

我知道有启动条件,但是,我希望能够在此处插入我自己的代码来处理启动时的检查,因为我看到启动条件只是用于检查IIS等的正确版本?

有没有人能指出我在这方面的正确方向,或者即使有办法让启动条件解雇一些C#?

2 个答案:

答案 0 :(得分:1)

我认为使用自定义操作设置属性值然后运行启动条件来检查属性值将是一种方法。但是,这似乎不适用于VS安装项目,因为自定义操作直到启动条件之后才会运行。 WiX将允许更好的控制,并且应该允许更早地执行自定义操作。

一种粗略的做法是让自定义操作抛出异常并回滚安装,但这将是一个丑陋的黑客攻击。

我找到了一个forum thread,讨论如何检查某个服务是否在安装时运行,这可能会让您朝着正确的方向前进。

答案 1 :(得分:1)

在LaunchConditions之后立即安排 自定义操作。所有意图和目的的结果都是一样的。

在InstallShield中,只需通过下拉菜单选择运行时间即可。或者使用WiX,这将是:

  <Custom Action="BlahBlahBlah" After="LaunchConditions">1</Custom>

与往常一样,对于任何开始使用MSI的人,我建议您阅读The Definitive Guide to Windows Installer。它提供了宝贵的低级知识(使用Visual Studio安装项目和Orca),无论您是使用WiX,InstallShield还是任何其他工具来构建MSI文件,它都适用。