NSIS Script

Aus NeoWiki

Wechseln zu: Navigation, Suche

Erklärung wie man mit Hilfe des Nullsoft Scriptable Install Systems eine eigene Installer Programmdatei erzeugt.

Inhaltsverzeichnis

NSIS

Download und am besten einer Full Installation der NSIS Setup.exe von http://nsis.sourceforge.net

NSIS- & Neo Mule-Zusatzdateien

Download der NSIS.zip aus dem Ordner Neo Mule NSIS welche nach dem entpacken ins Installationsverzeichnis kopiert werden muss welches unter dem vorangegangenen Punkt angelegt wurde.

Neo Mule Binary

Die gewünschte Releasedatei Neo_Mule_v*.**_bin.zip, welche unter http://sourceforge.net/projects/neomule/ zu finden ist und als Setup verwendet werden soll ebenfalls komplett in das Installationsverzeichnis von NSIS entpacken.

Neo Mule Installer kompilieren

Nun kann man durch Rechtsklick auf die Datei NeoMule.nsi die Installer Datei erzeugen welche nach fertigem kompilieren im selben Ordner erzeugt wird.

Update

Das Beispiel basiert auf dem Neo Mule 4.25 und den zu der Zeit aktuellen Zusatzdateien. Für neuere Versionen empfiehlt es sich die Zusatzdateien und die NeoMule.nsi auf den neuesten Stand zu bringen, ist aber nicht zwingend erforderlich.

NeoMule.nsi

Beispiel der NeoMule.nsi welche auch im NSIS.zip Paket enthalten ist.


# NSIS Modern User Interface version 1.75 for Neo Mule
# 10.10.2006 22:00:00

Name "Neo Mule"
SetCompressor lzma

# Defines
!define REGKEY "SOFTWARE\$(^Name)" ; $(^Name) = Neo Mule !!!
!define VERSION 4.25
!define COMPANY "David Xanatos"
!define URL http://neomule.sf.net

Caption "Neo Mule ${VERSION} Setup"

BrandingText " © David Xanatos "
# Set the hyperlink up.
Function onGUIInit
 BrandingURL::Set /NOUNLOAD "200" "0" "0" "http://neomule.sf.net"
FunctionEnd

;Interface Settings
!define MUI_ABORTWARNING
!define MUI_HEADERIMAGE
!define MUI_HEADERIMAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Header\header.bmp" ; optional

# MUI defines
!define MUI_CUSTOMFUNCTION_GUIINIT onGUIInit
!define MUI_ICON "${NSISDIR}\Contrib\Graphics\Icons\XPUI-install.ico"
!define MUI_FINISHPAGE_NOAUTOCLOSE
!define MUI_LICENSEPAGE_RADIOBUTTONS
!define MUI_COMPONENTSPAGE_SMALLDESC
!define MUI_STARTMENUPAGE_REGISTRY_ROOT HKLM
!define MUI_STARTMENUPAGE_REGISTRY_KEY "Software\Neo Mule"
!define MUI_STARTMENUPAGE_REGISTRY_VALUENAME StartMenuGroup
!define MUI_STARTMENUPAGE_DEFAULT_FOLDER "Neo Mule"
!define MUI_FINISHPAGE_LINK "Visit the Neo Mule forum for the latest news and support"
!define MUI_FINISHPAGE_LINK_LOCATION "http://eselfarm.info/efarm/board.php?boardid=277"
!define MUI_FINISHPAGE_RUN $INSTDIR\emule.exe
!define MUI_FINISHPAGE_SHOWREADME $INSTDIR\changelog.txt
!define MUI_FINISHPAGE_SHOWREADME_TEXT changelog.txt
!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\XPUI-uninstall.ico"
!define MUI_UNFINISHPAGE_NOAUTOCLOSE
!define MUI_LANGDLL_REGISTRY_ROOT HKLM
!define MUI_LANGDLL_REGISTRY_KEY ${REGKEY}
!define MUI_LANGDLL_REGISTRY_VALUENAME InstallerLanguage

# Included files
!include Sections.nsh
!include MUI.nsh

# Reserved Files
!insertmacro MUI_RESERVEFILE_LANGDLL
ReserveFile "${NSISDIR}\Plugins\AdvSplash.dll"

# Variables
Var StartMenuGroup

; Adds an XP manifest to the installer
XPStyle on

; Sets the font of the installer
; SetFont "Comic Sans MS" 8

; Defines the un-/installer logo of Neo Mule
!insertmacro MUI_DEFAULT MUI_WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\logo.bmp"
!insertmacro MUI_DEFAULT MUI_UNWELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\logo.bmp"

;--------------------------------
;Configuration


  ;!insertmacro MUI_RESERVEFILE_SPECIALBITMAP
 
  LicenseLangString myLicenseData 1033 "${NSISDIR}\license\license.txt"
  LicenseLangString myLicenseData 1031 "${NSISDIR}\license\license-GER.txt"
  LicenseLangString myLicenseData 1036 "${NSISDIR}\license\license-FR.txt"
  LicenseLangString myLicenseData 1034 "${NSISDIR}\license\license-SP.txt"
  LicenseLangString myLicenseData 1040 "${NSISDIR}\license\license-IT.txt"
  LicenseLangString myLicenseData 1049 "${NSISDIR}\license\license-RU.txt"
  LicenseLangString myLicenseData 1046 "${NSISDIR}\license\license-PT_BR.txt"
  LicenseLangString myLicenseData 1030 "${NSISDIR}\license\license-DK.txt"

  LicenseData $(myLicenseData)

