2017-03-14 2 views
2

Ich habe eine Winform-App. Ich will offen verschiedenen Fenstern Form während der Installation auf einer Bedingung abhängig,Verschiedene Formulare je nach Installationszeit öffnen

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

veröffentliche ich meine App VS Tab veröffentlichen, die eine Datei setup.exe erzeugen. Jetzt weiß ich nicht, was ich setup.exe übergeben soll, um sie in meiner Hauptmethode zu erhalten. Ich habe versucht, setup.exe laufen mit,

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

und dann in meiner Main-Methode habe ich versucht,

AppDomain.CurrentDomain.SetupInformation.ActivationArguments.ActivationData 

, die in jedem Fall über null zurück (ich meine, wenn ich setup.exe die Haupt Methode wird aufgerufen).

Dann habe ich versucht,

Environment.GetCommandLineArgs() 

, die den Weg des laufenden exe (in temporären Ordner) enthalten. Dann habe ich versucht,

args.Length 

die 0. Dann kehrt Ich habe Eigenschaft,

public static string MyParam{ get; set; } 

die immer null zurück. Also, meine Frage ist, wie kann ich Argumente an setup.exe weitergeben, die zu meiner Anwendung exe getragen werden? Ich habe keine andere Möglichkeit, als setup.exe wegen der Unternehmensrichtlinie auszuführen.

Update: Vorerst ich Query-String-Ansatz verwende wie hier angegeben, http://madskristensen.net/post/url-parameters-in-clickonce-applications

+0

Sie veröffentlichen mit Klick-einmal (Eigenschaften> Veröffentlichen> Jetzt veröffentlichen)? – Evk

+0

@Evk Yup 'Eigenschaften> Veröffentlichen> Jetzt veröffentlichen' – user960567

+0

Ich denke, dass Sie mit ClickOnce nicht tun können, was Sie wollen. Sie werden wahrscheinlich ein anderes Installationssystem benötigen, zB [WiX] (http://wixtoolset.org/) oder [InstallShield] (https://www.flexerasoftware.com/producer/products/software-installation/installshield-software- installer /) – Pikoh

Antwort

0

Laufen und Installation Ihrer App sind zwei völlig verschiedene Dinge.

Wenn Sie Ihre App starten, wählen Sie das Formular aus, das je nach "etwas" angezeigt wird. Das ist ok. Aber vorher, wenn Sie die App von Ihrem Setup installieren, wird die App nicht gestartet, so dass keine Möglichkeit besteht, "etwas" zu übergeben.

Ich denke, Sie sprechen über einige Konfigurationsoptionen, die bei der Installation Ihrer App definiert sind und die später beim Ausführen der App verwendet werden. Möglicherweise kann Ihr Setup eine Konfigurationsdatei erstellen, die später von Ihrer App verwendet werden kann.

+0

Das Problem ist, dass unser Operationsteam darauf besteht, ihnen eine setup.exe-Datei zu geben, aber wir können keine Argumente von setup.exe an unsere App übergeben. – user960567

+0

Ich verstehe nicht, wie Sie Ihre App bereitstellen. Ist es nicht so: 1) Sie bauen Ihre App und eine Setup-Datei. 2) Sie geben es dem Benutzer/admin. 3) Der Benutzer/Admin führt die Setup-Datei aus. 4) Das erstellt die App-Datei (und kann eine Konfigurationsdatei sein).5) Der Benutzer führt die App aus. 6) Die App liest die Konfiguration. –

+0

Richtig, aber ich möchte Setup-Datei über die Befehlszeile ausführen. Manchmal muss ich also Argumente an setup.exe übergeben. Zum Beispiel während der Installation (Ausführen von setup.exe) für User1 möchte ich Form1 zeigen und für User2 möchte ich Form2 zeigen. Kurz gesagt, brauche ich einige Installationsoptionen, die meine App nach der Installation lesen kann. – user960567

Verwandte Themen