演练:安装时使用自定义操作显示消息

下面的演练演示如何使用自定义操作接受用户输入,并将用户输入传递给安装期间出现的消息框。 这是一个很简单的自定义操作演示,对于其他许多任务都十分有用。 例如,自定义操作可以接受 Setup.exe 文件的位置作为用户输入,并在安装应用程序后使用该位置来启动应用程序。

此演练演示如何使用自定义操作向动态属性传递数据,以及如何使用安装程序类和**“CustomActionData”**属性。

提示

对于在以下说明中使用的某些 Visual Studio 用户界面元素,您的计算机可能会显示不同的名称或位置。这些元素取决于您所使用的 Visual Studio 版本和您所使用的设置。有关更多信息,请参见 Visual Studio 设置

创建自定义操作

  1. 在**“文件”菜单上指向“新建”,再单击“项目”**。

  2. 在**“新建项目”对话框中,选择“项目类型”窗格中的“Visual Basic”,然后在“模板”窗格中选择“类库”。 在“名称”**框中键入 PassData。

    该项目随即添加到**“解决方案资源管理器”**中。

创建安装程序类

  1. 在**“项目”菜单上,单击“添加类”**。

    在**“添加新项”对话框中选择“安装程序类”**。 接受默认名称。

  2. 当该安装程序类出现在设计图面上后,右击设计图面,然后单击**“查看代码”**在代码编辑器中查看文件内容。

  3. 添加下列过程以重写基类的**“Install”“Commit”“Rollback”“Uninstall”**过程。

    Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)
        MyBase.Install(stateSaver)
        Dim myInput As String = Me.Context.Parameters.Item("Message")
        If myInput Is Nothing Then
            myInput = "There was no message specified"
        End If
        MsgBox(myInput)
    End Sub
    
    Public Overrides Sub Commit(ByVal savedState As System.Collections.IDictionary)
        MyBase.Commit(savedState)
    End Sub
    
    Public Overrides Sub Rollback(ByVal savedState As System.Collections.IDictionary)
        MyBase.Rollback(savedState)
    End Sub
    
    Public Overrides Sub Uninstall(ByVal savedState As System.Collections.IDictionary)
        MyBase.Uninstall(savedState)
    End Sub
    
    public override void Install(System.Collections.IDictionary stateSaver)
    {
        base.Install(stateSaver);
        string myInput = Context.Parameters["message"];
        if (myInput == null)
        {
            myInput = "There was no message specified";
        }
        MessageBox.Show(myInput);
    }
    
    public override void Commit(IDictionary savedState)
    {
        base.Commit(savedState);
    }
    
    public override void Rollback(IDictionary savedState)
    {
        base.Rollback(savedState);
    }
    
    public override void Uninstall(IDictionary savedState)
    {
        base.Uninstall(savedState);
    }
    

    提示

    如果您键入 Public Overrides,然后键入空格,Intellisense 会提供一个方法和属性列表,您可以从该列表中选择“Install”并获取完整的声明。

  4. 在**“解决方案资源管理器”中,右击“Class1”代码文件,并选择“删除”**(因为它不是必需的)。

创建部署项目

  1. 在**“文件”菜单上指向“添加”,然后单击“新建项目”**。

  2. 在**“添加新项目”对话框的“项目类型”窗格中,展开“其他项目类型”节点并选择“安装和部署”,然后在“模板”窗格中选择“安装项目”。 在“名称”**框中键入“PassData 安装程序”。

  3. 在**“属性”窗口中,选择“ProductName”**属性并键入“PassData”。

    此外,选择**“Manufacturer”**属性并键入“我的公司”。

  4. 在**“文件系统编辑器”中,选择“应用程序文件夹”节点。 在“操作”菜单上指向“添加”,然后单击“项目输出”**。

  5. 在**“添加项目输出组”对话框中,为“PassData”**项目选择主输出。

    **“主输出来自 PassData (活动)”随即出现在“文件系统编辑器”**中。

添加自定义操作

  1. 在**“解决方案资源管理器”中选择“PassData 安装程序”项目。 在“视图”菜单上指向“编辑器”,然后单击“自定义操作”**。

  2. 在**“自定义操作编辑器”中选择(顶级)“安装”节点。 在“操作”菜单上,单击“添加自定义操作”**。

  3. 在**“选择项目中的项”对话框中,双击“应用程序文件夹”**。

  4. 选择**“PassData 的主输出(活动)”**将 PassData 自定义操作添加到 Install 节点。

  5. 在**“属性”窗口中,选择“CustomActionData”**属性并键入 /Message="[MESSAGE]"。

  6. 确保**“InstallerClass”属性设置为“True”**(这是默认值)。

自定义安装用户界面

  1. 在**“解决方案资源管理器”中选择“安装”项目。 在“视图”菜单上指向“编辑器”,然后单击“用户界面”**。

  2. 在**“用户界面编辑器”中,选择“安装”下面的“启动”节点。 在“操作”菜单上,单击“添加对话框”**。

  3. 在**“添加对话框”对话框中,选择“文本框 (A)”**对话框。

  4. 在**“操作”菜单上,单击“上移”。 重复此步骤,直到“文本框 (A)”对话框位于“安装文件夹”**节点之上。

  5. 在**“属性”窗口中,选择“BannerText”**属性并键入:

    消息内容

  6. 选择**“BodyText”**属性并键入:

    请在此输入消息。

  7. 选择**“Edit1Label”**属性并键入:

    消息:

  8. 选择**“Edit1Property”**属性并键入:

    消息

  9. 选择**“Edit2Visible”“Edit3Visible”“Edit4Visible”属性,将它们设置为“False”**。

  10. 在**“生成”菜单上,单击“生成 PassData 安装程序”。**

在开发计算机上安装

  • 在**“解决方案资源管理器”中选择“PassData 安装程序”项目。 在“项目”菜单上,单击“安装”**。

    这将在开发计算机上运行安装程序。 在**“消息内容”**安装对话框中,键入 Hello World!.

    提示

    您必须在计算机上拥有安装权限才能运行该安装程序。

部署到其他计算机

  1. 在**“Windows 资源管理器”中,定位到项目目录并找到生成的安装程序。 默认项目配置为“调试”“发布”**。

  2. 将“PassData 安装程序.msi”、Setup.exe 以及该目录下的其他所有文件和子目录复制到另一台计算机上。

    提示

    若要在未联网的计算机上安装,请将文件复制到诸如 CD-ROM 的传统媒体中。

    在目标计算机上双击 Setup.exe 运行安装程序。 在**“消息内容”**安装对话框中,键入 Hello World!.

    提示

    您必须在计算机上拥有安装权限才能运行该安装程序。

测试安装

  • 运行此应用程序,验证文本框是否包含安装期间输入的文本“Hello World!”。

卸载应用程序

  1. 在 Windows**“控制面板”中,双击“添加或删除程序”“程序和功能”**。

  2. 选择**“PassData 安装程序”并单击“删除”“卸载”,然后单击“确定”**关闭对话框。

    提示

    若要从开发计算机上卸载,请在“项目”菜单上,单击“卸载”

请参见

参考

CustomActionData 属性

其他资源

部署中的自定义操作管理