# Installer pages
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "$(myLicenseData)"
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_STARTMENU Application $StartMenuGroup
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_UNPAGE_CONFIRM
!insertmacro MUI_UNPAGE_INSTFILES

# Installer languages
!insertmacro MUI_LANGUAGE English
!insertmacro MUI_LANGUAGE German
!insertmacro MUI_LANGUAGE Spanish
!insertmacro MUI_LANGUAGE French
!insertmacro MUI_LANGUAGE Italian
!insertmacro MUI_LANGUAGE Russian
!insertmacro MUI_LANGUAGE PortugueseBR
!insertmacro MUI_LANGUAGE Danish

  ;Component-selection page
    ;Titles
    LangString sec_main ${LANG_ENGLISH} "Program Files"
    LangString sec_deinst ${LANG_ENGLISH} "Neo Mule deinstallation"
    LangString sec_help ${LANG_ENGLISH} "Help Files"
    LangString sec_languages ${LANG_ENGLISH} "Language Files"
    LangString sec_extras ${LANG_ENGLISH} "Advanced Files"
    LangString sec_link ${LANG_ENGLISH} "Take ed2k-Links"
    LangString sec_shortcuts ${LANG_ENGLISH} "Shortcuts"
    LangString DESC_sec_main ${LANG_ENGLISH} "Installs the program files."
    LangString DESC_sec_help ${LANG_ENGLISH} "Installs available helpfiles. More languages might be available on our homepage."
    LangString DESC_sec_shortcuts ${LANG_ENGLISH} "Create Neo Mule shortcut icons."
    LangString DESC_sec_languages ${LANG_ENGLISH} "Full supported languages."
    LangString DESC_sec_extras ${LANG_ENGLISH} "Additional files for full function support."
    LangString DESC_sec_link ${LANG_ENGLISH} "Registers Neo Mule to take ed2k/collection-Links."
    LangString DESC_lang_eng ${LANG_ENGLISH} "English"
    LangString DESC_lang_de ${LANG_ENGLISH} "German"
    LangString De_SEC0006 ${LANG_ENGLISH} "German"
    LangString Eng_SEC0010 ${LANG_ENGLISH} "English"
    LangString LANGUAGEID ${LANG_ENGLISH} "1033"
    LangString LANGUAGEDLL ${LANG_ENGLISH} "-"

    LangString sec_main ${LANG_GERMAN} "Programmdateien"
    LangString sec_deinst ${LANG_GERMAN} "Neo Mule deinstallieren"
    LangString sec_help ${LANG_GERMAN} "Hilfedateien"
    LangString sec_languages ${LANG_GERMAN} "Sprachdateien"
    LangString sec_extras ${LANG_GERMAN} "Extras"
    LangString sec_link ${LANG_GERMAN} "Ed2k-Links nehmen"
    LangString sec_shortcuts ${LANG_GERMAN} "Shortcuts"
    LangString DESC_sec_main ${LANG_GERMAN} "Installiert die erforderlichen Programmdateien."
    LangString DESC_sec_help ${LANG_GERMAN} "Installiert verfügbare Hilfedateien. Weitere Sprachen evtl. auf unserer Homepage verfügbar."
    LangString DESC_sec_shortcuts ${LANG_GERMAN} "Erstellt eine Neo Mule Verknüpfung als Desktop und/oder Schnellstart Icon."
    LangString DESC_sec_languages ${LANG_GERMAN} "Voll unterstützte Sprachen von Neo Mule."
    LangString DESC_sec_extras ${LANG_GERMAN} "Zusätzliche Dateien für erweiterte Funktionsunterstützung."
    LangString DESC_sec_link ${LANG_GERMAN} "Registriert Neo Mule für die Annahme von ed2k/Kollektion-Links."
    LangString DESC_lang_eng ${LANG_GERMAN} "Englisch"
    LangString DESC_lang_de ${LANG_GERMAN} "Deutsch"
    LangString De_SEC0006 ${LANG_GERMAN} "Deutsch"
    LangString Eng_SEC0010 ${LANG_GERMAN} "Englisch"
    LangString LANGUAGEID ${LANG_GERMAN} "1031"
    LangString LANGUAGEDLL ${LANG_GERMAN} "de_DE.dll"
   
    LangString sec_main ${LANG_SPANISH} "Archivos de programa"
    LangString sec_deinst ${LANG_SPANISH} "Desinstalar Neo Mule"
    LangString sec_help ${LANG_SPANISH} "Archivos de ayuda"
    LangString sec_languages ${LANG_SPANISH} "Archivos de idioma"
    LangString sec_extras ${LANG_SPANISH} "Arquivos de avancado"
    LangString sec_link ${LANG_SPANISH} "Capturar enlaces ed2k"
    LangString sec_shortcuts ${LANG_SPANISH} "Atajos"
    LangString DESC_sec_main ${LANG_SPANISH} "Instalar los archivos del programa."
    LangString DESC_sec_help ${LANG_SPANISH} "Instalar archivos de ayuda disponibles. En nuestra web habrá mas lenguajes disponibles."
    LangString DESC_sec_shortcuts ${LANG_SPANISH} "Crear Neo Mule atajo."
    LangString DESC_sec_languages ${LANG_SPANISH} "Full supported languages."
    LangString DESC_sec_extras ${LANG_SPANISH} "Additional files for full function support."
    LangString DESC_sec_link ${LANG_SPANISH} "Registrar la asociación de los enlaces ed2k/Colección al Neo Mule."
    LangString DESC_lang_eng ${LANG_SPANISH} "Inglés"
    LangString DESC_lang_de ${LANG_SPANISH} "Alemán"
    LangString De_SEC0006 ${LANG_SPANISH} "Alemán"
    LangString Eng_SEC0010 ${LANG_SPANISH} "Inglés"
    LangString LANGUAGEID ${LANG_SPANISH} "1034"
    LangString LANGUAGEDLL ${LANG_SPANISH} "es_ES_T.dll"
    
    LangString sec_main ${LANG_FRENCH} "Fichiers"
    LangString sec_deinst ${LANG_FRENCH} "Désinstaller Neo Mule"
    LangString sec_help ${LANG_FRENCH} "Fichier d'aides"
    LangString sec_languages ${LANG_FRENCH} "Langue fichiers"
    LangString sec_extras ${LANG_FRENCH} "Avancés fichiers"
    LangString sec_link ${LANG_FRENCH} "Associer avec les liens ed2k"
    LangString sec_shortcuts ${LANG_FRENCH} "Raccourcis"
    LangString DESC_sec_main ${LANG_FRENCH} "Installer le fichier emule.exe"
    LangString DESC_sec_help ${LANG_FRENCH} "Installer tous les fichiers d'aides disponibles."
    LangString DESC_sec_shortcuts ${LANG_FRENCH} "Créer Neo Mule icône."
    LangString DESC_sec_languages ${LANG_FRENCH} "Full supported languages."
    LangString DESC_sec_extras ${LANG_FRENCH} "Additional files for full function support."
    LangString DESC_sec_link ${LANG_FRENCH} "Ajouter Neo Mule dans le registre pour prendre les liens ed2k/collection."
    LangString DESC_lang_eng ${LANG_FRENCH} "Anglais"
    LangString DESC_lang_de ${LANG_FRENCH} "German"
    LangString De_SEC0006 ${LANG_FRENCH} "German"
    LangString Eng_SEC0010 ${LANG_FRENCH} "Anglais"
    LangString LANGUAGEID ${LANG_FRENCH} "1036"
    LangString LANGUAGEDLL ${LANG_FRENCH} "fr_FR.dll"

    LangString sec_main ${LANG_ITALIAN} "Programmi"
    LangString sec_deinst ${LANG_ITALIAN} "Disinstalla Neo Mule"
    LangString sec_help ${LANG_ITALIAN} "Aiuto"
    LangString sec_languages ${LANG_ITALIAN} "Lingua Files"
    LangString sec_extras ${LANG_ITALIAN} "Avanzati Files"
    LangString sec_link ${LANG_ITALIAN} "Prendi gli ed2k-Links"
    LangString sec_shortcuts ${LANG_ITALIAN} "Scorciatoie"
    LangString DESC_sec_main ${LANG_ITALIAN} "Installa i Files del Programma"
    LangString DESC_sec_help ${LANG_ITALIAN} "Installa gli Help disponibili. Nel nostro sito ce ne potrebbero essere in altre lingue."
    LangString DESC_sec_shortcuts ${LANG_ITALIAN} "Crea Neo Mule icona."
    LangString DESC_sec_languages ${LANG_ITALIAN} "Full supported languages."
    LangString DESC_sec_extras ${LANG_ITALIAN} "Additional files for full function support."
    LangString DESC_sec_link ${LANG_ITALIAN} "Fai Prendere ad Neo Mule gli ed2k/Collezione-Links."
    LangString DESC_lang_eng ${LANG_ITALIAN} "Inglese"
    LangString DESC_lang_de ${LANG_ITALIAN} "Tedesco"
    LangString De_SEC0006 ${LANG_ITALIAN} "Tedesco"
    LangString Eng_SEC0010 ${LANG_ITALIAN} "Inglese"
    LangString LANGUAGEID ${LANG_ITALIAN} "1040"
    LangString LANGUAGEDLL ${LANG_ITALIAN} "it_IT.dll"

    LangString sec_main ${LANG_RUSSIAN} "Program Files"
    LangString sec_deinst ${LANG_RUSSIAN} "Óäàëåíèå Neo Mule"
    LangString sec_help ${LANG_RUSSIAN} "Ôàéëû ïîìîùè"
    LangString sec_languages ${LANG_RUSSIAN} "ßçûê ôàéËû"
    LangString sec_extras ${LANG_RUSSIAN} "Ïîêàçûâàòü ôàéËû"
    LangString sec_link ${LANG_RUSSIAN} "Ïåðåõâàòûâàòü ed2k-Ëèíêè"
    LangString sec_shortcuts ${LANG_RUSSIAN} "Shortcuts"
    LangString DESC_sec_main ${LANG_RUSSIAN} "Óñòàíîâêà ôàéëîâ ïðîãðàììû"
    LangString DESC_sec_help ${LANG_RUSSIAN} "Äîïîëíèòåëüíûå ÿçûêè âîçìîæíî óæå äîñòóïíû íà íàøåé âåá ñòðàíèöå."
    LangString DESC_sec_shortcuts ${LANG_RUSSIAN} "Shortcuts."
    LangString DESC_sec_languages ${LANG_RUSSIAN} "Full supported languages."
    LangString DESC_sec_extras ${LANG_RUSSIAN} "Additional files for full function support."
    LangString DESC_sec_link ${LANG_RUSSIAN} "Ðåãèñòðèðîâàòü Neo Mule äëÿ ïåðåõâàòà ed2k/Êîëëåêöèÿ-ëèíêîâ."
    LangString DESC_lang_eng ${LANG_RUSSIAN} "Àíãëèéñåêèé"
    LangString DESC_lang_de ${LANG_RUSSIAN} "Íåìåöêèé"
    LangString De_SEC0006 ${LANG_RUSSIAN} "Íåìåöêèé"
    LangString Eng_SEC0010 ${LANG_RUSSIAN} "Àíãëèéñåêèé"
    LangString LANGUAGEID ${LANG_RUSSIAN} "1049"
    LangString LANGUAGEDLL ${LANG_RUSSIAN} "ru_RU.dll"
    
    LangString sec_main ${LANG_PORTUGUESEBR} "Arquivos de programas"
    LangString sec_deinst ${LANG_PORTUGUESEBR} "Desinstalação do Neo Mule"
    LangString sec_help ${LANG_PORTUGUESEBR} "Arquivos de ajuda"
    LangString sec_languages ${LANG_PORTUGUESEBR} "Arquivos de idioma"
    LangString sec_extras ${LANG_PORTUGUESEBR} "Arquivos de avançadas"
    LangString sec_link ${LANG_PORTUGUESEBR} "Pegar Links ed2k"
    LangString sec_shortcuts ${LANG_PORTUGUESEBR} "Atalhos"
    LangString DESC_sec_main ${LANG_PORTUGUESEBR} "Instalar o arquivo emule.exe"
    LangString DESC_sec_help ${LANG_PORTUGUESEBR} "Instalar todos arquivos de Ajuda disponíveis."
    LangString DESC_sec_shortcuts ${LANG_PORTUGUESEBR} "Atalhos."
    LangString DESC_sec_languages ${LANG_PORTUGUESEBR} "Full supported languages."
    LangString DESC_sec_extras ${LANG_PORTUGUESEBR} "Additional files for full function support."
    LangString DESC_sec_link ${LANG_PORTUGUESEBR} "Registrar Neo Mule para pegar links ed2k/coleção."
    LangString DESC_lang_eng ${LANG_PORTUGUESEBR} "Inglês"
    LangString DESC_lang_de ${LANG_PORTUGUESEBR} "Alemão"
    LangString De_SEC0006 ${LANG_PORTUGUESEBR} "Alemão"
    LangString Eng_SEC0010 ${LANG_PORTUGUESEBR} "Inglês"
    LangString LANGUAGEID ${LANG_PORTUGUESEBR} "1046"
    LangString LANGUAGEDLL ${LANG_PORTUGUESEBR} "pt_BR.dll"

    LangString sec_main ${LANG_DANISH} "Programmer"
    LangString sec_deinst ${LANG_DANISH} "Afinstaller Neo Mule"
    LangString sec_help ${LANG_DANISH} "Hjælpefiler"
    LangString sec_languages ${LANG_DANISH} "Sprogfiler"
    LangString sec_extras ${LANG_DANISH} "Yderligere filer"
    LangString sec_link ${LANG_DANISH} "Overtag ed2k-Links"
    LangString sec_shortcuts ${LANG_DANISH} "Shortcuts"
    LangString DESC_sec_main ${LANG_DANISH} "Installerer programfilen emule.exe"
    LangString DESC_sec_help ${LANG_DANISH} "Installerer alle tilgængelige hjælpefiler."
    LangString DESC_sec_shortcuts ${LANG_DANISH} "Shortcuts."
    LangString DESC_sec_languages ${LANG_DANISH} "Full supported languages."
    LangString DESC_sec_extras ${LANG_DANISH} "Additional files for full function support."
    LangString DESC_sec_link ${LANG_DANISH} "Registrerer Neo Mule til at overtage ed2k/Kollektion-Links."
    LangString DESC_lang_eng ${LANG_DANISH} "English"
    LangString DESC_lang_de ${LANG_DANISH} "German"
    LangString De_SEC0006 ${LANG_DANISH} "German"
    LangString Eng_SEC0010 ${LANG_DANISH} "English"
    LangString LANGUAGEID ${LANG_DANISH} "1030"
    LangString LANGUAGEDLL ${LANG_DANISH} "da_DK.dll"
  
