如何使System.Configuration.Install.Installer从安装项目中获取变量?

时间:2010-01-14 17:18:09

标签: c# .net visual-studio windows-installer setup-project

我的解决方案中有2个项目

  1. Windows服务

  2. 其设置项目

  3. 我需要使用名为OnAfterInstall的ProjectInstaller : System.Configuration.Install.Installer方法从安装项目中获取ProductName。我该怎么做?

1 个答案:

答案 0 :(得分:8)

在您的设置项目中右键单击项目,然后选择查看>自定义操作。添加自定义操作。现在选择Add Output,选择您的Web服务项目,然后单击OK。

现在选择自定义操作并将CustomActionData属性设置为包含/ProductName=[PRODUCTNAME] /whateveryouwant=[Whateveryouwant]之类的内容(请注意,这些是键值对;即,要访问产品名称,ProductName是键,值为PRODUCTNAME)。

请注意CustomActionData包含将传递给安装程序类的参数。 PRODUCTNAME是与用户界面对话框中的输入控件关联的属性名称,因此在您的情况下,您将在yor安装程序中提示用户输入产品名称。所以标签是“产品名称”,相应的属性应该设置为PRODUCTNAME(显然你可以改变它,但最重要的是要注意的是UI属性名称必须与属性名称相同)这个例子的CustomActionData)可以工作。

现在,在安装程序类中,您可以通过

获取产品名称
public override void Install(IDictionary stateSaver)
{
      // If you need to debug this installer class, uncomment the line below
      //System.Diagnostics.Debugger.Break();

       string productName = Context.Parameters["ProductName"].Trim();

       string whateveryouwant = Context.Parameters["whateveryouwant"].Trim();
}

请注意我添加了注释代码//System.Diagnostics.Debugger.Break();,您可以对其进行注释,以便调试安装程序类。

希望这会有所帮助。