From 829cf90989c0977cd0c44d25829ce52fc94496a4 Mon Sep 17 00:00:00 2001 From: florian Date: Thu, 19 May 2011 15:03:09 +0000 Subject: Installer aufgefrischt (Neo-Icon, Logo, Adminrechte-Aufruf verbessert. git-svn-id: https://svn.neo-layout.org@2393 b9310e46-f624-0410-8ea1-cfbb3a30dc96 --- windows/Neo2.0_installer.nsi | 205 ++++++++++++++++++++++++------------------- windows/Neo2.0_setup.exe | Bin 852842 -> 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 Binary files a/windows/Neo2.0_setup.exe and b/windows/Neo2.0_setup.exe differ -- cgit v1.2.3