Installer自定义安装类

本文档介绍了如何在 .NET Framework 中创建自定义安装类,包括继承Installer类、重写核心方法,以及如何处理安装、提交、回滚和卸载操作。讨论了InstallUtil.exe的使用,并强调了在安装过程中正确管理状态的重要性,如使用IDictionary来保存和恢复系统状态。还提到了Installer.Context属性在提供安装信息方面的作用。
摘要由CSDN通过智能技术生成

这是 .NET Framework 中所有自定义安装程序的基类。安装程序是帮助在计算机上安装应用程序的组件。

使用 Installer 时必须遵循几个步骤。

  • 继承 Installer 类。

  • 重写 InstallCommitRollbackUninstall 方法。

  • 向派生类添加 RunInstallerAttribute,并将其设置为 true

  • 将派生类放置在带有要安装的应用程序的程序集内。

  • 调用安装程序。例如,使用 InstallUtil.exe 调用安装程序。

Installers 属性包含安装程序的集合。如果 Installer 的此实例是安装程序集合的一部分,则 Parent 属性设置为包含该集合的 Installer 实例。有关 Installers 集合用法的示例,请参见 AssemblyInstaller 类。

Installer 类的 InstallCommitRollbackUninstall 方法遍历存储在 Installers 属性中的安装程序的集合,并调用每个安装程序的相应方法。

InstallCommitRollbackUninstall 方法并非总是在同一 Installer 实例上调用。例如,在安装和提交应用程序时可能使用一个 Installer 实例,然后释放对该实例的引用。以后卸载应用程序时将创建对新的 Installer 实例的引用,这意味着由 Installer 的另一个实例调用 Uninstall 方法。因此,在派生类中,不要在安装程序中保存计算机的状态。而请使用 IDictionary,它可跨调用保留并传递给 InstallCommitRollbackUninstall 方法。

两种情况可以阐释在状态保护程序 IDictionary 中保存信息的必要性。第一种情况,假定安装程序设置了注册表项。它应在 IDictionary 中保存该项的原始值。如果安装被回滚,则可以还原原始值。第二种情况,假定安装程序替换现有文件。将现有文件保存在临时目录中,并将该文件的新位置的位置保存在 IDictionary 中。如果安装被回滚,则删除新文件并将其替换为临时位置中的原始文件。

Installer.Context 属性包含关于安装的信息。例如,关于安装日志文件位置的信息,Uninstall 方法所要求的保存文件的位置的信息,以及运行安装可执行文件时输入的命令行。

要实现C++程序的Windows Installer自定义安装路径,你需要在创建安装程序的过程中进行以下步骤: 1. 打开Visual Studio,创建一个新的安装程序项目(InstallShield或WiX)。 2. 在项目中添加一个自定义安装路径的对话框。 3. 在对话框中添加一个文本框和一个“浏览”按钮。 4. 在安装程序脚本中添加代码,以便在用户选择自定义安装路径时将其保存到一个变量中。 5. 在安装程序脚本中使用该变量,以便在安装程序过程中将程序文件复制到用户选择的自定义安装路径。 下面是一些具体的步骤: 1. 在Visual Studio中创建一个新的安装程序项目,如InstallShield或WiX。 2. 在安装程序项目中,找到并打开“用户界面”或“UI”部分。 3. 在用户界面中,添加一个新的对话框,命名为“CustomPathDlg”(或其他您选择的名称)。 4. 在“CustomPathDlg”对话框中,添加一个文本框和一个“浏览”按钮。 5. 右键单击文本框,选择“属性”,并将其名称设置为“EDIT_INSTALLPATH”(或其他您选择的名称)。 6. 右键单击“浏览”按钮,选择“属性”,并将其名称设置为“PUSH_INSTALLPATHBROWSE”(或其他您选择的名称)。 7. 在“CustomPathDlg”对话框上右键单击,选择“属性”,并在“属性”窗口中选择“ControlCondition”属性。 8. 在“ControlCondition”属性中,添加以下代码: EDIT_INSTALLPATH <> "" 9. 在安装程序项目中找到“InstallScript”或“CustomAction”部分。 10. 在该部分中,添加以下代码: // 定义变量 STRING szCustomPath; // 获取自定义路径 MsiGetProperty(hInstall, "EDIT_INSTALLPATH", szCustomPath, 255, NULL); // 保存自定义路径 MsiSetProperty(hInstall, "CUSTOM_INSTALL_PATH", szCustomPath); 11. 在安装程序项目中找到“InstallExecuteSequence”部分。 12. 在该部分中,找到“InstallFiles”操作,并在该操作之前添加以下代码: // 获取自定义路径 MsiGetProperty(hInstall, "CUSTOM_INSTALL_PATH", szCustomPath, 255, NULL); // 设置安装路径 MsiSetTargetPath(hInstall, "INSTALLDIR", szCustomPath); 在执行安装程序时,用户将会看到一个新的对话框,其中包含一个文本框和一个“浏览”按钮,以便选择自定义安装路径。用户选择路径后,安装程序将会将路径保存到一个变量中,并在安装程序过程中将程序文件复制到该路径。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值