OnAfterInstall活动在哪里?

Kor*_*lis 4 c# windows installation windows-installer

我在如何解决这个问题上遇到了严重的问题:我不知道OnAfterInstall事件的去向.

让我解释一下自己.我创建了一个C#项目,它完美地编译并在Release模式下构建.之后,我使用向导创建了一个Setup Project.我添加了一个额外的对话框,允许用户在两​​种语言之间进行选择.现在,我的问题是我想将该语言存储到注册表(或app.config文件中,越简单越好),并且我已经读过你需要在继承的Installer类中的OnAfterInstall方法中检测它.

现在,我应该把那个班级放在哪里?Logic告诉我它在C#项目中,但它抱怨Context和Installer类都不存在.当我将此类添加到安装项目时,它不会抱怨,但在此之后它不起作用.这是班级.

using System;
using System.Configuration.Install;

public class Install : Installer
{
    public Install()
    {
    }

    protected override void OnAfterInstall(IDictionary savedState)
    {
        string lang = Context.Parameters["lang"];
        RegistryKey key = Registry.LocalMachine;
        using (key = key.CreateSubKey(@"SOFTWARE\MyCompany\MyApp"))
        {
            key.SetValue("lang", lang);
            key.Close();
        }
        base.OnAfterInstall(savedState);
    }
}
Run Code Online (Sandbox Code Playgroud)

PS:我已经lang使用/ lang = [LANG] 传递了CustomActionData(其中LANG是无线电值)

Ger*_*old 5

首先,您应该添加RunInstallerAttribute到您的类.

[RunInstaller(true)]
public class Install : Installer
...
Run Code Online (Sandbox Code Playgroud)

接下来,将安装程序放在单独的项目(类库)中,例如MyCustomInstaller.

最后,将此项目的主要输出添加到安装项目的自定义操作编辑器中的自定义操作.

在此输入图像描述

这取决于你在其中的自定义操作要使用.