Wie setzt man Umgebungsvariablen in einer WinBatch-Sektion?

Antworten
Benutzeravatar
embl-structures
Beiträge: 327
Registriert: 13 Jan 2010, 18:41
Wohnort: Heidelberg
Kontaktdaten:

Wie setzt man Umgebungsvariablen in einer WinBatch-Sektion?

Beitrag von embl-structures »

Hallo,

bei der Installation z.B. von Firefox (%SCRIPTPATH%\files\FirefoxSetup.exe /S resp. -ms) bringt Windows immer eine "Open File - Security Warning"-Meldung, die man annahmen oder auch ablehnen kann. Gemaess http://support.microsoft.com/?id=889815 kann man temporaer die Umgebungsvariable SEE_MASK_NOZONECHECKS auf "1" stellen. OPSI stellt aber m.W. keine Funktion zur Verfuegung, eine Umgebungsvariable zu setzen. In DOSBatch-Sektion geht das, aber der Benutzer sieht dann die DOSShell, was vermeiden moechte:

Code: Alles auswählen

[DOSBatch_install]
SET SEE_MASK_NOZONECHECKS=1
%SCRIPTPATH%\files\FirefoxSetup.exe /S
Sie kann ich dasselbe Verhalten in einer WinBatch-Sektion erreichen? Die Variable SEE_MASK_NOZONECHECKS oder %SEE_MASK_NOZONECHECKS% als Winst-Variablen zu setzen habe ich bereits probiert, aber das funktioniert nicht.

Gruss & Danke
frank
Benutzeravatar
embl-structures
Beiträge: 327
Registriert: 13 Jan 2010, 18:41
Wohnort: Heidelberg
Kontaktdaten:

Re: Wie setzt man Umgebungsvariablen in einer WinBatch-Sektion?

Beitrag von embl-structures »

Ich habe im Topic viewtopic.php?f=7&t=1675 die Frage mal von der anderen Seite aufgezaeumt. Vielleicht gibt es da etwas mehr Ideen :-)

frank
jkan
Beiträge: 17
Registriert: 13 Sep 2010, 15:06

Re: Wie setzt man Umgebungsvariablen in einer WinBatch-Sekti

Beitrag von jkan »

Wenn es noch jemanden interessieren sollte: Meine Lösung für dieses Problem besteht darin, die Befehle in einer minimierten Eingabeaufforderung laufen zu lassen (DosInAnIcon). Ich hatte noch das Problem, dass der Exit-Code von der DosInAnIcon-Implementierung nicht ausgewertet wird, ich ihn aber dringend benötige (ein Verlassen der Batch-Datei mit

Code: Alles auswählen

exit /b %errorlevel%
am Ende hat nichts gebracht). Ich habe es so gelöst, dass ich im Batch-Abschnitt den aktuellen Exit-Code ausgebe und die Ausgabe in winst wieder auswerte. Nicht sehr elegant, aber es funktioniert.

Das folgende Script dient als Wrapper für ein VBS-Installationsscript, wobei die Produkt-Properties in Form von Umgebungsvariablen an das Script übergeben werden:

Code: Alles auswählen

[Initial]
Message=Installiere Adobe Photoshop Elements 9
LogLevel=2
ExitOnError=false
ScriptErrorMessages=on
TraceMode=off
StayOnTop=false
 
[Aktionen]
DefVar $Product$
DefVar $InstLogfile$
DefVar $DisplayName$
DefVar $LicenceKey$
DefVar $DisableFileAgent$
DefVar $ExitCode$
DefVar $ExitCodeLine$
DefStringList $Output$

Set $InstLogfile$ = "%SYSTEMDRIVE%\tmp\pselements9_install_log.txt"
Set $LicenceKey$ = GetProductProperty("licencekey", "")
Set $DisableFileAgent$ = GetProductProperty("disablefileagent", "true")


Set $Output$ = getOutStreamFromSection('DosInAnIcon_Install')
Set $ExitCodeLine$ = takeFirstStringContaining($Output$, "son:ExitCode=")
Set $ExitCode$ = TakeString(1, SplitString($ExitCodeLine$, "="))

if not ($ExitCode$ = "0")
   LogError "Script failed with exit code " + $ExitCode$
   isFatalError
endif

[DosInAnIcon_Install]
@echo off
set son:Serialnumber=$LicenceKey$
set son:DisableFileAgent=$DisableFileAgent$
cscript.exe /NoLogo "%SCRIPTPATH%\install.vbs"
echo son:ExitCode=%errorlevel%
Antworten