include_append / include_insert Registry-Sektion

Antworten
Mike1987
Beiträge: 177
Registriert: 08 Dez 2010, 08:30

include_append / include_insert Registry-Sektion

Beitrag von Mike1987 »

Ich bin gerade auf die Möglichkeit gestoßen, Sektionen in Dateien auszulagern um sie dann, bei Bedarf, einzubinden.
Das Funktioniert mit folgender Sektion auch super:

Code: Alles auswählen

Message "Starten / Neustarten der Druckerwarteschlange..."
                comment "Start setup program"
                comment "Setze Rechte zum Ausführen von Powershell-Scripten"
                Message "Setze Rechte zum Ausführen von Powershell-Scripten"
                include_append "%SCRIPTPATH%\lib\service_reboot.opsiinc"
                Registry_Executionpolicy_Allow /64Bit
                Winbatch_install
                Registry_Executionpolicy_Restrict /64Bit
                Sub_check_exitcode
service_reboot.opsiinc

Code: Alles auswählen

[Winbatch_install]
C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File "%SCRIPTPATH%\Spooler_neustart.ps1"

Eigentlich wollte ich aber den Part, wo ich Registrykeys setze in die opsiinc auslagern. Dabei bekomme ich aber nur Probleme.
Liegt es daran, dass ich die Sektion mit der Registry mit dem Parameter /64Bit aufrzufe? Oder ist es nur möglich die Winbatch_install Sektionen so auszulagern?

Vielen Dank für Eure Hilfe :)
holgerv
Beiträge: 288
Registriert: 20 Aug 2012, 09:35

Re: include_append / include_insert Registry-Sektion

Beitrag von holgerv »

Hallo,

ich rufe zahlreiche Registry-Sektionen aus Skript-Dateien auf, die per include eingebunden sind. Das ist erstmal kein Problem. Als Schalter übergebe ich nicht "/64bit" sondern "/sysnative", allerdings auf 64-Bit-Systemen, insofern sollte das auf das Gleiche hinauslaufen.
Dabei bekomme ich aber nur Probleme.
Was heißt das denn? Was gibt es für Probleme?

Schönen Gruß


Holger
Mike1987
Beiträge: 177
Registriert: 08 Dez 2010, 08:30

Re: include_append / include_insert Registry-Sektion

Beitrag von Mike1987 »

Hallo Holger,

danke erstmal für deine Antwort! Also bei mir das wie folgt aus:

setup.ins

Code: Alles auswählen

 if ($INST_SystemType$ = "64 Bit System") and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only"))
                Message "Starten / Neustarten der Druckerwarteschlange..."
                comment "Setze Rechte zum Ausführen von Powershell-Scripten"
                Message "Setze Rechte zum Ausführen von Powershell-Scripten"
                include_append "%SCRIPTPATH%\lib\ps_allow.opsiinc"
                include_append "%SCRIPTPATH%\lib\ps_deny.opsiinc"
                Registry_Executionpolicy_Allow /64Bit
                Winbatch_install
                Registry_Executionpolicy_Restrict /64Bit
                Sub_check_exitcode
        endif
        
        [Winbatch_install]
	C:\Windows\System32\WindowsPowerShell\v1.0\powershell.exe -File "%SCRIPTPATH%\Spooler_neustart.ps1"

Die beiden Dateien die ich einbinde sehen wie folgt aus:
ps_allow.opsiinc

Code: Alles auswählen

[Registry_Executionpolicy_Allow]
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell]
set "ExecutionPolicy"  = REG_SZ:"Unrestricted"
ps_deny.opsiinc

Code: Alles auswählen

[Registry_Executionpolicy_Restrict]
openkey [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell]
set "ExecutionPolicy"  = REG_SZ:"Restricted"
Wenn ich das Programm nun so durchlaufen lasse auf dem Client bekomme ich folgende Fehlermeldungen:

Code: Alles auswählen

Section   Registry_Executionpolicy_Allow (Command in line 124):
comment
 Operation nicht definiert

Code: Alles auswählen

Section   Registry_Executionpolicy_Allow (Command in line 125):
Message
 Operation nicht definiert

Code: Alles auswählen

Section   Actions (Command in line 74):
EndIf
expected


Den Fehler if-Anweisung kann ich definitiv ausschließen...da alles sauber durchläuft wenn ich alles in der setup.ins durchführen lasse.

Die "Operation nicht definiert" scheint mir so, als wenn der Probleme beim Ausführen der eingebundenen Sektion hat.

Im Log steht dann folgendes:

Code: Alles auswählen

 If
