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

Jad*_*ias 7 .net c# windows-installer setup-project visual-studio

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

  1. Windows服务

  2. 它的安装项目

我需要我ProjectInstaller : System.Configuration.Install.Installer的方法调用OnAfterInstall来ProductName从安装项目中获取.我怎么做?

Som*_*per 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();
}
Run Code Online (Sandbox Code Playgroud)

请注意我包含了//System.Diagnostics.Debugger.Break();您可以注释的注释代码,以便您可以调试安装程序类.

希望这可以帮助.