;--------------------------------

# Installer attributes
OutFile Neo_Mule_${VERSION}_installer.exe
InstallDir "$PROGRAMFILES\Neo Mule"
InstallDirRegKey HKLM "Software\Neo Mule" Path
CRCCheck on
ShowInstDetails hide
ShowUninstDetails hide

InstType "Full"
InstType "Lite"
InstType "Minimal"

# Installer sections
Section $(sec_main) sec_main
    SectionIn 1 2 3
    SetShellVarContext all
    SetOutPath $INSTDIR
    SetOverwrite on
    File "${NSISDIR}\emule.exe"
    File "${NSISDIR}\changelog.txt"
    SetOutPath $INSTDIR\config
    File "${NSISDIR}\config\countryflag32.dll"
    File "${NSISDIR}\config\countryflag.dll"
    File "${NSISDIR}\config\dlp.dll"
    File "${NSISDIR}\config\dlp.sig"
    File "${NSISDIR}\config\eMule Light.tmpl"
    File "${NSISDIR}\config\eMule.tmpl"
    File "${NSISDIR}\config\ip-to-country.csv"
    File "${NSISDIR}\config\leechers.dat"
    File "${NSISDIR}\config\leechers.sig"
    SetOverwrite off
    File "${NSISDIR}\config\server.met"
    SetOverwrite on
    File "${NSISDIR}\config\webcaches.xml"
    SetOutPath $INSTDIR\webserver
    File "${NSISDIR}\webserver\*"
    WriteRegStr HKLM "${REGKEY}\Components" sec_main 1
