【问题标题】:MSI Launch Conditions Custom ActionsMSI 启动条件自定义操作
【发布时间】:2009-02-26 16:42:28
【问题描述】:
我已经能够触发 C# 自定义操作来覆盖 MSI 的安装和提交阶段。但是,在部署 ASP.NET 应用程序时,我希望能够在安装开始之前执行检查。
我知道有启动条件,但是,我希望能够在此处插入我自己的代码来处理自己启动时的检查,因为我看到启动条件只是用于检查 IIS 等的正确版本?
谁能在这里指出我正确的方向,或者即使有办法让启动条件触发一些 C#?
【问题讨论】:
标签:
c#
asp.net
installation
windows-installer
custom-action
【解决方案1】:
我认为使用自定义操作设置属性值,然后运行启动条件来检查属性值是一种方法。但是,这似乎不适用于 VS 安装项目,因为自定义操作在启动条件之后才会运行。 WiX 将允许更大的控制,并且应该允许更早地执行自定义操作。
一种粗略的做法是让自定义操作引发异常并回滚安装,但这将是一个丑陋的黑客攻击。
我发现了一个forum thread 讨论如何检查某个服务是否在安装时运行,这可能会引导您走向正确的方向。
【解决方案2】:
只需在 LaunchConditions 之后立即安排您的自定义操作。结果对于所有意图和目的都是相同的。
在 InstallShield 中,只需通过下拉菜单选择何时运行即可。或者使用 WiX,类似于:
<Custom Action="BlahBlahBlah" After="LaunchConditions">1</Custom>
与往常一样,对于刚开始使用 MSI 的任何人,我建议阅读 The Definitive Guide to Windows Installer。它提供了非常宝贵的底层知识(使用 Visual Studio 安装项目和 Orca),无论您使用 WiX、InstallShield 还是任何其他工具来构建 MSI 文件,这些知识都适用。