Ich benutze InstallShield Installer und installShield.exe, um meine App automatisch zu installieren. Jetzt möchte ich setup.exe mit einigen Befehlszeilenargumenten aufrufen. Und diese Argumente sollten in einer benutzerdefinierten EXE-Aktion verfügbar sein, die ich erstellt habe, um bei Erfolg ausgeführt zu werden. Wie kann ich die Daten beim Aufruf der Setup-Datei von der Kommandozeile aus übergeben und in meiner exe verwenden? Die exe ist eine Konsolenanwendung, die in C# geschrieben ist.Übergeben Sie Befehlszeilenargumente vom Installshield-Installationsprogramm an die benutzerdefinierte Action-Exe.
1
A
Antwort
-1
Ich verstehe, ist dies ein MSI-basiertes Projekt, und ich nehme an, die Exe-Aktion Ausführung aufgeschoben wird.
Was sollten Sie tun, ist dies:
- In Ihrem Installateur, definieren einige benutzerdefinierte MSI-Eigenschaften, die Sie für die Exe benötigen (zB
ServerName
,ServerPort
) - Erstellen Sie eine benutzerdefinierte Aktion vom Typ ‚Set Ein Besitz'. Der Eigenschaftsname sollte der Name Ihrer benutzerdefinierten Aktion sein, die die EXE ausführt (z. B.
RunMyExe
). Der -Eigenschaftswert sollte eine verkettete Liste Ihrer benutzerdefinierten Eigenschaften sein, z.[ServerName];[ServerPort]
. Führen Sie diese benutzerdefinierte Aktion nach InstallInitialize aus. - In Ihrer Exe-Aktion (RunMyExe),
[CustomActionData]
als die Befehlszeile übergeben, um Ihre exe Programm - Programm Haben Sie Ihre exe die Befehlszeile erhalten, und teilen Sie es, um die Daten, die es braucht, um
- Invoke setup.exe beim Festlegen der benutzerdefinierten Eigenschaften, die Sie in Schritt 1 definiert haben, z
setup.exe /v"ServerName=test-srv ServerPort=67000"
Was passiert, ist, dass auf einer verzögerten Aktion nicht exernal Eigenschaften (wie jene, geliefert von der Kommandozeile) verwenden kann, können Sie nur intern diejenigen zugreifen wie Custom. Der Trick dabei ist, dass, wenn eine Eigenschaft mit dem Namen der Aktion existiert (RunMyExe im obigen Beispiel), die interne CustomActionData-Eigenschaft ihren Wert daraus bezieht.
Beachten Sie, dass selbst eine benutzerdefinierte Aktion mit verzögerter EXE auf eine beliebige Eigenschaft in ihrer Befehlszeile verweisen kann. –
Soweit ich mich erinnere, können nur öffentliche Eigenschaften über die Befehlszeile an MSI übergeben werden. Also, würde ich sagen, Ihr Vorschlag wird nicht funktionieren. – Vadim
"CustomActionData" ist keine Eigenschaft, die Sie an der Befehlszeile übergeben können. Sie existiert nur im Kontext einer verzögerten benutzerdefinierten Aktion und wird dem Namen der benutzerdefinierten Aktion selbst zugeordnet. –