SectionEnd

Section $(sec_link) sec_link
    SectionIn 1 2
    DeleteRegKey HKCR "ed2k"
    WriteRegStr HKEY_CLASSES_ROOT ed2k "" "URL: ed2k Protocol"
    WriteRegStr HKEY_CLASSES_ROOT ed2k "URL Protocol" ""
    WriteRegStr HKEY_CLASSES_ROOT ed2k\shell "" open
    WriteRegStr HKEY_CLASSES_ROOT ed2k\DefaultIcon "" $INSTDIR\eMule.exe,1
    WriteRegStr HKEY_CLASSES_ROOT ed2k\shell\open\command "" '"$INSTDIR\eMule.exe" "%1"'    
    WriteRegStr HKEY_CLASSES_ROOT .emulecollection "" "eMule"
    WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Classes\.emulecollection "" "eMule"
    DeleteRegKey HKLM "SOFTWARE\Classes\ed2k"       
    WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Classes\ed2k "" "URL: ed2k Protocol"
    WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Classes\ed2k "URL Protocol" ""
    WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Classes\ed2k\shell "" open
    WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Classes\ed2k\DefaultIcon "" $INSTDIR\eMule.exe
    WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Classes\ed2k\shell\open\command "" '"$INSTDIR\eMule.exe" "%1"'
    WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Classes\.emulecollection "" "eMule"
    WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Classes\eMule "" "eMule Collection File"
    WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Classes\eMule\shell "" open
    WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Classes\eMule\DefaultIcon "" $INSTDIR\eMule.exe
    WriteRegStr HKEY_LOCAL_MACHINE SOFTWARE\Classes\eMule\shell\open\command "" '"$INSTDIR\eMule.exe" "%1"'
    DeleteRegKey HKCR "eMule"
    WriteRegStr HKEY_CLASSES_ROOT eMule "" "eMule Collection"
    WriteRegStr HKEY_CLASSES_ROOT eMule\shell "" open
    WriteRegStr HKEY_CLASSES_ROOT eMule\DefaultIcon "" $INSTDIR\eMule.exe,1
    WriteRegStr HKEY_CLASSES_ROOT eMule\shell\open\command "" '"$INSTDIR\eMule.exe" "%1"'
