How to set a global environment variable von Inno Setup-installer?
Wie setze ich eine Globale Umgebungsvariable im Inno Setup?
Hintergrund: ich bin mit dem Inno-Installationshilfsprogramm aus, und need to set a global environment variable bevor ich mit der eigentlichen Installation.
InformationsquelleAutor ees | 2014-08-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Versuchen Sie dies:
Müssen Sie möglicherweise dieses:
Alternativ versuchen:
Referenz: Inno Setup-Häufig Gestellte Fragen - Setzen Von Environment-Variablen
Wenn die variable ändern, wird nicht weitergegeben (siehe Die Environment-variable nicht erkannt [nicht verfügbar] für die [Run] - Programme, die in Inno Setup)
Mehr details:
Inno-Setup: Einstellung einer System-Umgebungsvariablen
PrepareToInstall
Veranstaltung. Für das, was Sie brauchen, um dieses zu ändern ? Ich Frage deshalb, weil Prozesse Erben die environment-variable blockiert, wenn Sie also z.B. einige Umgebungsvariablen durch dieSetEnvironmentVariable
Funktion, Prozess, ausgeführt von Inno Setup würde sehen, dass ändern. Aber eine solche änderung würde nicht persistent sein. Auf der anderen Seite ändern Sie können die Variablen, die hartnäckig in der registry (und Optional call myRefreshEnvironment
Verfahren, das wird Benachrichtigen Laufenden apps über die Umwelt zu ändern).Hier ist die ganze schmutzige Geschichte: Einige der inno-panels erhalten Sie Informationen vom Benutzer. Basierend auf dieser info, die ich brauchen kann, um eine Umgebungsvariable gesetzt werden. Dann versuche ich, einen Prozess zu starten, wird nicht ausgeführt, wenn die Umgebungsvariable gesetzt ist. All dies, bevor Sie die Installation. Alles scheint zu funktionieren außer der Einstellung der var. (Wenn ich die var mit der hand vor dem ausführen der Installation, alles funktioniert einwandfrei.)
Mehr hintergrund: Wir machen unser eigenes Genehmigungssystem, und was ich versuche zu tun ist, stellen Sie sicher, Sie haben Ihre Lizenz korrekt, so dass die installation kann Ihnen helfen, wenn Sie Probleme haben.
Ich habe auch versucht, RegWriteDWordValue(HKEY_CURRENT_USER,'name','value',1); gefolgt von der RefreshEnvironment nennen.
Oh, guter Punkt. Dann habe ich denke, meine Frage wurde oben beantwortet.
InformationsquelleAutor Adrian
Was wäre falsch mit dem Betrieb von zwei setup.exe mit dem ersten tut, die Einstellung der environment-Variablen, und die zweite, die Dinge tun, die notwendig für die true setup. Die erste wäre eine Ausführung mit setup.exe /VERYSILENT
Bin ich dabei hinzufügen, um eine systemweite Umgebungsvariable:
ChangesEnvironment
nicht sagen, nichts zu Windows Explorer. Es überträgt dieWM_SETTINGCHANGE
Nachricht an alle Fenster der obersten Ebene (mitlParam == "Environment"
).InformationsquelleAutor Dr.YSG
Lösungen in @Adrian ' s Antwort (tatsächlich, kopiert von @TLama Antwort auf ähnliche Frage) richtig sind für viele Situationen.
Aber es funktioniert nicht für
[Run]
Aufgaben mitrunasoriginaluser
- flag (was impliziertpostinstall-Skript
- flag). I. e. die variable wird nicht weitergegeben werden, um eine Anwendung laufen mit gemeinsamen "aus Meinem Programm" Kontrollkästchen auf der "Fertige" Seite.Der Grund dafür ist, dass die Aufgaben mit
runasoriginaluser
werden ausgeführt, indem ein un-erhöhte ausgeblendeten übergeordneten Prozess des Inno-Setup-installer. DieSetEnvironmentVariable
wird die Umgebung ändern, die für den installer, nicht aber für den übergeordneten Prozess. Leider ist der übergeordnete Prozess, der installer kann nicht gesteuert werden (imo).Als workaround, um die variable für die
runasoriginaluser
Aufgaben, die Sie haben zu injizieren, eine intermediate-Prozess zwischen den installer parent-Prozess und die Aufgabe, und haben den intermediate-Prozess die variable setzen.Solchen intermediate-Prozess kann leicht das
cmd.exe
mit seinenset
- Befehl:Den
runhidden
- flag blendet diecmd.exe
Konsole-Fenster, nicht die Anwendung (vorausgesetzt, es ist eine GUI-Anwendung). Wenn es eine Konsole-Anwendung, verwenden Siestart
zu starten, es in seiner eigenen (sichtbaren) console-Fenster.InformationsquelleAutor Martin Prikryl