Nullsoft skriptfähiges Installationssystem - Nullsoft Scriptable Install System
|
NSIS-Installationsprogramm
| |
| Originalautor(en) | Nullsoft |
|---|---|
| Entwickler | NSIS-Team und NSIS-Community |
| Erstveröffentlichung | 31. Juli 2000 |
| Stabile Version | 3.07 / 24. Juli 2021
|
| Repository |
|
| Geschrieben in | C , C++ |
| Betriebssystem | Windows , Mac OS X |
| Typ | Softwareentwicklungstools |
| Lizenz | zlib-Lizenz |
| Webseite | nsis |
Nullsoft Scriptable Install System ( NSIS ) ist ein skriptgesteuertes Installationstool für Microsoft Windows, das von Nullsoft , den Entwicklern von Winamp, unterstützt wird . NSIS wird unter einer Kombination freier Softwarelizenzen veröffentlicht , hauptsächlich der zlib-Lizenz . Es hat sich zu einer weit verbreiteten Alternative zu kommerziellen proprietären Produkten wie InstallShield entwickelt , mit Benutzern wie Amazon.com , Dropbox , Google , Ubisoft , FL Studio , BitTorrent und McAfee .
Geschichte
NSIS wurde erstellt, um Winamp zu verteilen. Es basiert auf einem früheren Nullsoft-Produkt, PiMP (Plugin Mini Packager), und wird auch als SuperPiMP bezeichnet. Nach Version 2.0a0 wurde das Projekt nach SourceForge verschoben, wo Entwickler außerhalb von Nullsoft regelmäßig daran arbeiteten. NSIS 2.0 wurde ungefähr zwei Jahre später veröffentlicht.
NSIS Version 1 ähnelt in vielerlei Hinsicht dem klassischen Windows Installer , unterstützt jedoch mehr Komprimierungsformate. NSIS Version 2 bietet eine neue optimierte grafische Benutzeroberfläche und unterstützt die LZMA- Komprimierung, mehrere Sprachen und ein benutzerfreundliches Plugin-System.
Im Januar 2006 war NSIS das Projekt des Monats von SourceForge.
Skriptbeispiele
Hallo Welt!
!include "MUI.nsh"
!insertmacro MUI_LANGUAGE "English"
Name "Hello world!" # Name of the installer.
OutFile "HelloWorld.exe" # Name of the installer's file.
Function .onInit # Function that will be executed on installer's start up.
MessageBox MB_OK|MB_ICONINFORMATION "Hello world!" # Show a message that says "Hello world!".
Quit # Close the installer because this is a simple "Hello world!" installer.
FunctionEnd
Section # Useless section because this is a simple "Hello world!" installer.
SectionEnd
Einfaches Installationsprogramm
!include "MUI.nsh"
!define MUI_ABORTWARNING # This will warn the user if they exit from the installer.
!insertmacro MUI_PAGE_WELCOME # Welcome to the installer page.
!insertmacro MUI_PAGE_DIRECTORY # In which folder install page.
!insertmacro MUI_PAGE_INSTFILES # Installing page.
!insertmacro MUI_PAGE_FINISH # Finished installation page.
!insertmacro MUI_LANGUAGE "English"
Name "MyApp" # Name of the installer (usually the name of the application to install).
OutFile "MyAppInstaller.exe" # Name of the installer's file.
InstallDir "$PROGRAMFILES\MyApp" # Default installing folder ($PROGRAMFILES is Program Files folder).
ShowInstDetails show # This will always show the installation details.
Section "MyApp" # In this section add your files or your folders.
# Add your files with "File (Name of the file)", example: "File "$DESKTOP\MyApp.exe"" ($DESKTOP is Desktop folder); or add your folders always with "File (Name of the folder)\*", always add your folders with an asterisk, example: "File /r $DESKTOP\MyApp\*" (this will add its files and (with /r its subfolders)).
SectionEnd
# define name of installer
OutFile "InstallMyApp"
# define installation directory
InstallDir $LOCALAPPDATA\Programs\myapp
# For removing Start Menu shortcut in Windows 7
RequestExecutionLevel user
# start default section
Section
# set the installation directory as the destination for the following actions
SetOutPath $INSTDIR
# create the uninstaller
WriteUninstaller "$INSTDIR\uninstall.exe"
# point the new shortcut at the program uninstaller
CreateShortcut "$SMPROGRAMS\My App.lnk" "$INSTDIR\myapp.exe"
CreateShortcut "$SMPROGRAMS\My App Uninstall.lnk" "$INSTDIR\uninstall.exe"
File /r "C:\path\to\where\my\files\are\*"
SectionEnd
# uninstaller section start
Section "uninstall"
# first, delete the uninstaller
Delete "$INSTDIR\uninstall.exe"
# second, remove the link from the start menu
Delete "$SMPROGRAMS\My App.lnk"
Delete "$SMPROGRAMS\My App Uninstall.lnk"
Delete $INSTDIR
# uninstaller section end
SectionEnd
Konzepte
Skript
Das NSIS-Compilerprogramm makensis kompiliert Skripte wie das folgende Beispiel in ausführbare Installationsprogramme. Jede Zeile im Skript enthält einen einzelnen Befehl.
# Example script
Name "Example1"
OutFile "jubaowu.exe"
InstallDir "$PROGRAMFILES\Example1"
Page Directory
Page InstFiles
Section
SetOutPath $INSTDIR
File ..\makensis.exe
SectionEnd
Moderne Benutzeroberfläche
Version 2.0 führte eine neue optionale optimierte grafische Benutzeroberfläche namens Modern UI (MUI) ein. Die MUI hat eine assistentenähnliche Oberfläche. Es unterstützt eine Willkommensseite, eine Abschlussseite, einen Sprachauswahldialog, einen Beschreibungsbereich für Komponenten und größere Anpassungsoptionen als die alte Benutzeroberfläche.
# Modern UI example script
!include MUI.nsh
Name "Example 2"
OutFile "Example2.exe"
!insertmacro MUI_PAGE_WELCOME
!insertmacro MUI_PAGE_LICENSE "license.rtf"
!insertmacro MUI_PAGE_DIRECTORY
!insertmacro MUI_PAGE_COMPONENTS
!insertmacro MUI_PAGE_INSTFILES
!insertmacro MUI_PAGE_FINISH
!insertmacro MUI_LANGUAGE "English"
!insertmacro MUI_LANGUAGE "German"
!insertmacro MUI_LANGUAGE "French"
Section "Extract makensis"
SetOutPath $INSTDIR
File ..\makensis.exe
SectionEnd
Seit der NSIS-Version 2.30 (veröffentlicht am 25. August 2007) ist eine neue Version (Beta) dieser Benutzeroberfläche verfügbar: Modern UI 2 (MUI2), eine Erweiterung von Modern UI. Im Gegensatz zur alten MUI basiert diese Version auf nsDialogs anstelle von altmodischen InstallOptions .ini-Dateien.
Ab Version 2.34 (Freigegeben am 24. Dezember 2007) ist diese MUI2 massentauglich und in allen NSIS-Paketen enthalten. Auch alle Beispiele wurden darauf umgestellt.
Moderne UI 2-Dokumentation.
Grafische Oberflächen
NSIS-Projekte können durch einfaches Bearbeiten von Textdateien (mit der Erweiterung .nsi) konfiguriert werden. Einige Drittanbieter bieten jedoch Bearbeitungssoftware an:
- EclipseNSIS ist ein Modul für die Eclipse- Plattform. Es ermöglicht das Bearbeiten, Kompilieren und Validieren von NSIS-Skripten.
- HM NIS Edit (Freeware)-Editor mit Unterstützung von benutzerdefinierten C++- oder Delphi- Plug-Ins.
- Venis (Freeware)-Editor
- Visual & Installer ist ein Add-In, das NSIS in die Microsoft Visual Studio IDE integriert und es ermöglicht, NSIS-Projekte direkt darin zu erstellen und zu erstellen.
Installateur-Schnittstellen
In den letzten Jahren wurden mehrere Projekte gestartet, die die moderne Benutzeroberfläche erweitern oder ersetzen. Schnittstellen wie ExperienceUI und UltraModernUI ändern den Stil des Installationsprogramms vollständig, indem sie es so gestalten, dass es wie die InstallShield- Schnittstelle aussieht . Andere Schnittstellen wie installSpiderUI zielen auf einen minimalistischen Ansatz auf der visuellen Seite der Dinge ab, während sie den gleichen Funktionsumfang wie die ASD beibehalten.
Plugins
NSIS kann mit Plugins erweitert werden , die mit dem Installer kommunizieren können. Plugins können in jeder nicht verwalteten Programmiersprache geschrieben werden, die eine Dynamic-Link-Bibliothek erstellen kann (wie C, C++ oder Delphi), und sie können verwendet werden, um Installationsaufgaben auszuführen oder die Installationsoberfläche zu erweitern. Ein Plugin kann mit einer einzigen Zeile NSIS-Code aufgerufen werden.
Mehrere Plugins werden mit dem NSIS-Paket geliefert, die es dem Installationsprogramm ermöglichen, einen Begrüßungsbildschirm anzuzeigen, eine benutzerdefinierte Seite anzuzeigen, ein Bild im Hintergrund anzuzeigen, Dateien von einer Website herunterzuladen, mathematische Operationen durchzuführen, Dateien zu patchen und vieles mehr.
Andere Plugins sind online verfügbar, darunter ZipDLL und ein Python- Plugin.
Merkmale
NSIS unterstützt die folgenden Funktionen:
- zlib , bzip2 und LZMA- Komprimierung
- Skriptbasiert
- Mehrsprachig
- Plugin- Unterstützung
- Skript- Präprozessor
Generiertes Installationsprogramm
Das generierte Installationsprogramm ist eine tragbare ausführbare Datei mit den im Installationsprogramm archivierten Installationsdateien, einem Overhead von 34 KB für das NSIS-Installationsprogramm und dem in ausführbaren Code kompilierten Installationsskript. Da das Installationsskript kompiliert ist, kann das Skript nicht ohne Reverse-Engineering der Binärdatei aus der gelieferten ausführbaren Datei abgerufen werden.
Das Archiv kann mit 7-Zip , dem Total Commander Plugin InstallExplorer oder dem FAR Manager Plugin InstallExplorer entpackt werden.
Das Archiv enthält mehrere Ordner:
- $PLUGINSDIR : Installationsroutine-Plugins
- $INSTDIR : Dateien, die während der Installation verwendet werden
- $_OUTDIR : zu installierende Dateien.
Das generierte Installationsprogramm enthält Befehlszeilenargumente, um Benutzern mehr Kontrolle zu geben:
- /NCRC deaktiviert die CRC-Prüfung, es sei denn, das Skript erzwingt sie
- /S führt das Installationsprogramm/Deinstallationsprogramm im Hintergrund aus.
- /D legt das Standardinstallationsverzeichnis fest. Es muss der letzte Parameter sein und darf keine Anführungszeichen enthalten. Es werden nur absolute Pfade unterstützt.
Unicode-Unterstützung
Versionen von NSIS vor 3.0 unterstützten Unicode nicht, sondern nur eine Möglichkeit, einige Dateien über ein Plugin in andere Kodierungen zu konvertieren. Es ist jedoch eine Variante von NSIS verfügbar, die volle Unicode-Unterstützung bietet. Bemerkenswerte Projekte, die diese Variante verwenden, sind:
- Google ( Picasa )
- Apache OpenOffice für Windows
- Mozilla ( Firefox , Mozilla Thunderbird )
- DateiZilla
- Winamp
- Flickr
- PortableApps.com
- Zweites Leben
- Xampp
- CherryPlayer
- AVG
- Teamviewer
Mit der Veröffentlichung der Version 3.0 von NSIS kann die Unicode-Unterstützung mit der Compiler-Direktive "Unicode true" implementiert werden. Dies bietet volle Unicode-Unterstützung ohne weitere Codeänderungen, aber das Installationsprogramm läuft nicht unter Windows 95/98/Me. Ab 2016 vor der Version 3.0 war NSIS im PortableApps- Format für Unicode 2.46.5 Rev 3 und ANSI 2.51 verfügbar .