SectionEnd

SectionGroup $(sec_shortcuts) sec_shortcuts
    Section /o Desktop SEC0001
        SectionIn 1
        SetShellVarContext all
        SetOutPath $DESKTOP
        CreateShortcut "$DESKTOP\Neo Mule.lnk" $INSTDIR\emule.exe
        WriteRegStr HKLM "${REGKEY}\Components" Desktop 1
    SectionEnd

    Section /o Quicklaunchbar SEC0002
        SectionIn 1
        SetShellVarContext all
        SetOutPath $QUICKLAUNCH
        CreateShortcut "$QUICKLAUNCH\Neo Mule.lnk" $INSTDIR\emule.exe
        WriteRegStr HKLM "${REGKEY}\Components" Quicklaunchbar 1
    SectionEnd
SectionGroupEnd

SectionGroup $(sec_extras) sec_extras
    Section "antiLeech DLP v21" SEC0003
        SectionIn 1 2
        SetShellVarContext all
        SetOutPath $INSTDIR
        SetOverwrite on
        File "${NSISDIR}\config\antiLeech.dll.new"
        WriteRegStr HKLM "${REGKEY}\Components" "antiLeech DLP" 1
    SectionEnd

    Section "MediaInfo v0.7.0.3" SEC0004
        SectionIn 1 2
        SetShellVarContext all
        SetOutPath $INSTDIR
        SetOverwrite on
        File "${NSISDIR}\MediaInfo.dll"
        WriteRegStr HKLM "${REGKEY}\Components" "MediaInfo" 1
    SectionEnd

    Section "unrar v3.60.100.215" SEC0005
        SectionIn 1 2
        SetShellVarContext all
        SetOutPath $INSTDIR
        SetOverwrite on
        File "${NSISDIR}\unrar.dll"
        WriteRegStr HKLM "${REGKEY}\Components" "unrar" 1
    SectionEnd
    
    Section "Skin Template" SEC0011
        SectionIn 1 2
        SetShellVarContext all
        SetOutPath $INSTDIR
        SetOverwrite off
        File "${NSISDIR}\Template.eMuleSkin.ini"
        WriteRegStr HKLM "${REGKEY}\Components" "Template.eMuleSkin" 1
    SectionEnd
    
    Section "Web Services" SEC0012
        SectionIn 1 2
        SetShellVarContext all
        SetOutPath $INSTDIR\config
        SetOverwrite off
        File "${NSISDIR}\config\webservices.dat"
        WriteRegStr HKLM "${REGKEY}\Components" "Web Services" 1
    SectionEnd
