这是 .NET Framework 中所有自定义安装程序的基类。安装程序是帮助在计算机上安装应用程序的组件。
使用 Installer 时必须遵循几个步骤。
-
继承 Installer 类。
-
向派生类添加 RunInstallerAttribute,并将其设置为 true。
-
将派生类放置在带有要安装的应用程序的程序集内。
-
调用安装程序。例如,使用 InstallUtil.exe 调用安装程序。
Installers 属性包含安装程序的集合。如果 Installer 的此实例是安装程序集合的一部分,则 Parent 属性设置为包含该集合的 Installer 实例。有关 Installers 集合用法的示例,请参见 AssemblyInstaller 类。
Installer 类的 Install、Commit、Rollback 和 Uninstall 方法遍历存储在 Installers 属性中的安装程序的集合,并调用每个安装程序的相应方法。
Install、Commit、Rollback 和 Uninstall 方法并非总是在同一 Installer 实例上调用。例如,在安装和提交应用程序时可能使用一个 Installer 实例,然后释放对该实例的引用。以后卸载应用程序时将创建对新的 Installer 实例的引用,这意味着由 Installer 的另一个实例调用 Uninstall 方法。因此,在派生类中,不要在安装程序中保存计算机的状态。而请使用 IDictionary,它可跨调用保留并传递给 Install、Commit、Rollback 和 Uninstall 方法。
两种情况可以阐释在状态保护程序 IDictionary 中保存信息的必要性。第一种情况,假定安装程序设置了注册表项。它应在 IDictionary 中保存该项的原始值。如果安装被回滚,则可以还原原始值。第二种情况,假定安装程序替换现有文件。将现有文件保存在临时目录中,并将该文件的新位置的位置保存在 IDictionary 中。如果安装被回滚,则删除新文件并将其替换为临时位置中的原始文件。
Installer.Context 属性包含关于安装的信息。例如,关于安装日志文件位置的信息,Uninstall 方法所要求的保存文件的位置的信息,以及运行安装可执行文件时输入的命令行。