将MSI参数传递给.NET安装程序类

将MSI参数传递给.NET安装程序类,.net,installation,windows-installer,installshield,.net,Installation,Windows Installer,Installshield,我有个练习给你!:) 我需要在C#中实现的安装程序类中获取[INSTALLDIR]MSI属性。使用InstallShield 2010,我创建了一个组件,其中.NET程序集被定义为组件的关键文件。指定组件为.NET安装程序类,实现了必需的接口,并确保在执行流期间调用了该接口。现在我需要获取安装目录MSI属性。你们有什么想法吗 我知道有一个预定义的自定义操作可以将属性传递给延迟的自定义操作,但我实际上没有运行Installer类的自定义操作,这是一个安装组件。VisualStudio安装程序有一些

我有个练习给你!:)

我需要在C#中实现的安装程序类中获取[INSTALLDIR]MSI属性。使用InstallShield 2010,我创建了一个组件,其中.NET程序集被定义为组件的关键文件。指定组件为.NET安装程序类,实现了必需的接口,并确保在执行流期间调用了该接口。现在我需要获取安装目录MSI属性。你们有什么想法吗

我知道有一个预定义的自定义操作可以将属性传递给延迟的自定义操作,但我实际上没有运行Installer类的自定义操作,这是一个安装组件。VisualStudio安装程序有一些示例,但InstallShield似乎没有什么不同


多谢

在InstallShield |组件属性中,您在.NET安装程序类参数中输入了.NET安装程序类=是。你基本上是这样做的

/INSTALLDIR=“[INSTALLDIR]\”/FOO=42

在您的上下文中,您可以访问INSTALLDIR和FOO

但我想对你说实话:你不想这么做。从我这里可以看出,WiX C#DTF是一种更好的模式,它消除了InstallUtil中的许多问题,您最终会遇到这些问题并为此感到遗憾


我的博客上有DTF示例。只需搜索DTF。

Chris,非常感谢!到目前为止,这种方法是有效的,但我肯定会读到WiX C#DTF。将参数传递给.NET安装程序类时,您认为可能会出现什么问题?基本上InstallUtil有几个缺点,在DTF中更好1)当它失败时,会出现神秘的1001个弹出窗口;即使在静默模式下。2) 它无权访问MSI句柄,因此无法设置MSI属性或写入MSI日志。3) jitted的第一个CLR版本是stickey。如果1.1 CA激发,那么2.0 CA激发,您将得到一个异常。