SectionGroupEnd

SectionGroup $(sec_languages) sec_languages

    Section $(Eng_SEC0010) Eng_SEC0010
        SectionIn 1 2 3 RO
    SectionEnd
    
    Section $(De_SEC0006) De_SEC0006
        SectionIn 1
        SetShellVarContext all
        SetOutPath $INSTDIR\lang
        SetOverwrite on
        File "${NSISDIR}\lang\de_DE.dll"
        WriteRegStr HKLM "${REGKEY}\Components" Deutsch 1
    SectionEnd
SectionGroupEnd

SectionGroup $(sec_help) sec_help
    Section /o $(DESC_lang_eng) SecHelpEng
        SectionIn 1
        SetShellVarContext all
        SetOutPath $INSTDIR
        SetOverwrite on
        File "${NSISDIR}\eMule.chm"
        WriteRegStr HKLM "${REGKEY}\Components" English 1
    SectionEnd

    Section /o $(DESC_lang_de) SecHelpDe
        SectionIn 1
        SetShellVarContext all
        SetOutPath $INSTDIR
        SetOverwrite on
        File "${NSISDIR}\eMule.1031.chm"
        WriteRegStr HKLM "${REGKEY}\Components" German 1
    SectionEnd
SectionGroupEnd

Section -post SEC0009
    SetShellVarContext all
    WriteRegStr HKLM "${REGKEY}" Path $INSTDIR
    WriteUninstaller $INSTDIR\uninstall.exe
    !insertmacro MUI_STARTMENU_WRITE_BEGIN Application
    SetOutPath $SMPROGRAMS\$StartMenuGroup
    CreateShortCut "$SMPROGRAMS\$StartMenuGroup\Neo Mule.lnk" "$INSTDIR\eMule.exe"
    WriteINIStr "$SMPROGRAMS\$StartMenuGroup\Neo Mule Homepage.url" "InternetShortcut" "URL" "http://neomule.sf.net"
    WriteINIStr "$SMPROGRAMS\$StartMenuGroup\Neo Mule Forum.url" "InternetShortcut" "URL" "http://eselfarm.info/efarm/board.php?boardid=277"
    CreateShortCut "$SMPROGRAMS\$StartMenuGroup\TheDir.lnk" "$INSTDIR\" "" "" 0 SW_SHOWMAXIMIZED CONTROL|SHIFT|Z
    CreateShortcut "$SMPROGRAMS\$StartMenuGroup\$(^UninstallLink).lnk" $INSTDIR\uninstall.exe
    !insertmacro MUI_STARTMENU_WRITE_END
    WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayName "$(^Name)"
    WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayVersion "${VERSION}"
    WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" Publisher "${COMPANY}"
    WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" URLInfoAbout "${URL}"
    WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" DisplayIcon $INSTDIR\emule.exe
    WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" UninstallString $INSTDIR\uninstall.exe
    WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoModify 1
    WriteRegDWORD HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)" NoRepair 1
SectionEnd

# Macro for selecting uninstaller sections
!macro SELECT_UNSECTION SECTION_NAME UNSECTION_ID
    Push $R0
    ReadRegStr $R0 HKLM "${REGKEY}\Components" "${SECTION_NAME}"
    StrCmp $R0 1 0 next${UNSECTION_ID}
    !insertmacro SelectSection "${UNSECTION_ID}"
    GoTo done${UNSECTION_ID}
next${UNSECTION_ID}:
    !insertmacro UnselectSection "${UNSECTION_ID}"
done${UNSECTION_ID}:
    Pop $R0
!macroend

