c# - 如何制作 System.Configuration.Install.Installer 以从安装项目中获取变量?

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

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

  1. Windows 服务

  2. 它的安装项目

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

最佳答案

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

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

请注意,CustomActionData 包含将传递给安装程序类的参数。 PRODUCTNAME 是与用户界面对话框中的输入控件关联的属性名称,因此在您的情况下,您会提示用户在安装程序中输入产品名称。所以标签是“Product Name”,相应的属性应该设置为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();,您可以在其中添加注释,以便调试安装程序类。

希望这对您有所帮助。

关于c# - 如何制作 System.Configuration.Install.Installer 以从安装项目中获取变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2066048/

相关文章:

c# - 绑定(bind)数据源更改时控件不更新?

visual-studio - 有没有办法从代码中判断应用程序是在 Visual Studio 2008 Express、Standard 还是 Pro 中开发的?

python - IronPython visual studio 控制台应用程序 : no module named clr

c# - 在 WinDbg 中分析 CLR .dmp 文件

c# - DateTimePicker 不使用自定义格式字符串

c# - 通过使用 2D 变换旋转图像填充矩形来模拟透视

c# - 简单实用的 C# 代码生成(VS 2008 或 2010)

c# - 插值 3d 表面 ilnumerics

c# - 使用同一个程序集多次调用 Assembly.Load(AssemblyName) 有什么缺点?

c# - Reactive Extensions (Rx) - 当间隔中没有值时,使用最后一个已知值进行采样