使用安装项目在安装过程中获取用户输入并在安装程序中使用它

Get user input during installation using setup project and use it in installer

我创建了一个安装程序来安装 windows 服务。安装程序应要求用户命名服务。因此,我在安装程序中使用 TextBox 创建了自定义 UI。

当用户运行 setup.exe 文件时,安装开始并显示自定义 UI。用户添加了 windows 服务的名称,但我应该如何在安装期间将 ServiceName 作为用户输入并将默认服务名称设置为用户在安装期间在该自定义 UI 中提供的服务名称。

您需要按照以下步骤操作:

  1. 创建一个Windows服务项目。它将创建一个包含 Service1.cs.
  2. 的服务项目
  3. 打开 Service1.cs 并右击并选择 添加安装程序 。它将创建一个 ProjectInstaller.cs.
  4. 添加一个新的安装项目。 (如果您没有项目模板,请从此处下载并安装 VS2013, VS2015 or VS2017
  5. 将服务项目的主要输出添加到安装项目。
  6. 转到 用户界面 window 并在 之后使用 TextBoxes (A) 模板新建对话框安装文件夹。 (将 Edit1 之外的其他文本框的可见 属性 设置为 false。)
  7. 转到自定义操作 window 并从服务项目的主要输出添加新的自定义操作。
  8. Custom Action window, go to this node go to this node Custom ActionsInstallPrimary outputfrom WindowsService1 并在 Properties window 中,设置 CustomActionData/SVCNAME=[EDITA1].
  9. 在您的服务项目中打开 ProjectInstaller.cs 并覆盖 Install 以设置服务的 NameDisplayName

    public override void Install(IDictionary stateSaver)
    {
        string value = Context.Parameters["SVCNAME"];
        this.serviceInstaller1.DisplayName = value;
        base.Install(stateSaver);
    }
    

然后构建您的项目并安装服务。