2010-04-08 51 views
2

我有一个练习给你! :)将MSI参数传递给.NET安装程序类

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

我知道有一个预定义的自定义动作来传递属性延期自定义动作,但我实际上没有运行安装程序类的自定义动作,这是一个安装组件。 Visual Studio安装程序有一些示例,但安装屏蔽似乎有点不同。

非常感谢!

回答

2

在InstallShield |组件属性,就在你说的.NET Installer Class = Yes下面。你可以放入你的.NET Installer Class Arguments。基本上,你这样做

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

里面的背景下,那么你可以访问INSTALLDIR和FOO。

但我想对你很诚实:你不想这样做。从我这里,WiX C#DTF是一个更好的模式,消除了许多与InstallUtil相关的问题,您最终会遇到并感到遗憾。

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

+0

克里斯,非常感谢!这种方法到目前为止,但我一定会读到关于WiX C#DTF。将参数传递给.NET安装程序类时,您认为会发生什么问题? – 2010-04-09 10:28:47

+1

http://robmensching.com/blog/posts/2007/4/19/Managed-Code-CustomActions-no-support-on-the-way-and-heres 基本上severa的事情对于InstallUtil来说是不好的,在DTF 1)当它失败时,你会得到神秘的1001弹出窗口;即使在静音模式下。 2)它无法访问MSI句柄,因此无法设置MSI属性或写入MSI日志。 3)jitter的第一个CLR版本是stickey。如果1.1 CA发生火灾,然后2.0火灾发生,你会得到一个例外。 – 2010-04-09 11:50:28