# Uninstaller sections
Section /o un.$(DESC_lang_de) UNSEC0008
    SetShellVarContext all
    Delete /REBOOTOK $INSTDIR\eMule.1031.chm
    DeleteRegValue HKLM "${REGKEY}\Components" German
SectionEnd

Section /o un.$(DESC_lang_eng) UNSEC0007
    SetShellVarContext all
    Delete /REBOOTOK $INSTDIR\eMule.chm
    DeleteRegValue HKLM "${REGKEY}\Components" English
SectionEnd

Section /o un.$(De_SEC0006) UNSEC0006
    SetShellVarContext all
    Delete /REBOOTOK $INSTDIR\lang\de_DE.dll
    DeleteRegValue HKLM "${REGKEY}\Components" Deutsch
SectionEnd

Section /o "un.Web Services" UNSEC0012
    SetShellVarContext all
    DeleteRegValue HKLM "${REGKEY}\Components" "Web Services"
SectionEnd

Section /o "un.Skin Template" UNSEC0011
    SetShellVarContext all
    DeleteRegValue HKLM "${REGKEY}\Components" "Template.eMuleSkin"
SectionEnd

Section /o "un.unrar v3.60.100.215" UNSEC0005
    SetShellVarContext all
    Delete /REBOOTOK $INSTDIR\unrar.dll
    DeleteRegValue HKLM "${REGKEY}\Components" "unrar"
SectionEnd

Section /o "un.MediaInfo v0.7.0.3" UNSEC0004
    SetShellVarContext all
    Delete /REBOOTOK $INSTDIR\MediaInfo.dll
    DeleteRegValue HKLM "${REGKEY}\Components" "MediaInfo"
SectionEnd

Section /o "un.antiLeech DLP v21" UNSEC0003
    SetShellVarContext all
    Delete /REBOOTOK $INSTDIR\antiLeech.dll.new
    DeleteRegValue HKLM "${REGKEY}\Components" "antiLeech DLP"
SectionEnd

Section /o un.Quicklaunchbar UNSEC0002
    SetShellVarContext all
    Delete /REBOOTOK "$QUICKLAUNCH\Neo Mule.lnk"
    DeleteRegValue HKLM "${REGKEY}\Components" Quicklaunchbar
SectionEnd

Section /o un.Desktop UNSEC0001
    SetShellVarContext all
    Delete /REBOOTOK "$DESKTOP\Neo Mule.lnk"
    DeleteRegValue HKLM "${REGKEY}\Components" Desktop
SectionEnd

Section /o un.$(sec_main) UNSEC0000
    SetShellVarContext all
    Delete /REBOOTOK $INSTDIR\webserver\*
    RmDir /REBOOTOK $INSTDIR\webserver
    Delete /REBOOTOK $INSTDIR\config\webcaches.xml
    Delete /REBOOTOK $INSTDIR\config\leechers.sig
    Delete /REBOOTOK $INSTDIR\config\leechers.dat
    Delete /REBOOTOK $INSTDIR\config\ip-to-country.csv
    Delete /REBOOTOK $INSTDIR\config\eMule.tmpl
    Delete /REBOOTOK "$INSTDIR\config\eMule Light.tmpl"
    Delete /REBOOTOK $INSTDIR\config\dlp.sig
    Delete /REBOOTOK $INSTDIR\config\dlp.dll
    Delete /REBOOTOK $INSTDIR\config\countryflag.dll
    Delete /REBOOTOK $INSTDIR\config\countryflag32.dll
    Delete /REBOOTOK $INSTDIR\changelog.txt
    Delete /REBOOTOK $INSTDIR\emule.exe
    DeleteRegValue HKLM "${REGKEY}\Components" sec_main
SectionEnd

Section un.post UNSEC0009
    SetShellVarContext all
    DeleteRegKey HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\$(^Name)"
    Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Neo Mule.lnk"
    Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Neo Mule Homepage.url"
    Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\Neo Mule Forum.url"
    Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\TheDir.lnk"
    Delete /REBOOTOK "$SMPROGRAMS\$StartMenuGroup\$(^UninstallLink).lnk"
    Delete /REBOOTOK $INSTDIR\uninstall.exe
    DeleteRegValue HKLM "${REGKEY}" StartMenuGroup
    DeleteRegValue HKLM "${REGKEY}" Path
    DeleteRegKey /IfEmpty HKLM "${REGKEY}\Components"
    DeleteRegKey /IfEmpty HKLM "${REGKEY}"
    RmDir /REBOOTOK $SMPROGRAMS\$StartMenuGroup
    RmDir /REBOOTOK $INSTDIR
SectionEnd

Section "Uninstall"
  Delete "$INSTDIR\antiLeech.dll"
  Delete "$INSTDIR\antiLeech.dll.new"
  Delete "$INSTDIR\MediaInfo.dll"
  Delete "$INSTDIR\unrar.dll"
  Delete "$INSTDIR\*.chm"
  Delete "$INSTDIR\*.old"
  Delete "$INSTDIR\*.bak"
  Delete "$INSTDIR\config\server_met"
  Delete "$INSTDIR\config\*.bak"
  Delete "$INSTDIR\config\*.old"
  Delete "$INSTDIR\config\*.dll"
  Delete "$INSTDIR\config\*.tmpl"
  Delete "$INSTDIR\config\*.sig"
  Delete "$INSTDIR\lang\*.dll"
  
  SetShellVarContext all
  
  RMDir "$INSTDIR\config"
  RMDir "$INSTDIR\Incoming"
  RMDir "$INSTDIR\lang"
  RMDir "$INSTDIR\logs"
  RMDir "$INSTDIR\skins"
  RMDir "$INSTDIR\Temp"
