|
# Deutsche NSIS Installer Vorlage
# mit Programmdatei, Icon, Doku, Desktop- und Startmenülink
#
# "easy to use": Einfach die Konstanten ersetzen
# und mit NSIS (getestet mit v2.4.6) kompilieren, fertig!
#
# 04.02.2012, P.Lorenz
#
# Quelle fuer Installer
!define MAKEROOT "X:\Test"
# Aplikationseinstellungen: Programmdatei, Icon, Dokumentation
# Diese Konstanten geben an was und unter welchen Namen installiert wird
!define APPNAME "Testanwendung"
!define DESCRIPTION "--"
!define PUBLISHER "Max Muster"
!define APPFILE "Testanwendung.exe"
!define APPFILEFULL "${MAKEROOT}\Source\Testanwendung\${APPFILE}"
!define APPICON "icocontainer_16_32_48.ico"
!define APPICONFULL "${MAKEROOT}\Icon\${APPICON}"
!define APPDOC "Testanwendung_Handbuch.pdf"
!define APPDOCFULL "${MAKEROOT}\Dokumentation_Extern\${APPDOC}"
# Versionen als Integer
!define VERSIONMAJOR 1
!define VERSIONMINOR 10
# Info Systemsteuerung/Programmverwaltung ("mailto:" moeglich)
!define HELPURL "mailto:support@MaxMuster.de" # "Support Information" link
!define UPDATEURL "http://www.MaxMuster.de" # "Product Updates" link
!define ABOUTURL "http://www.MaxMuster.de" # "Publisher" link
# ungefaehre Groesse (Anzeige)
!define INSTALLSIZE 5120
# Adminrecht anfordern
RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)
# Installationspfad festlegen
InstallDir "$PROGRAMFILES\${APPNAME}"
# rtf oder txt(DOS) Datei
LicenseData "Lizenz_Freeware_Installer.rtf"
# installer/uninstaller's title bar
Name "${APPNAME}"
Icon "${APPICONFULL}"
outFile "${APPNAME}_installer.exe"
# include fuer erweiterte Skriptfunktionen
!include LogicLib.nsh
#Sprache auf Deutsch umstellen
LoadLanguageFile "${NSISDIR}\Contrib\Language files\German.nlf"
# drei Seiten: Lizenz, Zielverzeichnis, Installation
page license
page directory
Page instfiles
# --------------------------------------------------------------------------------------------------------------------------------------
# Rechtepruefung
!macro VerifyUserIsAdmin
UserInfo::GetAccountType
pop $0
${If} $0 != "admin" ;Require admin rights on NT4+
messageBox mb_iconstop "Fuer die Installation werden Administrator Rechte werden benoetigt!"
setErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
quit
${EndIf}
!macroend
# oninit
function .onInit
setShellVarContext all
!insertmacro VerifyUserIsAdmin
functionEnd
# --------------------------------------------------------------------------------------------------------------------------------------
section "install"
# Installationsverzeichnis
setOutPath $INSTDIR
# Dateien
file "${APPICONFULL}"
file "${APPDOCFULL}"
file "${APPFILEFULL}"
# Uninstaller
writeUninstaller "$INSTDIR\uninstall.exe"
# Shortcuteinstellung: aktueller User
SetShellVarContext current
# Start Menue Link
createDirectory "$SMPROGRAMS\${APPNAME}"
createShortCut "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk" "$INSTDIR\${APPFILE}" "" "$INSTDIR\${APPICON}"
createShortCut "$SMPROGRAMS\${APPNAME}\${APPNAME}_Dokumentation.lnk" "$INSTDIR\${APPDOC}" "" "$INSTDIR\${APPICON}"
# Desktop Link
createShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\${APPFILE}" "" "$INSTDIR\${APPICON}"
# Registry (add/remove programs)
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$INSTDIR\uninstall.exe"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "QuietUninstallString" "$INSTDIR\uninstall.exe /S"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "InstallLocation" "$INSTDIR"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$INSTDIR\logo.ico"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "${PUBLISHER}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "HelpLink" "${HELPURL}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "URLUpdateInfo" "${UPDATEURL}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "URLInfoAbout" "${ABOUTURL}"
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${VERSIONMAJOR}.${VERSIONMINOR}"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "VersionMajor" ${VERSIONMAJOR}
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "VersionMinor" ${VERSIONMINOR}
# kein "modify"/"repair"
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" 1
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" 1
# Groesse in Add/Remove Programs (siehe oben)
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "EstimatedSize" ${INSTALLSIZE}
sectionEnd
# --------------------------------------------------------------------------------------------------------------------------------------
# onuinit
function un.onInit
SetShellVarContext all
#Sicherheitsabfrage
MessageBox MB_OKCANCEL "Wollen Sie ${APPNAME} wirklich entfernen?" IDOK next
Abort
next:
!insertmacro VerifyUserIsAdmin
functionEnd
# --------------------------------------------------------------------------------------------------------------------------------------
section "uninstall"
# Shortcuteinstellung: aktueller User
SetShellVarContext current
# Start Menu Link (mit Ordner wenn leer)
delete "$SMPROGRAMS\${APPNAME}\${APPNAME}.lnk"
delete "$SMPROGRAMS\${APPNAME}\${APPNAME}_Dokumentation.lnk"
rmDir "$SMPROGRAMS\${APPNAME}"
# Desktop Link
delete "$DESKTOP\${APPNAME}.lnk"
# Dateien
delete "$INSTDIR\${APPICON}"
delete "$INSTDIR\${APPFILE}"
# Uninstaller
delete $INSTDIR\uninstall.exe
# Ordner (wenn leer)
rmDir $INSTDIR
# registry
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
sectionEnd
# --------------------------------------------------------------------------------------------------------------------------------------
|