summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorflorian <florian@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2011-05-19 15:03:09 +0000
committerflorian <florian@b9310e46-f624-0410-8ea1-cfbb3a30dc96>2011-05-19 15:03:09 +0000
commit829cf90989c0977cd0c44d25829ce52fc94496a4 (patch)
tree4030f59a195f6950dccb0195d1062076fbe8c400
parent65aa6dc3037d2b5d11ff9f808590c60efbb14565 (diff)
downloadneo-layout-829cf90989c0977cd0c44d25829ce52fc94496a4.tar.gz
neo-layout-829cf90989c0977cd0c44d25829ce52fc94496a4.tar.bz2
neo-layout-829cf90989c0977cd0c44d25829ce52fc94496a4.zip
Installer aufgefrischt (Neo-Icon, Logo, Adminrechte-Aufruf verbessert.
git-svn-id: https://svn.neo-layout.org@2393 b9310e46-f624-0410-8ea1-cfbb3a30dc96
-rw-r--r--windows/Neo2.0_installer.nsi205
-rw-r--r--windows/Neo2.0_setup.exebin852842 -> 858009 bytes
2 files changed, 115 insertions, 90 deletions
diff --git a/windows/Neo2.0_installer.nsi b/windows/Neo2.0_installer.nsi
index 018157c..03485e9 100644
--- a/windows/Neo2.0_installer.nsi
+++ b/windows/Neo2.0_installer.nsi
@@ -26,6 +26,7 @@
!include "x64.nsh"
!include "LogicLib.nsh"
!include "UAC.nsh"
+ !include "WinVer.nsh"
@@ -33,42 +34,47 @@
;Allgemeines
;Name und Name der Datei
-
!define /date ZEIT "%y%m%d.%H"
Name "Neo 2.0 - Das ergonomische Tastaturlayout"
OutFile "Neo2.0_setup.exe"
-
+
;Standardordner (für AHK)
InstallDir "$PROGRAMFILES\Neo2"
-
+
;Mal sehen ob Neo schon mal da war
InstallDirRegKey HKCU "Software\Neo 2.0" ""
-
+
;Rechte anfordern
RequestExecutionLevel user ;Muss „user“ sein, Admin wird nachträglich gerufen
-
+
;Zeige was geschieht
ShowInstDetails show
-
+
;Warnung bei Abbruch
!define MUI_ABORTWARNING ;Warnt falls Installations abgebrochen wird
-
-
-
+
+ Var pre_sel
+ Var DlgItem
+
;--------------------------------
;Seiten des Installers
-
+
!define WELCOME_TITLE "Willkommen zum Installations- Assistenten für Neo 2.0"
!define UNWELCOME_TITLE "Willkommen zum Deinstallations- Assistenten für Neo 2.0"
!define FINISH_TITLE "Die Installation von Neo 2.0 wurde erfolgreich beendet."
!define UNFINISH_TITLE "Die Deinstallation von Neo 2.0 wurde erfolgreich beendet."
!define MUI_COMPONENTSPAGE_SMALLDESC
+ !define MUI_ICON "kbdneo2\Treiber\AHK_für_kbdneo2\neo_enabled.ico"
+ !define MUI_HEADERIMAGE
+ !define MUI_HEADERIMAGE_RIGHT
+ !define MUI_HEADERIMAGE_BITMAP logo.bmp
!define MUI_WELCOMEPAGE_TITLE "${WELCOME_TITLE}"
!define MUI_WELCOMEPAGE_TITLE_3LINES ;3 Zeilen für den Titel
+ !define MUI_PAGE_CUSTOMFUNCTION_PRE preAdmin1
!insertmacro MUI_PAGE_WELCOME
- ;!insertmacro MUI_PAGE_LICENSE "lizenz.txt"
+;!insertmacro MUI_PAGE_LICENSE "lizenz.txt"
!define MUI_PAGE_CUSTOMFUNCTION_PRE preComp
!define MUI_PAGE_CUSTOMFUNCTION_LEAVE leaveComp
@@ -82,31 +88,32 @@
!define MUI_FINISHPAGE_TITLE "${FINISH_TITLE}"
!define MUI_FINISHPAGE_TITLE_3LINES
+ ;!define MUI_FINISHPAGE_RUN "$INSTDIR\neo20.exe"
!insertmacro MUI_PAGE_FINISH
-
-
-
+
+
+
;Deutsche Oberfläche
- !insertmacro MUI_LANGUAGE "German"
-
-
-
+ !insertmacro MUI_LANGUAGE "German"
+
+
+
;---------------------------------
;Ein paar Variablen
- !define KLF_REORDER 8
- !define KLF_ACTIVATE 1
-
-
-
+ !define KLF_REORDER 8
+ !define KLF_ACTIVATE 1
+
+
+
;--------------------------------
;Installer Sections
-
+
;Verschiedene Installationstypen
- InstType "Vollständig"
- InstType "Nur Teiber kein Skript"
- InstType "Nur NeoVars"
- ;InstType /NOCUSTOM
-
+ InstType "Vollständig"
+ InstType "Nur Teiber kein Skript"
+ InstType "Nur NeoVars"
+;InstType /NOCUSTOM
+
;Die eigentlichen Sections
Section /o "Neo-2.0-Treiber" installiereKbdneoOhneAHK
SectionIn 2
@@ -130,7 +137,7 @@
file kbdneo2\Treiber\64bit_Windows\System32\kbdneo2.dll
${EnableX64FSRedirection}
file kbdneo2\Treiber\64bit_Windows\SysWOW64\kbdneo2.dll
- ${Else}
+ ${Else}
SetRegView 32
WriteRegStr HKEY_LOCAL_MACHINE "SYSTEM\CurrentControlSet\Control\Keyboard Layouts\b0000407" "Layout Text" "Deutsch (Neo 2.0 ergonomisch)"
WriteRegStr HKEY_LOCAL_MACHINE "SYSTEM\CurrentControlSet\Control\Keyboard Layouts\b0000407" "Layout File" "kbdneo2.dll"
@@ -142,19 +149,19 @@
file kbdneo2\Treiber\32bit_Windows\kbdneo2.dll
${EndIf}
- ;!insertmacro UAC_AsUser_Call Function makeKBDactive ${UAC_SYNCREGISTERS}
+ ;!insertmacro UAC_AsUser_Call Function makeKBDactive ${UAC_SYNCREGISTERS}
SectionEnd
-
-
+
+
Section /o "Neo-2.0-Treiber und AHK-Erweiterung" installiereKbdneoPlusAHK
SectionIn 1
SetOutPath "$INSTDIR"
- ;Zustatz Skript kopieren (immer als 32bit)
+;Zustatz Skript kopieren (immer als 32bit)
file kbdneo2\Treiber\AHK_für_kbdneo2\kbdneo_ahk.exe
- ;Erstellt eine Verknüpfung im Autostart-Ordner
+;Erstellt eine Verknüpfung im Autostart-Ordner
!insertmacro UAC_AsUser_Call Function goUserDir ${UAC_SYNCREGISTERS}
SetOutPath "$SYSDIR"
@@ -187,14 +194,14 @@
WriteRegStr HKEY_LOCAL_MACHINE "SYSTEM\CurrentControlSet\Control\Keyboard Layouts\b0000407" "Custom Language Display Name" "@%SystemRoot%\system32\kbdneo2.dll,-1100"
${EnableX64FSRedirection}
file kbdneo2\Treiber\32bit_Windows\kbdneo2.dll
-
+
${EndIf}
- ;!insertmacro UAC_AsUser_Call Function makeKBDactive ${UAC_SYNCREGISTERS}
+;!insertmacro UAC_AsUser_Call Function makeKBDactive ${UAC_SYNCREGISTERS}
SectionEnd
-
-
+
+
Section /o "Eigenständiges Neo2.0-AHK-Skript (NeoVars)" installiereAHK
SectionIn 3
SetOutPath "$INSTDIR"
@@ -203,29 +210,46 @@
WriteRegStr HKCU "Software\Neo 2.0" "" $INSTDIR
SectionEnd
-
-
-
+
+
+
;--------------------------------
; Functions
+ Function .onInit
+ StrCpy $pre_sel ${installiereKbdneoPlusAHK}
+ FunctionEnd
+
;nur ein Installationszweig auswählbar
Function .onSelChange
- !insertmacro StartRadioButtons $1
+ !insertmacro StartRadioButtons $pre_sel
!insertmacro RadioButton ${installiereKbdneoOhneAHK}
!insertmacro RadioButton ${installiereKbdneoPlusAHK}
!insertmacro RadioButton ${installiereAHK}
!insertmacro EndRadioButtons
FunctionEnd
-
-
+
+
+;Durch Erwerb der Adminrechte neu gestartet, dann Willkommens_Seite überspringen
+ Function preAdmin1
+ ${IfNot} ${AtLeastWinVista}
+ goto noSkip
+ ${EndIf}
+ userInfo::getAccountType
+ pop $R0
+ strCmp $R0 "Admin" +2
+ goto noSkip
+ StrCpy $pre_sel ${installiereKbdneoPlusAHK}
+ Abort
+ noSkip:
+ FunctionEnd
+
+
;UAC Zauberei
- Function .onInit
- StrCpy $1 ${installiereKbdneoPlusAHK}
-
+ Function preComp
uac_tryagain:
!insertmacro UAC_RunElevated
- #MessageBox mb_TopMost "0=$0 1=$1 2=$2 3=$3"
+;MessageBox mb_TopMost "0=$0 1=$1 2=$2 3=$3"
${Switch} $0
${Case} 0
${IfThen} $1 = 1 ${|} Quit ${|} ;we are the outer process, the inner process has done its work, we are done
@@ -233,12 +257,12 @@
${If} $1 = 3 ;RunAs completed successfully, but with a non-admin user
MessageBox mb_IconExclamation|mb_TopMost|mb_SetForeground "Dieser Installationsassistent benötigt Adminrechte, bitte erneut versuchen." /SD IDNO IDOK uac_tryagain IDNO 0
${EndIf}
- ;fall-through and die
+;fall-through and die
${Case} 1223 ;hier kommt der Ausstieg falls der User keine Adminrechte erwerben kann.
- MessageBox MB_YESNO|mb_IconStop|mb_TopMost|mb_SetForeground "Für die Installation des Windowstreibers werden Adminrechte benötigt. Mit NeoVars kann jedoch auch ohne Adminrechte das Neo2.0-Tastaturlayout installiert werden. Bitte die Hinweise auf der Website beachten. Soll Neo-Vars gestartet werden?" IDYES gogogo
- ExecShell "open" "http://neo-layout.org/windows"
- Quit
- gogogo:
+ ;MessageBox MB_YESNO|mb_IconStop|mb_TopMost|mb_SetForeground "Für die Installation des Windowstreibers werden Adminrechte benötigt. Mit NeoVars kann jedoch auch ohne Adminrechte das Neo2.0-Tastaturlayout installiert werden. Bitte die Hinweise auf der Website beachten. Soll Neo-Vars gestartet werden?" IDYES gogogo
+ ;ExecShell "open" "http://neo-layout.org/windows"
+ ;Quit
+ ;gogogo:
ExecShell "open" http://neo-layout.org/windows
goto end
${Case} 1062
@@ -249,23 +273,22 @@
Quit
${EndSwitch}
end:
- FunctionEnd
-
-
;Sperrt ohne Adminrechte alles außer NeoVars
- Function preComp
+GetDlgItem $DlgItem $HWNDPARENT 3 ; Back button
+EnableWindow $DlgItem 0
userInfo::getAccountType
pop $R0
- strCmp $R0 "Admin" +5 ;falls Admin hüpf 5 Commandozeilen weiter
- ;wenn kein Admin wird das hier angezeigt:
- messageBox MB_OK "›$R0‹, Optionen mit Admin-Rechten werden deaktiviert."
- SectionSetFlags ${installiereKbdneoPlusAHK} ${SF_RO} ;Installationsarten mit Adminrechten werden gesperrt
- SectionSetFlags ${installiereKbdneoOhneAHK} ${SF_RO} ;Installationsarten mit Adminrechten werden gesperrt
- return
- ;messageBox MB_OK "Wir sind Admin"
+ strCmp $R0 "Admin" +6 ;falls Admin hüpf 6 Commandozeilen weiter
+;wenn kein Admin wird das hier angezeigt:
+ messageBox MB_OK "Nur $R0-Rechte. Ohne Adminrechte ist nur der NeoVars-Treiber verfügbar."
+ SectionSetFlags ${installiereKbdneoPlusAHK} ${SF_RO} ;Installationsarten mit Adminrechten werden gesperrt
+ SectionSetFlags ${installiereKbdneoOhneAHK} ${SF_RO} ;Installationsarten mit Adminrechten werden gesperrt
+ SectionSetFlags ${installiereAHK} ${SF_SELECTED}
+ return
+;messageBox MB_OK "Wir sind Admin"
FunctionEnd
-
-
+
+
;Überspringt die Directory-Seite falls kein AHK installiert wird
Function leaveComp
SectionGetFlags ${installiereKbdneoOhneAHK} $0
@@ -274,56 +297,58 @@
push "skip components" ;schiebt es auf den Stack
showDir:
FunctionEnd
-
+
Function preDir
pop $R0 ;holt es sich vom Stack zurück
StrCmp "$R0" "skip components" 0 end ;vergleicht es und springt zu Ende wenn es nicht passt
abort ;hat gepasst, Components-Seite wird übersprungen.
end:
FunctionEnd
-
-
+
+
;Verschafft etwas Zeit zum Kucken
Function leaveInst
- sleep 3000 ;Ein bisschen Pause, damit man was sieht.
+ sleep 1500 ;Ein bisschen Pause, damit man was sieht.
FunctionEnd
;Layout beim User Aktivieren (hoffentlich ;)
-; Function makeKBDactive
-; System::Call "user32::LoadKeyboardLayout(t "b0000407",${KLF_ACTIVATE})"
-; FunctionEnd
-
-
+;Function makeKBDactive
+; System::Call "user32::LoadKeyboardLayout(t "b0000407",i 0x00000001) i .r1 ?e"
+; Pop $2
+; MessageBox mb_TopMost "0:$0 1:$1 2:$2 3:$3"
+;FunctionEnd
+
+
;Datei beim User schreiben, obwohl als Admin eingeloggt
Function goUserDir
createShortCut "$SMPROGRAMS\Startup\AHK für kbdneo.lnk" "$INSTDIR\kbdneo_ahk.exe"
FunctionEnd
-
-
-
+
+
+
;--------------------------------
;Beschreibung der Installationstypen
;LangsStrings (nur Deutsch)
LangString DESC_installiereKbdneoPlusAHK ${LANG_GERMAN} "System32-Test und bel. Ordner (hier sollten immer Adminrechte angefordert werden)"
LangString DESC_installiereKbdneoOhneAHK ${LANG_GERMAN} "nur System32-Test (hier sollten immer Adminrechte angefordert werden)"
LangString DESC_installiereAHK ${LANG_GERMAN} "Installiert den Neo2.0-AHK-Standalone-Treiber Neo-Vars (keine Adminrechte nötig)"
-
-
+
+
;LangsStrings den Sections zuordnen
!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${installiereKbdneoPlusAHK} $(DESC_installiereKbdneoPlusAHK)
!insertmacro MUI_DESCRIPTION_TEXT ${installiereKbdneoOhneAHK} $(DESC_installiereKbdneoOhneAHK)
!insertmacro MUI_DESCRIPTION_TEXT ${installiereAHK} $(DESC_installiereAHK)
!insertmacro MUI_FUNCTION_DESCRIPTION_END
-
-
-
+
+
+
;---------------------------------
;Dateieigenschaften des Installers
-
-VIAddVersionKey /LANG=${LANG_GERMAN} "ProductName" "Neo 2.0"
-VIAddVersionKey /LANG=${LANG_GERMAN} "Comments" "Buy me a Caffè /;)"
-VIAddVersionKey /LANG=${LANG_GERMAN} "FileDescription" "Neo 2.0 Installationsassistent"
-VIAddVersionKey /LANG=${LANG_GERMAN} "FileVersion" "${ZEIT}"
-VIProductVersion "2.0.${ZEIT}" \ No newline at end of file
+
+ VIAddVersionKey /LANG=${LANG_GERMAN} "ProductName" "Neo 2.0"
+ VIAddVersionKey /LANG=${LANG_GERMAN} "Comments" "Buy me a Caffè /;)"
+ VIAddVersionKey /LANG=${LANG_GERMAN} "FileDescription" "Neo 2.0 Installationsassistent"
+ VIAddVersionKey /LANG=${LANG_GERMAN} "FileVersion" "${ZEIT}"
+ VIProductVersion "2.0.${ZEIT}" \ No newline at end of file
diff --git a/windows/Neo2.0_setup.exe b/windows/Neo2.0_setup.exe
index 1102e82..dce219d 100644
--- a/windows/Neo2.0_setup.exe
+++ b/windows/Neo2.0_setup.exe
Binary files differ