SectionEnd

# Installer functions
Function .onInit
    InitPluginsDir
    Push $R1
    File /oname=$PLUGINSDIR\spltmp.bmp "${NSISDIR}\Contrib\Graphics\Wizard\splash.bmp"
    advsplash::show 1200 1000 1000 -1 $PLUGINSDIR\spltmp
    Pop $R1
    Pop $R1
    !insertmacro MUI_LANGDLL_DISPLAY
FunctionEnd

;--------------------------------
;Descriptions

!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
    !insertmacro MUI_DESCRIPTION_TEXT ${sec_main} $(DESC_sec_main)
    !insertmacro MUI_DESCRIPTION_TEXT ${sec_link} $(DESC_sec_link)
    !insertmacro MUI_DESCRIPTION_TEXT ${sec_shortcuts} $(DESC_sec_shortcuts)
    !insertmacro MUI_DESCRIPTION_TEXT ${sec_languages} $(DESC_sec_languages)
    !insertmacro MUI_DESCRIPTION_TEXT ${sec_extras} $(DESC_sec_extras)
    !insertmacro MUI_DESCRIPTION_TEXT ${SEC0003} "Argos antiLeech dynamic link library. http://xtreme-mod.net"
    !insertmacro MUI_DESCRIPTION_TEXT ${SEC0004} "Library for read info about media files. http://mediainfo.sourceforge.net"
    !insertmacro MUI_DESCRIPTION_TEXT ${SEC0005} "RAR decompression dynamic link library. http://rarlab.com"
    !insertmacro MUI_DESCRIPTION_TEXT ${De_SEC0006} "German translation by Betatester/Team eselfarm."
    !insertmacro MUI_DESCRIPTION_TEXT ${Eng_SEC0010} "Default language by David Xanatos. You can change the language setting any time in the Options » General tab."
    !insertmacro MUI_DESCRIPTION_TEXT ${SEC0011} "Template.eMuleSkin.ini to create and customize own skin (colors, icons...)."
    !insertmacro MUI_DESCRIPTION_TEXT ${SEC0012} "webservices.dat - Webservices Configuration File."
    !insertmacro MUI_DESCRIPTION_TEXT ${sec_help} $(DESC_sec_help)
!insertmacro MUI_FUNCTION_DESCRIPTION_END


## Unload the plugin.
Function .onGUIEnd
 BrandingURL::Unload
FunctionEnd

;--------------------------------

# Uninstaller functions
Function un.onInit
    ReadRegStr $INSTDIR HKLM "${REGKEY}" Path
    ReadRegStr $StartMenuGroup HKLM "${REGKEY}" StartMenuGroup
    !insertmacro MUI_UNGETLANGUAGE
    !insertmacro SELECT_UNSECTION sec_main ${UNSEC0000}
    !insertmacro SELECT_UNSECTION Desktop ${UNSEC0001}
    !insertmacro SELECT_UNSECTION Quicklaunchbar ${UNSEC0002}
    !insertmacro SELECT_UNSECTION "antiLeech DLP v21" ${UNSEC0003}
    !insertmacro SELECT_UNSECTION "MediaInfo v0.7.0.3" ${UNSEC0004}
    !insertmacro SELECT_UNSECTION "unrar v3.60.100.215" ${UNSEC0005}
    !insertmacro SELECT_UNSECTION De_SEC0006 ${UNSEC0006}
    !insertmacro SELECT_UNSECTION English ${UNSEC0007}
    !insertmacro SELECT_UNSECTION German ${UNSEC0008}
    !insertmacro SELECT_UNSECTION "Skin Template" ${UNSEC0011}
    !insertmacro SELECT_UNSECTION "Web Services" ${UNSEC0012}
FunctionEnd


# Installer Language Strings
# TODO Update the Language Strings with the appropriate translations.

LangString ^UninstallLink ${LANG_ENGLISH} "Uninstall $(^Name)"
LangString ^UninstallLink ${LANG_GERMAN} "Uninstall $(^Name)"
LangString ^UninstallLink ${LANG_SPANISH} "Uninstall $(^Name)"
LangString ^UninstallLink ${LANG_FRENCH} "Uninstall $(^Name)"
LangString ^UninstallLink ${LANG_ITALIAN} "Uninstall $(^Name)"
LangString ^UninstallLink ${LANG_RUSSIAN} "Uninstall $(^Name)"
LangString ^UninstallLink ${LANG_PORTUGUESEBR} "Uninstall $(^Name)"
LangString ^UninstallLink ${LANG_DANISH} "Uninstall $(^Name)"
Persönliche Werkzeuge
Andere Sprachen