演练:创建自定义操作
下面的演练演示如何创建一个 DLL 自定义操作,以便在安装结束时将用户直接连接到某个网页。 可使用自定义操作在完成安装后运行代码。
提示
对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置。
创建自定义操作
在**“文件”菜单上,单击“新建项目”**。
在**“新建项目”对话框中,选择“Windows”,再单击“类库”。 在“名称”**框中键入“OpenWeb”。
该项目随即添加到**“解决方案资源管理器”**中。
在**“项目”菜单上,单击“添加类”,然后在“添加新项”对话框中单击“安装程序类”。 接受默认名称 Installer1,然后单击“添加”**。
通过在设计图面上单击**“单击此处切换到代码视图”(或右击设计图面,再单击“查看代码”**),切换到代码视图。
在“代码编辑器”中,将以下代码(可打开 Web 浏览器)添加到 Installer1 代码文件中的构造函数下。
<Security.Permissions.SecurityPermission(Security.Permissions.SecurityAction.Demand)> Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary) MyBase.Install(stateSaver) End Sub <Security.Permissions.SecurityPermission(Security.Permissions.SecurityAction.Demand)> Public Overrides Sub Commit( ByVal savedState As System.Collections.IDictionary) MyBase.Commit(savedState) System.Diagnostics.Process.Start("https://www.microsoft.com") End Sub <Security.Permissions.SecurityPermission(Security.Permissions.SecurityAction.Demand)> Public Overrides Sub Rollback(ByVal savedState As System.Collections.IDictionary) MyBase.Rollback(savedState) End Sub <Security.Permissions.SecurityPermission(Security.Permissions.SecurityAction.Demand)> Public Overrides Sub Uninstall(ByVal savedState As System.Collections.IDictionary) MyBase.Uninstall(savedState) End Sub
[System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] public override void Install(IDictionary stateSaver) { base.Install(stateSaver); } [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] public override void Commit(IDictionary savedState) { base.Commit(savedState); System.Diagnostics.Process.Start("https://www.microsoft.com"); } [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] public override void Rollback(IDictionary savedState) { base.Rollback(savedState); } [System.Security.Permissions.SecurityPermission(System.Security.Permissions.SecurityAction.Demand)] public override void Uninstall(IDictionary savedState) { base.Uninstall(savedState); }
提示
如果您键入 Public Overrides,然后键入空格,IntelliSense 会提供一个方法和属性列表;您可以从该列表中选择“Commit”并获得完整的声明。 对 Install、Rollback 和 Uninstall 方法重复上述操作。
在**“解决方案资源管理器”中,右击 Class1 代码文件,再单击“删除”**(因为它是不必要的)。
添加部署项目
在**“文件”菜单上指向“添加”,然后单击“新建项目”**。
在**“添加新项目”对话框中,展开“其他项目类型”节点,展开“安装和部署项目”,单击“Visual Studio Installer”,然后再单击“安装项目”。 在“名称”**框中键入“自定义操作安装程序”。
项目添加到**“解决方案资源管理器”中,并显示“文件系统编辑器”**。
在**“文件系统编辑器”中,在左窗格中选择“应用程序文件夹”。 在“操作”菜单上指向“添加”,然后单击“项目输出”**。
在**“添加项目输出组”对话框中,OpenWeb 将显示在“项目”列表中。 选择“主输出”**。
**“OpenWeb 的主输出(活动)”显示在“应用程序文件夹”**中。
添加自定义操作
在**“解决方案资源管理器”中选择“自定义操作安装程序”项目。 在“视图”菜单上指向“编辑器”,然后单击“自定义操作”**。
此时将会显示**“自定义操作编辑器”**。
在**“自定义操作编辑器”中选择“提交”节点。 在“操作”菜单上,单击“添加自定义操作”**。
在**“选择项目中的项”对话框中,双击“应用程序文件夹”。 选择“OpenWeb 的主输出”**。
**“主输出来自 OpenWeb”显示在“自定义操作编辑器”中“提交”**节点的下方。
在**“属性”窗口中,确保将“InstallerClass”属性设置为“True”**(这是默认值)。
在**“自定义操作编辑器”中,选择“Install”节点,并将“OpenWeb 的主输出”添加到该节点中(类似于“Commit”**节点)。
在**“生成”菜单上,单击“生成自定义操作安装程序”**。
在开发计算机上安装
在**“解决方案资源管理器”中选择“自定义操作安装程序”项目。 在“项目”菜单上,单击“安装”**。
这将在开发计算机上运行安装程序并安装“自定义操作安装程序”。 在安装结束时,Internet Explorer 应当启动并打开 Microsoft.com 网站。
提示
您必须在计算机上拥有安装权限才能运行该安装程序。
部署到其他计算机
在**“解决方案资源管理器”中,右击安装项目,然后单击“在 Windows 资源管理器中打开文件夹”**。
导航到项目输出,并将 Custom Action Installer.msi、Setup.exe 和该目录下的所有其他文件和子目录复制到另一台计算机上。
提示
若要在未联网的计算机上安装,请将文件复制到诸如 CD-ROM 的传统媒体中。
在目标计算机上双击 Setup.exe 运行安装程序。
在安装结束时,Internet Explorer 应当启动并打开 Microsoft.com 网站。
提示
您必须在计算机上拥有安装权限才能运行该安装程序。
提示
如果 .NET Framework 尚未安装在目标计算机上,此部署将会安装它,安装过程可能需要几分钟的时间。
卸载应用程序
在**“控制面板”中,双击“添加或删除程序”**。
在**“添加或删除程序”对话框中,选择“自定义操作安装程序”,然后单击“删除”**。
提示
若要从开发计算机上卸载,请在“自定义操作安装程序”项目在“解决方案资源管理器”中打开并选定的情况下,单击“项目”菜单上的“卸载”。