Seite 1 von 1
Verknüpfung von Winst-Skripten
Verfasst: 26 Aug 2010, 09:25
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
Re: Verknüpfung von Winst-Skripten
Verfasst: 26 Aug 2010, 10:12
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
Re: Verknüpfung von Winst-Skripten
Verfasst: 26 Aug 2010, 10:58
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.
Re: Verknüpfung von Winst-Skripten
Verfasst: 26 Aug 2010, 11:13
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
oder
gruss
d.oertel
Re: Verknüpfung von Winst-Skripten
Verfasst: 26 Aug 2010, 11:28
von ake
Ah, das erklärt einiges:
- Warum es nicht funktioniert
- 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.
Re: Verknüpfung von Winst-Skripten
Verfasst: 26 Aug 2010, 12:14
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
Re: Verknüpfung von Winst-Skripten
Verfasst: 26 Aug 2010, 14:43
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].
Re: Verknüpfung von Winst-Skripten
Verfasst: 26 Aug 2010, 18:01
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
Re: Verknüpfung von Winst-Skripten
Verfasst: 27 Aug 2010, 14:39
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