根据安装时间打开不同的表单

时间:2017-03-14 08:01:33

标签: c# winforms

我有一个winform应用程序。我想根据安装过程中的条件打开不同的窗体,

    static void Main(string[] args)
    {
        Application.EnableVisualStyles();
        Application.SetCompatibleTextRenderingDefault(false);
        if (something)
        {
            Application.Run(new Form1());
        }
        else
        {
            Application.Run(new Form2());
        }
    }

我使用VS发布标签发布我的应用,生成setup.exe文件。现在我不知道如何通过setup.exe来获取它们在我的Main方法中。我尝试使用

运行setup.exe
setup.exe MyParam=MyParam
setup.exe "MyParam=MyParam"
setup.exe "MyParam"
setup.exe MyParam
setup.exe /q "MyParam=MyParam"
and so on

然后在我试用的Main方法中,

AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData

在上述每种情况下返回null(我的意思是当我运行setup.exe时,将调用Main方法)。

然后我试过了,

Environment.GetCommandLineArgs()

包括正在运行的exe的路径(在temp文件夹中)。然后我试了,

args.Length

返回0.然后我创建了属性

public static string MyParam{ get; set; }

始终返回null。所以,我的问题是如何将setup.exe传递给我的应用程序exe?除了运行setup.exe之外,我没有其他选择,因为公司政策。

更新:目前我正在使用此处给出的查询字符串方法,http://madskristensen.net/post/url-parameters-in-clickonce-applications

1 个答案:

答案 0 :(得分:0)

运行和安装你的应用程序是两件完全不同的事情。

启动应用时,您可以根据“内容”选择要显示的表单。没关系。但之前,当您通过安装程序安装应用程序时,应用程序未启动,因此无法通过“某事”。

我认为您正在讨论一些配置选项,这些选项在安装您的应用时定义,并在以后运行应用时使用。因此,可能是您的安装程序可以创建配置文件,以后可以由您的应用程序使用。