Verknüpfung von Winst-Skripten

Antworten
ake
Beiträge: 48
Registriert: 02 Dez 2009, 11:56

Verknüpfung von Winst-Skripten

Beitrag von ake »

Hallo,

gibt es eine Möglichkeit in einem Winst-Skript ein anderes aufzurufen, dieses abzuarbeiten und anschließend mit dem aufrufenden Skript fortzusetzen?

Im OPSI-Wiki wird dies für OO 3.2.x [http://www.opsi.org/opsi_wiki/Ooffice32] so vorgeschlagen:

Code: Alles auswählen

; Uninstall first
if FileExists("%ScriptPath%\delsub.ins")
	sub "%ScriptPath%\delsub.ins"
Das funktioniert so aber nicht. Ich habe nach dem Aufruf ein Stopp eingefügt und die Installation überprüft, einige Kontrollbefehle, die ich eingefügt habe, legen nahe, dass das Skript überhaupt nicht aufgerufen wurde. Setze ich aber das Paket auf uninstall, was das gleiche Skript aufruft, wird die Software sauber deinstalliert. Es liegt somit nicht am Deinstallationsskript selbst.

Ich frage mich jetzt ob der Aufruf eines anderen Skripts über "sub" überhaupt zulässig ist, im Winst-Handbuch kann ich dazu nichts finden, oder ich habe Tomaten auf den Augen.

Greetz
COMaction
Beiträge: 130
Registriert: 10 Aug 2009, 19:33

Re: Verknüpfung von Winst-Skripten

Beitrag von COMaction »

Hallo,

also ich benutze diesen aufruf auch. Und bei mir funktioniert es. Uninstall ist ein eigenständiges Skript das ja auch nur die delsub.ins aufruft.

Ich denke also, dass Du in Deiner setup.ins eventuell den Pfad wo das Produkt installiert ist nicht korrekt übergibst.

Gruß
Michael
ake
Beiträge: 48
Registriert: 02 Dez 2009, 11:56

Re: Verknüpfung von Winst-Skripten

Beitrag von ake »

Da bin ich anderer Meinung, denn der Pfad zum uninstaller steht in der delsub.ins und wie gesagt, wenn ich diese direkt aufrufe - also über "uninstall" im Web-Frontend - wird das Produkt auch deinstalliert.

Aber um es zu verdeutlichen: Ich benutze delsub.ins als Uninstall-Skript, habe somit nur zwei Skripte. Ich habe auch schon versucht die Bedingung zu entfernen und einfach stupide delsub.ins jedesmal aufzurufen, bisher ohne Effekt.
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3319
Registriert: 04 Jun 2008, 14:27

Re: Verknüpfung von Winst-Skripten

Beitrag von d.oertel »

Hi,

ein sub-script beginnt ohne Sektions-Header und kann deswegen nicht direkt aufgerufen werden.
Ein Script das ich direkt aufrufen kann, beginnt mit

Code: Alles auswählen

[Actions]
oder

Code: Alles auswählen

[Aktionen]
gruss
d.oertel
opsi support - uib gmbh

For productive opsi installations we recommend support contracts.
http://www.uib.de
http://www.opsi.org
ake
Beiträge: 48
Registriert: 02 Dez 2009, 11:56

Re: Verknüpfung von Winst-Skripten

Beitrag von ake »

Ah, das erklärt einiges:
  1. Warum es nicht funktioniert
  2. Warum ihr für OO 3.2 drei Skripte, statt zwei benutzt
Ich hab mich schon gefragt, was das soll ...

(Edit)
Es gibt also keine Möglichkeit ein Skript, dass man direkt aufrufen kann, in einem anderen (also als Sub-Skript) aufzurufen?

Danke für die Info.
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3319
Registriert: 04 Jun 2008, 14:27

Re: Verknüpfung von Winst-Skripten

Beitrag von d.oertel »

Hi,
Es gibt also keine Möglichkeit ein Skript, dass man direkt aufrufen kann, in einem anderen (also als Sub-Skript) aufzurufen?
nein
-
es sei denn man ruft per winbatch den winst32.exe neu auf - das ist aber nicht schön.

gruss
d.oertel
opsi support - uib gmbh

For productive opsi installations we recommend support contracts.
http://www.uib.de
http://www.opsi.org
ake
Beiträge: 48
Registriert: 02 Dez 2009, 11:56

Re: Verknüpfung von Winst-Skripten

Beitrag von ake »

Hallo,

jetzt wo ich den Code vor mir habe, fällt mir auf dass es ganz so nicht sein kann.
ein sub-script beginnt ohne Sektions-Header und kann deswegen nicht direkt aufgerufen werden.
Ein Script das ich direkt aufrufen kann, beginnt mit [Actions]/[Aktionen]
Das Beispiel delsub.ins, das in ooffice3.ins mit sub aufgerufen wird (Code, siehe oben), beginnt jedoch gewöhnlich:

Code: Alles auswählen

--------------------------------------------------------------------

delsub.ins

--------------------------------------------------------------------
; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib
; and published under the Terms of the General Public License.

[Initial]
; Set log level
LogLevel = 2
; Log Errors in logfile but don't abort
ExitOnError = false
; Show syntax errors in the script
ScriptErrorMessages = on
; Dont trace step by step through the script
TraceMode = off
; Started programs should run in front of the winst window
StayOnTop = false
 
[Aktionen]
; Define general vars
DefVar $SYSTEMDRIVE$
[...]
Vergleiche:

Code: Alles auswählen

ooffice3.ins

*********************************************************************; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib
; and published under the Terms of the General Public License.

[Initial]
; Set log level
LogLevel = 2
; Log Errors in logfile but don't abort
ExitOnError = false
; Show syntax errors in the script
ScriptErrorMessages = on
; Dont trace step by step through the script
TraceMode = off
; Started programs should run in front of the winst window
StayOnTop = false
 
[Aktionen]
; Define general vars
DefVar $SYSTEMDRIVE$
DefVar $SYSTEMROOT$
DefVar $TEMP$
DefVar $OS$
Genau genommen, beginnen alle drei Skripte so [http://www.opsi.org/opsi_wiki/Ooffice32].
Benutzeravatar
d.oertel
uib-Team
Beiträge: 3319
Registriert: 04 Jun 2008, 14:27

Re: Verknüpfung von Winst-Skripten

Beitrag von d.oertel »

Hi,

danke für den Hinweis - Fehler auf der Webseite.
unter delsub.ins steht nochmal das setup script.
Wird morgen behoben.

gruss
d.oertel
opsi support - uib gmbh

For productive opsi installations we recommend support contracts.
http://www.uib.de
http://www.opsi.org
Benutzeravatar
s.ehlers
uib-Team
Beiträge: 31
Registriert: 30 Okt 2009, 14:28

Re: Verknüpfung von Winst-Skripten

Beitrag von s.ehlers »

Hallo ake,

leider kann das korrigierte delsub.ins-Skript für OO3.2 auf der Website gerade nicht eingestellt werden. Daher kopiere ich es jetzt an diese Stelle

Code: Alles auswählen

; Copyright (c) uib gmbh (www.uib.de)
; This sourcecode is owned by uib
; and published under the Terms of the General Public License.

Message "Deinstalliere OpenOffice.org"

if ( $RemoveOOo2$ = "true" )
	; OOo 2.1.0
	Set $MsiCode$ ="{8FB1A5EA-7DA8-4D57-80FB-BD923CCCC852}"
	Set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
	if not ($DisplayName$ = "")
		Message "Found "+$DisplayName$+" => uninstalling first"
		Set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
		Winbatch_uninstall
		killtask "iexplore.exe"
		Files_delete_oo2
	endif
	 
	; OOo 2.2.0
	Set $MsiCode$ ="{E7DA9B23-5715-45D8-965E-E76688A2B948}"
	Set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
	if not ($DisplayName$ = "")
		Message "Found "+$DisplayName$+" => uninstalling first"
		Set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
		Winbatch_uninstall
		killtask "iexplore.exe"
		Files_delete_oo2
	endif
	
	; OOo 2.2.1
	Set $MsiCode$ ="{E4C7B3EF-B3DB-4BB6-A812-E8FAE47534D3}"
	Set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
	if not ($DisplayName$ = "")
		Message "Found "+$DisplayName$+" => uninstalling first"
		Set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
		Winbatch_uninstall
		killtask "iexplore.exe"
		Files_delete_oo2
	endif
	
	; OOo 2.3.0
	Set $MsiCode$ ="{A625D45F-1DC4-47FB-ABCF-6B27684AA717}"
	Set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
	if not ($DisplayName$ = "")
		Message "Found "+$DisplayName$+" => uninstalling first"
		Set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
		Winbatch_uninstall
		killtask "iexplore.exe"
		Files_delete_oo2
	endif
	
	; OOo 2.3.1
	Set $MsiCode$ ="{DD5B65F7-7CA5-4DE4-AEE7-7E8F26BF78F5}"
	Set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
	if not ($DisplayName$ = "")
		Message "Found "+$DisplayName$+" => uninstalling first"
		Set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
		Winbatch_uninstall
		killtask "iexplore.exe"
		Files_delete_oo2
	endif
	
	; OOo 2.4.0
	Set $MsiCode$ ="{1B14B0C3-2D60-477C-A1FE-B88E60948854}"
	Set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
	if not ($DisplayName$ = "")
		Message "Found "+$DisplayName$+" => uninstalling first"
		Set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
		Winbatch_uninstall
		killtask "iexplore.exe"
		Files_delete_oo2
	endif
	
	; OOo 2.4.1
	Set $MsiCode$ = "{CCD90636-D97D-4130-A44A-3AD4E63B9220}"
	Set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
	if not ($DisplayName$ = "")
		Message "Found "+$DisplayName$+" => uninstalling first"
		Set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
		Winbatch_uninstall
		killtask "iexplore.exe"
		Files_delete_oo2
	endif

	; ooo2.4.2
	set $MsiCode$="{50E21B3A-FF06-412D-879B-DEA30815736E}"
	set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
	if not ($DisplayName$ = "")
		Message "Found "+$DisplayName$+" => uninstalling first"
		set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
		Winbatch_uninstall
		killtask "iexplore.exe"
		Files_delete_oo2
	endif

	LinkFolder_delete_OpenOffice.org_2



endif

; OOo 3.0.9358
Set $MsiCode$ = "{04B45310-A5FE-4425-BFCA-1A6D8920DE74}"
Set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
if not ($DisplayName$ = "")
	Message "Found "+$DisplayName$+" => uninstalling first"
	Set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
	Winbatch_uninstall
	killtask "iexplore.exe"
	Files_delete_oo3
endif

; OOo 3.0.1
Set $MsiCode$ = "{7EC19307-7C22-47A8-922B-3FA965291260}"
Set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
if not ($DisplayName$ = "")
	Message "Found "+$DisplayName$+" => uninstalling first"
	Set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
	Winbatch_uninstall
	killtask "iexplore.exe"
	Files_delete_oo3
endif

; OOo 3.1
Set $MsiCode$ = "{D765F1CE-5AE5-4C47-B134-AE58AC474740}"
Set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
if not ($DisplayName$ = "")
	Message "Found "+$DisplayName$+" => uninstalling first"
	Set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
	Winbatch_uninstall
	killtask "iexplore.exe"
	Files_delete_oo3
endif

; OOo 3.2
Set $MsiCode$ = "{2217B0B4-35CB-48C6-B640-864DF2F30F99}"
Set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
if not ($DisplayName$ = "")
	Message "Found "+$DisplayName$+" => uninstalling first"
	Set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
	Winbatch_uninstall
	killtask "iexplore.exe"
	Files_delete_oo3
endif

; OOo 3.2.1
Set $MsiCode$ = "{8D1E61D1-1395-4E97-997F-D002DB3A5074}"
Set $DisplayName$ = GetRegistryStringValue ("[HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\"+$MsiCode$+"] DisplayName")
if not ($DisplayName$ = "")
	Message "Found "+$DisplayName$+" => uninstalling first"
	Set $UninstallCommand$ = "MsiExec.exe /x "+$MsiCode$+" /qb-! REBOOT=ReallySuppress"
	Winbatch_uninstall
	killtask "iexplore.exe"
	Files_delete_oo3
endif


LinkFolder_delete_OpenOffice.org_3


[WinBatch_uninstall]
$UninstallCommand$

[LinkFolder_delete_OpenOffice.org_2]
set_basefolder common_programs
delete_subfolder "OpenOffice.org 1.9.125"
delete_subfolder "OpenOffice.org2.0beta"
delete_subfolder "OpenOffice.org 2.0"
delete_subfolder "OpenOffice.org 2.1"
delete_subfolder "OpenOffice.org 2.2"
delete_subfolder "OpenOffice.org 2.3"
delete_subfolder "OpenOffice.org 2.4"

[Files_delete_oo2]
delete -sf "%ProgramFilesDir%\OpenOffice.org 2.0"
delete -sf "%ProgramFilesDir%\OpenOffice.org 2.1"
delete -sf "%ProgramFilesDir%\OpenOffice.org 2.2"
delete -sf "%ProgramFilesDir%\OpenOffice.org 2.3"
delete -sf "%ProgramFilesDir%\OpenOffice.org 2.4"

[Files_delete_oo3]
delete -sf "%ProgramFilesDir%\OpenOffice.org 3"

[LinkFolder_delete_OpenOffice.org_3]
set_basefolder common_programs
delete_subfolder "OpenOffice.org 3.0"

Mit freundlichen Grüßen,
S. Ehlers
Antworten