(122)     [5] [Mrz 29 09:56:31:414] [fix_druckerwarteschlange]     $INST_SystemType$ = "64 Bit System"   <<< result true
(123)     [5] [Mrz 29 09:56:31:414] [fix_druckerwarteschlange]     $INST_architecture$ = "system specific"   <<< result true
(124)     [5] [Mrz 29 09:56:31:414] [fix_druckerwarteschlange]     $INST_architecture$ = "both"   <<< result false
(125)     [5] [Mrz 29 09:56:31:414] [fix_druckerwarteschlange]     $INST_architecture$ = "64 only"   <<< result false
(126)     [5] [Mrz 29 09:56:31:414] [fix_druckerwarteschlange]     ($INST_architecture$ = "64 only")   <<< result false
(127)     [5] [Mrz 29 09:56:31:414] [fix_druckerwarteschlange]     ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only")   <<< result false
(128)     [5] [Mrz 29 09:56:31:414] [fix_druckerwarteschlange]     ($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only")   <<< result true
(129)     [5] [Mrz 29 09:56:31:414] [fix_druckerwarteschlange]     (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only"))   <<< result true
(130)     [5] [Mrz 29 09:56:31:414] [fix_druckerwarteschlange]     ($INST_SystemType$ = "64 Bit System") and (($INST_architecture$ = "system specific") or ($INST_architecture$ = "both") or ($INST_architecture$ = "64 only"))   <<< result true
(131)     [6] [Mrz 29 09:56:31:414] [fix_druckerwarteschlange]   Then
(132)     [5] [Mrz 29 09:56:31:414] [fix_druckerwarteschlange]     message Starten / Neustarten der Druckerwarteschlange...
(133)     [5] [Mrz 29 09:56:31:416] [fix_druckerwarteschlange]     comment: Start setup program
(134)     [5] [Mrz 29 09:56:31:416] [fix_druckerwarteschlange]     comment: Setze Rechte zum Ausführen von Powershell-Scripten
(135)     [5] [Mrz 29 09:56:31:416] [fix_druckerwarteschlange]     message Setze Rechte zum Ausführen von Powershell-Scripten
(136)     [6] [Mrz 29 09:56:31:424] [fix_druckerwarteschlange]     Included (append) file: p:\fix_druckerwarteschlange\lib\ps_allow.opsiinc with encoding: cp1252
(137)     [6] [Mrz 29 09:56:31:431] [fix_druckerwarteschlange]     Included (append) file: p:\fix_druckerwarteschlange\lib\ps_deny.opsiinc with encoding: cp1252
(138)     [5] [Mrz 29 09:56:31:432] [fix_druckerwarteschlange]     
(139)     [5] [Mrz 29 09:56:31:432] [fix_druckerwarteschlange]     Execution of Registry_Executionpolicy_Allow
(140)     [6] [Mrz 29 09:56:31:432] [fix_druckerwarteschlange]       Registry key [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\ShellIds\Microsoft.PowerShell]  opened
(141)     [6] [Mrz 29 09:56:31:432] [fix_druckerwarteschlange]                 Variable "ExecutionPolicy"  had value  "Restricted"
(142)     [6] [Mrz 29 09:56:31:432] [fix_druckerwarteschlange]                 Info:    "ExecutionPolicy"  changed to "Unrestricted"
(143)     [2] [Mrz 29 09:56:31:432] [fix_druckerwarteschlange]                 Syntax Error in Section: Registry_Executionpolicy_Allow (Command in line 124 origin: p:\fix_druckerwarteschlange\lib\ps_deny.opsiinc Line: 1): comment ->  Operation nicht definiert
(144)     [2] [Mrz 29 09:56:58:168] [fix_druckerwarteschlange]                 Syntax Error in Section: Registry_Executionpolicy_Allow (Command in line 125 origin: p:\fix_druckerwarteschlange\lib\ps_deny.opsiinc Line: 2): Message ->  Operation nicht definiert
(145)     [6] [Mrz 29 09:57:21:418] [fix_druckerwarteschlange]                 Key closed
(146)     [2] [Mrz 29 09:57:21:421] [fix_druckerwarteschlange]     Syntax Error in Section: Actions (Command in line 74 origin: p:\fix_druckerwarteschlange\setup.ins line: 75): EndIf -> expected
(147)     [1] [Mrz 29 09:57:30:656] [fix_druckerwarteschlange] ___________________
(148)     [1] [Mrz 29 09:57:30:656] [fix_druckerwarteschlange] script finished
andré
Beiträge: 324
Registriert: 07 Jan 2014, 10:48

Re: include_append / include_insert Registry-Sektion

Beitrag von andré »

Sowas ähnliches gibt es bei einem Paket von mir, das Drucker installiert. Ich habe eine setup.ins, die ein Sub auf weitere Konfigurationsskripte setzt. In diesen Konfigurationen habe ich Winbatch-Sektionen, die ich auch nur dort aufrufe. Damit das funktioniert, müssen diese Sektionen aber auch in der setup.ins definiert sein, dazu gab es irgendwo einen Thread hier im Forum, den ich dazu gefunden hatte.
holgerv
Beiträge: 288
Registriert: 20 Aug 2012, 09:35

Re: include_append / include_insert Registry-Sektion

Beitrag von holgerv »

Wenn ich die Log-Datei richtig verstehe, wird der Registry-Wert korrekt geändert ('Info: "ExecutionPolicy" changed to "Unrestricted"') und erst danach treten zunächst zwei Fehler auf:
'comment -> Operation nicht definiert'
'Message -> Operation nicht definiert'

Das sieht für mich so aus, als wären Deine "ps_*.opsiinc"-Skripte hier nicht vollständig wiedergegeben. Hast Du "comment"- bzw. "Message"-Befehle in der "Registry"-Sektion? Die dürfen da nicht stehen und führen zu genau diesem Fehler.

Dann kommt noch ein Fehler 'EndIf -> expected'. Der ist eigentlich selbsterklärend. Kontrollier einfach noch einmal, ob alle Ifs und EndIfs richtig gesetzt sind.

Viel Erfolg


Holger
Antworten