Table of Contents

ETU Notepad++

Versions
Versions By Robert Tauber 2015/03/13

Tested with opsi xxxxx
requiredWinstVersion >= 4.11.4.12 Robert Tauber 2015/03/13

Das Setup-File wird unter Q:\Notepad++\Notepad++\npp.#.#.#.Installer.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:\Notepad++):
Copy.exe (Für *.exe)
Notepad++\npp.#.#.#.Installer.exe

Tree (..\notepadpp):
OPSI\control
CLIENT_DATA\setup.ins
CLIENT_DATA\uninstall.ins
CLIENT_DATA\image.png

um eine userDefinedLang vorzuinstalliren z.B. Syntax Highlighting für winst
CLIENT_DATA\userDefineLang\notepad++.exe
CLIENT_DATA\userDefineLang\userDefineLang.xml

control

[Package]
version: 2015.03.13
depends: 
incremental: False

[Product]
type: localboot
id: notepadpp
name: Notepad++
description: Notepad++
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

setup.ins

[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$ = "Notepad++"
; Langer Produktname (max. 30 Zeichen)
Set $ProductNameLong$ = "Notepad++"
;-----------------------------------------------------
; 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 DeInstallation
;-----------------------------------------------------
 Set $Part$ = "setup.exe"
 if FileExists("%ProgramFiles32Dir%\Notepad++\uninstall.exe")
	 Winbatch_uninstall
	 subCheckExitCodeVLC
	 Files_uninstall
 endif
 
;-----------------------------------------------------
; Die Installation
;-----------------------------------------------------
 WinbatchInstallation
 subCheckExitCodeEXE
 DosBatch_Setings
 FilesCleanTemp
 ExitWindows /Reboot
;-----------------------------------------------------
 
;-----------------------------------------------------
; Subroutinen
;-----------------------------------------------------
[FilesCleanDir]
Delete -s $LocalDir$
 
[DosBatchMakeDir]
@echo off
mkdir $LocalDir$
 
[WinbatchInstallation]
"C:\Temp\$ProductNameShort$\Notepad++.exe" /S
 
;RT 2015.03.13: 
; Da npp derzeit nicht dazu in der lage sit ein Globales userDefineLang.xml allen usern zur verfügung zu stellen
; z.B.: das Syntax Highlighting für winst dint das als workaround
; dabei kommt ein auto it skript zum einsatz das sich als Notepad++.exe ausgibt zum einsatz
; dise fängt den Befehl ab, Kopirt wenn noch nicht vorhanden die userDefineLang.xml nach %appdata%\Notepad++
; und startet dan die umbenante Notepad+++.exe mit den ursprünglichen komandos.
[DosBatch_Setings]
ren "%ProgramFiles(x86)%\Notepad++\Notepad++.exe" "Notepad+++.exe"
COPY "%scriptpath%\userDefineLang\*.*" "%ProgramFiles(x86)%\Notepad++\"
 
 
 
[Winbatch_uninstall]
"%ProgramFiles32Dir%\Notepad++\uninstall.exe" /S
 
[Files_uninstall]
delete -sf "%ProgramFiles32Dir%\Notepad++\"
 
;-----------------------------------------------------
; 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

uninstall.ins

[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$ = "Notepad++"
; Langer Produktname (max. 30 Zeichen)
Set $ProductNameLong$ = "Notepad++"
;-----------------------------------------------------
; 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"
 if FileExists("%ProgramFiles32Dir%\VideoLAN\vlc\uninstall.exe")
	 Winbatch_uninstall
	 subCheckExitCodeVLC
	 Files_uninstall
 endif
 Winbatch_uninstall
 subCheckExitCodeEXE
 FilesCleanTemp
 Files_uninstall
 ExitWindows /Reboot
;-----------------------------------------------------
 
;-----------------------------------------------------
; Subroutinen
;-----------------------------------------------------
[FilesCleanDir]
Delete -s $LocalDir$
 
[DosBatchMakeDir]
@echo off
mkdir $LocalDir$
 
[Winbatch_uninstall]
"%ProgramFiles32Dir%\Notepad++\uninstall.exe" /S
 
[Files_uninstall]
delete -sf "%ProgramFiles32Dir%\Notepad++\"
 
 
;-----------------------------------------------------
; 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

notepad++.exe / notepad++.au3

#include <Array.au3>
 
;=== Befehle aufbereiten ===
;RT 2015.03.13: 
;  Ziel ist es die aufruf parameter korekt weiter zu geben
$pfad = @ScriptDir
$name = "notepad+++.exe"
$cmp = _ArrayToString($CmdLine, " ",1)
$prog = '"' & $pfad & "\" & $name & '" ' & $cmp
;RT 2015.03.13: Zur kontrolle
;MsgBox(1,"",$prog)
 
 
;=== Zusatz Aktionen ===
;RT 2015.03.13:
;  Was Soll Pasiren befor das Programm aufgerufen wird
; == Kopiren ==
;RT 2015.03.13: Quelle und Ziel definiren
$file = "userDefineLang.xml"
$quelle = @ScriptDir & "\" & $file
$ziel = @AppDataDir & "\Notepad++\" & $file
 
;RT 2015.03.13: Prüfen ob Quelle ok und Ziel nochnicht vorhanden
if FileExists($quelle) and not FileExists($ziel) then
   ;RT 2015.03.13: Zur kontrolle
   ;MsgBox(1,"",$quelle & " ==> " & $ziel)
   FileCopy ($quelle,$ziel,8) & @error)
EndIf
 
run ($prog)
;RT 2015.03.13: Zur kontrolle
;MsgBox(1,"",$prog)