This is an old revision of the document!
Versions
Versions
By Robert Tauber 2014/12/08
Tested with opsi xxxxx
requiredWinstVersion >= 4.11.4.12 Robert Tauber 2014/12/08
Das Setup-File wird unter Q:\Adobe Reader\Adobe Reader\AdbeRdr#####_de_DE.exe bereit gestellt (den Speicher Ort des Netzlaufwerks Q: bestimmt die map_Q.exe ..\opt_pcbin\install\!drivemap\map_Q.exe)
Tree (..\opt_pcbin\install\!drivemap):
map_Q.exe
Tree (Q:\Adobe Reader):
Copy.exe
Adobe Reader\AdbeRdr#####_de_DE.exe ⇒ http://get.adobe.com/de/reader/enterprise/
Tree (..\Adobe Reader):
OPSI\control
CLIENT_DATA\setup.ins
CLIENT_DATA\uninstall.ins
CLIENT_DATA\image.png
[Package] version: 2014.12.08 depends: incremental: False [Product] type: localboot id: adobe-reader name: Adobe Reader (WIN XP / WIN 7) description: Dokumentenbetrachter fuer PDF-Dateien advice: packed by Robert Tauber version: 0 priority: 0 licenseRequired: False productClasses: setupScript: setup.ins uninstallScript: uninstall.ins updateScript: alwaysScript: onceScript: customScript: userLoginScript: [ProductDependency] action: setup requiredProduct: cleanup requiredAction: setup requirementType: after [ProductDependency] action: uninstall requiredProduct: cleanup requiredAction: setup requirementType: after
Kopieren und Umbenennen
Später ermitteln der Version Nummer
#include <File.au3> #include <Array.au3> Local $sPath = @ScriptDir Local $aPath = StringSplit( @ScriptDir, "\" ) Local $sPathTo = "C:\Temp\" & $aPath[$aPath[0]] local $extention = ".exe" ;_ArrayDisplay($sFolderList, "$Folderolder") ;MsgBox ( 1, "Zeil Pfad", $sPathTo ) DirRemove ( $sPathTo , 1 ) Local $sFolderList = _FileListToArray($sPath , "*" , 2 ) local $i = 0 For $i = 1 to $sFolderList[0] Local $sFileList = _FileListToArray($sPath & "\" & $sFolderList[$i] , "*" & $extention , 1 ) if $sFileList <> 0 Then if $sFileList[0] = 1 Then ;_ArrayDisplay($sFileList, "$sFileList") $sFrom = $sPath & "\" & $sFolderList[$i] & "\" & $sFileList[$sFileList[0]] $sTo = $sPathTo & "\" & $sFolderList[$i] & $extention FileCopy ( $sFrom, $sTo, 9 ) ;DirRemove ( $sFrom ,1 ) ;MsgBox ( 1, "OK", $sFrom & " => " & $sTo & " " & @error ) Else MsgBox ( 1, "ERROR", "Mehr als ein Subfolder in: " & $sPath & "\" & $sFolderList[$i] ) _ArrayDisplay($sFileList, "$sFileList") EndIf Else ;MsgBox ( 1, "No Subfolders in: ", $sPath & "\" & $sFolderList[$i] ) endif Next Exit
; Robert Tauber 2014
[Actions]
requiredWinstVersion >= "4.10.5"
setLogLevel = 5
StayOnTop = on
DefVar $ProductId$
DefVar $ProductNameShort$
DefVar $ProductNameLong$
DefVar $LocalDir$
DefVar $ExitCode$
DefVar $Part$
DefVar $ValidOS$
Set $ValidOS$ = "false"
;-----------------------------------------------------
; Angaben zum Produkt
;-----------------------------------------------------
; Kurzer Produktname (max. 12 Zeichen)
Set $ProductNameShort$ = "Adobe Reader"
; Langer Produktname (max. 30 Zeichen)
Set $ProductNameLong$ = "Adobe Reader"
;-----------------------------------------------------
; Gewünschtes Betriebssystem (alle ungültigen auskommentieren)
; subCheckForWinXP-32 ; Windows XP 32-bit
; subCheckForVista-32 ; Windows Vista 32-bit
; subCheckForVista-64 ; Windows Vista 64-bit
; subCheckForSeven-32 ; Windows 7 32-bit
subCheckForSeven-64 ; Windows 7 64-bit
;-----------------------------------------------------
;-----------------------------------------------------
; Muss normalerweise nicht geändert werden
;-----------------------------------------------------
; Bildchen und Statusmeldung
ShowBitmap "%ScriptPath%\image.png" $ProductNameShort$
Message "Installiere " + $ProductNameLong$ + "..."
; Lokalen Pfad erzeugen
Set $ProductId$ = "%installingProduct%"
if $ProductId$ = ""
Set $ProductId$ = "local_testing"
endif
Set $LocalDir$ = "%SystemDrive%\files\" + $ProductId$
; Prüfen, ob gültiges Betriebssystem
if $ValidOS$ = "false"
LogError "Dieses Betriebssystem (" + GetNtVersion + " " + GetSystemType + ") wird von diesem Produkt (" + $ProductId$ + ") nicht unterstützt!"
isFatalError
endif
;-----------------------------------------------------
; Daten vorbereiten
;-----------------------------------------------------
FilesCleanDir
DosBatchMakeDir
;-----------------------------------------------------
; Netzlaufwerk verbinden/Copy
;-----------------------------------------------------
DosInAnIcon_Q
DosInAnIcon_Copy
;-----------------------------------------------------
; Die Installation
;-----------------------------------------------------
WinbatchInstallation
subCheckExitCodeEXE
FilesCleanTemp
ExitWindows /Reboot
;-----------------------------------------------------
;-----------------------------------------------------
; Subroutinen
;-----------------------------------------------------
[FilesCleanDir]
Delete -s $LocalDir$
[DosBatchMakeDir]
@echo off
mkdir $LocalDir$
[WinbatchInstallation]
"C:\Temp\$ProductNameShort$\AdobeReader.exe" /sPB ;/sAll
;-----------------------------------------------------
; Netzlaufwerk verbinden/Copy
;-----------------------------------------------------
[DosInAnIcon_Q]
"p:\!drivemap\map_Q.exe"
[DosInAnIcon_Copy]
"Q:\$ProductNameShort$\Copy.exe"
[FilesCleanTemp]
Delete -s "%SystemDrive%\Temp\$ProductNameShort$"
;-----------------------------------------------------
; Subroutinen zur Überprüfung der ExitCodes
; Je nach Installer verschieden
;-----------------------------------------------------
;
; Windows Installer: subCheckExitCodeMSI
; 0 = Erfolgreich
; 3010 = Bitte Neustart
; Diverse EXE-Dateien: subCheckExitCodeEXE
; 0 = Erfolgreich
;-----------------------------------------------------
[subCheckExitCodeMSI]
Set $ExitCode$ = getLastExitCode
; Abbruch bei Fehler
if not (($ExitCode$ = "0") or ($ExitCode$ = "3010"))
LogError "Fehler bei der Installation von " + $ProductNameLong$ + " (" + $Part$ + "): ExitCode " + $ExitCode$
isFatalError
endif
comment "Erfolgreiche Installation von " + $ProductNameLong$ + " (" + $Part$ + "): ExitCode " + $ExitCode$
; Neustart, falls gewünscht
if $ExitCode$ = "3010"
set $Reboot$ = "true"
endif
[subCheckExitCodeEXE]
Set $ExitCode$ = getLastExitCode
; Abbruch bei Fehler
if not ($ExitCode$ = "0")
LogError "Fehler bei der Installation von " + $ProductNameLong$ + " (" + $Part$ + "): ExitCode " + $ExitCode$
isFatalError
endif
comment "Erfolgreiche Installation von " + $ProductNameLong$ + " (" + $Part$ + "): ExitCode " + $ExitCode$
[subReboot]
if $Reboot$ = "true"
ExitWindows /Reboot
endif
;-----------------------------------------------------
; Subroutinen zur Überprüfung der Windows-Version
;-----------------------------------------------------
[subCheckForWinXP-32]
if GetMsVersionInfo = "5.1" AND GetSystemType = "x86 System"
Set $ValidOS$ = "true"
endif
[subCheckForVista-32]
if GetMsVersionInfo = "6.0" AND GetSystemType = "x86 System"
Set $ValidOS$ = "true"
endif
[subCheckForVista-64]
if GetMsVersionInfo = "6.0" AND GetSystemType = "64 bit System"
Set $ValidOS$ = "true"
endif
[subCheckForSeven-32]
if GetMsVersionInfo = "6.1" AND GetSystemType = "x86 System"
Set $ValidOS$ = "true"
endif
[subCheckForSeven-64]
if GetMsVersionInfo = "6.1" AND GetSystemType = "64 bit System"
Set $ValidOS$ = "true"
endif
; Robert Tauber 2014
[Actions]
requiredWinstVersion >= "4.10.5"
setLogLevel = 5
StayOnTop = on
DefVar $ProductId$
DefVar $ProductNameShort$
DefVar $ProductNameLong$
DefVar $LocalDir$
DefVar $ExitCode$
DefVar $Part$
DefVar $ValidOS$
Set $ValidOS$ = "false"
;-----------------------------------------------------
; Angaben zum Produkt
;-----------------------------------------------------
; Kurzer Produktname (max. 12 Zeichen)
Set $ProductNameShort$ = "Adobe Reader"
; Langer Produktname (max. 30 Zeichen)
Set $ProductNameLong$ = "Adobe Reader"
;-----------------------------------------------------
; Gewünschtes Betriebssystem (alle ungültigen auskommentieren)
; subCheckForWinXP-32 ; Windows XP 32-bit
; subCheckForVista-32 ; Windows Vista 32-bit
; subCheckForVista-64 ; Windows Vista 64-bit
; subCheckForSeven-32 ; Windows 7 32-bit
subCheckForSeven-64 ; Windows 7 64-bit
;-----------------------------------------------------
;-----------------------------------------------------
; Muss normalerweise nicht geändert werden
;-----------------------------------------------------
; Bildchen und Statusmeldung
ShowBitmap "%ScriptPath%\image.png" $ProductNameShort$
Message "Deinstalliere " + $ProductNameLong$ + "..."
; Lokalen Pfad erzeugen
Set $ProductId$ = "%installingProduct%"
if $ProductId$ = ""
Set $ProductId$ = "local_testing"
endif
Set $LocalDir$ = "%SystemDrive%\files\" + $ProductId$
; Prüfen, ob gültiges Betriebssystem
if $ValidOS$ = "false"
LogError "Dieses Betriebssystem (" + GetNtVersion + " " + GetSystemType + ") wird von diesem Produkt (" + $ProductId$ + ") nicht unterstützt!"
isFatalError
endif
;-----------------------------------------------------
; Daten vorbereiten
;-----------------------------------------------------
FilesCleanDir
DosBatchMakeDir
;-----------------------------------------------------
; Netzlaufwerk verbinden/Copy
;-----------------------------------------------------
DosInAnIcon_Q
DosInAnIcon_Copy
;-----------------------------------------------------
; Die DeInstallation
;-----------------------------------------------------
Set $Part$ = "setup.exe"
DosBatchUnInstallation
subCheckExitCodeEXE
FilesCleanTemp
ExitWindows /Reboot
;-----------------------------------------------------
;-----------------------------------------------------
; Subroutinen
;-----------------------------------------------------
[FilesCleanDir]
Delete -s $LocalDir$
[DosBatchMakeDir]
@echo off
mkdir $LocalDir$
[DosBatchUnInstallation]
@echo off
MsiExec.exe /qn /X {AC76BA86-7AD7-1031-7B44-AB0000000001}
;-----------------------------------------------------
; Netzlaufwerk verbinden/Copy
;-----------------------------------------------------
[DosInAnIcon_Q]
"p:\!drivemap\map_Q.exe"
[DosInAnIcon_Copy]
"Q:\$ProductNameShort$\Copy.exe"
[FilesCleanTemp]
Delete -s "%SystemDrive%\Temp\$ProductNameShort$"
;-----------------------------------------------------
; Subroutinen zur Überprüfung der ExitCodes
; Je nach Installer verschieden
;-----------------------------------------------------
;
; Windows Installer: subCheckExitCodeMSI
; 0 = Erfolgreich
; 3010 = Bitte Neustart
; Diverse EXE-Dateien: subCheckExitCodeEXE
; 0 = Erfolgreich
;-----------------------------------------------------
[subCheckExitCodeMSI]
Set $ExitCode$ = getLastExitCode
; Abbruch bei Fehler
if not (($ExitCode$ = "0") or ($ExitCode$ = "3010"))
LogError "Fehler bei der Installation von " + $ProductNameLong$ + " (" + $Part$ + "): ExitCode " + $ExitCode$
isFatalError
endif
comment "Erfolgreiche Installation von " + $ProductNameLong$ + " (" + $Part$ + "): ExitCode " + $ExitCode$
; Neustart, falls gewünscht
if $ExitCode$ = "3010"
set $Reboot$ = "true"
endif
[subCheckExitCodeEXE]
Set $ExitCode$ = getLastExitCode
; Abbruch bei Fehler
if not ($ExitCode$ = "0")
LogError "Fehler bei der Installation von " + $ProductNameLong$ + " (" + $Part$ + "): ExitCode " + $ExitCode$
isFatalError
endif
comment "Erfolgreiche Installation von " + $ProductNameLong$ + " (" + $Part$ + "): ExitCode " + $ExitCode$
[subReboot]
if $Reboot$ = "true"
ExitWindows /Reboot
endif
;-----------------------------------------------------
; Subroutinen zur Überprüfung der Windows-Version
;-----------------------------------------------------
[subCheckForWinXP-32]
if GetMsVersionInfo = "5.1" AND GetSystemType = "x86 System"
Set $ValidOS$ = "true"
endif
[subCheckForVista-32]
if GetMsVersionInfo = "6.0" AND GetSystemType = "x86 System"
Set $ValidOS$ = "true"
endif
[subCheckForVista-64]
if GetMsVersionInfo = "6.0" AND GetSystemType = "64 bit System"
Set $ValidOS$ = "true"
endif
[subCheckForSeven-32]
if GetMsVersionInfo = "6.1" AND GetSystemType = "x86 System"
Set $ValidOS$ = "true"
endif
[subCheckForSeven-64]
if GetMsVersionInfo = "6.1" AND GetSystemType = "64 bit System"
Set $ValidOS$ = "true"
endif