diff --git a/source/vcpp/buildEnv/ac.nsi b/source/vcpp/buildEnv/ac.nsi index 75138b5f..829951c9 100644 --- a/source/vcpp/buildEnv/ac.nsi +++ b/source/vcpp/buildEnv/ac.nsi @@ -1,5 +1,6 @@ !include MUI.nsh !include Sections.nsh +!include FileFunc.nsh ## TOOLS @@ -55,7 +56,7 @@ SetCompressor /SOLID lzma !define AC_FULLVERSIONINT "1.2.0.2" !define AC_FULLVERSION "v${AC_FULLVERSIONINT}" !define AC_SHORTNAME "AssaultCube" -!define AC_FULLNAME "AssaultCube ${AC_FULLVERSION}" +!define AC_FULLNAME "AssaultCube ${AC_FULLVERSIONINT}" !define AC_URLPROTOCOL "assaultcube" !define AC_MAJORVERSIONINT 1 !define AC_MINORVERSIONINT 2 @@ -69,14 +70,25 @@ VAR StartMenuFolder OutFile "AssaultCube_${AC_FULLVERSION}.exe" InstallDir "$PROGRAMFILES\${AC_SHORTNAME}" InstallDirRegKey HKLM "Software\${AC_SHORTNAME}" "" +!define ARP "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" RequestExecutionLevel admin ; require admin in Vista/7 +; Variables +Var EstimatedSize +Var Day +Var Month +Var Year +Var DoW +Var Hour +Var Minute +Var Second + Function LeaveDirectory IfFileExists $INSTDIR\assaultcube.bat 0 true MessageBox MB_YESNO|MB_ICONQUESTION \ - "The directory $INSTDIR already exists. \ - $\nPrevious AssaultCube version in this directory will be uninstalled, if you will install there new version. \ - $\n$\nDo you want to continue? Press 'No' to install AssaultCube in different directory." \ + "The folder $INSTDIR already exists. \ + $\nThe previous AssaultCube version in this folder will be uninstalled if you install the new version here. \ + $\n$\nDo you want to continue? Click 'No' to install AssaultCube in a different folder." \ IDYES true IDNO false true: ClearErrors @@ -343,7 +355,7 @@ Function WelcomePage SendMessage $HEADLINE ${WM_SETFONT} $HEADLINE_FONT 0 - nsDialogs::CreateControl /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 120u 32u -130u -32u "This wizard will guide you through the installation of AssaultCube.$\r$\n$\r$\nIt is recommended that you close all other applications before starting Setup. This will make it possible to update relevant system files without having to reboot your computer.$\r$\n$\r$\nClick next to continue." + nsDialogs::CreateControl /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 120u 32u -130u -32u "This wizard will guide you through the installation of AssaultCube ${AC_FULLVERSIONINT}.$\r$\n$\r$\nClick Next to continue." Pop $TEXT SetCtlColors $DIALOG "" 0xffffff @@ -400,7 +412,7 @@ FunctionEnd ; Installer Sections -Section "AssaultCube ${AC_FULLVERSION}" AC +Section "AssaultCube ${AC_FULLVERSIONINT}" AC SectionIn RO @@ -411,18 +423,28 @@ Section "AssaultCube ${AC_FULLVERSION}" AC WriteRegStr HKLM "Software\${AC_SHORTNAME}" "" $INSTDIR WriteRegStr HKLM "Software\${AC_SHORTNAME}" "version" ${AC_FULLVERSIONINT} + ; Determine installed size (will include all files, even user placed in $INSTDIR!) + ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2 + IntFmt $EstimatedSize "0x%08X" $0 + + ${GetTime} "" "LS" $Day $Month $Year $DoW $Hour $Minute $Second + ; Create uninstaller - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" "DisplayName" "${AC_FULLNAME}" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" "UninstallString" '"$INSTDIR\Uninstall.exe"' - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" "DisplayIcon" '"$INSTDIR\docs\images\favicon.ico"' - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" "HelpLink" "$INSTDIR\README.html" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" "URLInfoAbout" "http://assault.cubers.net" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" "URLUpdateInfo" "http://assault.cubers.net/download.html" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" "DisplayVersion" "${AC_FULLVERSIONINT}" - WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" "VersionMajor" ${AC_MAJORVERSIONINT} - WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" "VersionMinor" ${AC_MINORVERSIONINT} - WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" "NoModify" 1 - WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" "NoRepair" 1 + WriteRegStr HKLM "${ARP}" "DisplayName" "${AC_FULLNAME}" + WriteRegStr HKLM "${ARP}" "Publisher" "Rabid Viper Productions" + WriteRegStr HKLM "${ARP}" "InstallDate" "$Year$Month$Day" + WriteRegStr HKLM "${ARP}" "InstallLocation" "$INSTDIR" + WriteRegStr HKLM "${ARP}" "UninstallString" "$INSTDIR\Uninstall.exe" + WriteRegStr HKLM "${ARP}" "DisplayIcon" "$INSTDIR\docs\images\favicon.ico" + WriteRegStr HKLM "${ARP}" "HelpLink" "$INSTDIR\README.html" + WriteRegStr HKLM "${ARP}" "URLInfoAbout" "http://assault.cubers.net" + WriteRegStr HKLM "${ARP}" "URLUpdateInfo" "http://assault.cubers.net/download.html" + WriteRegStr HKLM "${ARP}" "DisplayVersion" "${AC_FULLVERSIONINT}" + WriteRegDWORD HKLM "${ARP}" "EstimatedSize" "$EstimatedSize" + WriteRegDWORD HKLM "${ARP}" "VersionMajor" ${AC_MAJORVERSIONINT} + WriteRegDWORD HKLM "${ARP}" "VersionMinor" ${AC_MINORVERSIONINT} + WriteRegDWORD HKLM "${ARP}" "NoModify" 1 + WriteRegDWORD HKLM "${ARP}" "NoRepair" 1 WriteUninstaller "$INSTDIR\Uninstall.exe" @@ -488,6 +510,7 @@ Section "Uninstall" RMDir "$INSTDIR\mods" RMDir /r "$INSTDIR\packages" RMDir "$INSTDIR\screenshots" + RMDir /r "$INSTDIR\scripts" Delete "$INSTDIR\assaultcube*.bat" Delete "$INSTDIR\changelog.txt" Delete "$INSTDIR\README*" @@ -511,7 +534,7 @@ Section "Uninstall" ; delete reg keys - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" + DeleteRegKey HKLM "${ARP}" DeleteRegKey HKLM "SOFTWARE\${AC_SHORTNAME}" DeleteRegKey HKCR "${AC_URLPROTOCOL}" diff --git a/source/vcpp/buildEnv/ac_patch.nsi b/source/vcpp/buildEnv/ac_patch.nsi index d18833e6..71581a74 100644 --- a/source/vcpp/buildEnv/ac_patch.nsi +++ b/source/vcpp/buildEnv/ac_patch.nsi @@ -1,5 +1,6 @@ !include MUI.nsh !include Sections.nsh +!include FileFunc.nsh ## TOOLS @@ -46,21 +47,33 @@ FunctionEnd SetCompressor /SOLID lzma -!define CURPATH ".\" ; CHANGE ME -!define AC_FULLVERSION "v1.2.0.2" +!define CURPATH ".\" ; must include the installer graphics and the AC_NEWPATCHDIR directory !define AC_FULLVERSIONINT "1.2.0.2" +!define AC_FULLVERSION "v${AC_FULLVERSIONINT}" !define AC_SHORTNAME "AssaultCube" -!define AC_FULLNAME "AssaultCube v1.2.0.2" -!define AC_FULLNAMESAVE "AssaultCube_v1.2.0.2" +!define AC_FULLNAME "AssaultCube ${AC_FULLVERSIONINT}" +!define AC_FULLNAMESAVE "AssaultCube_${AC_FULLVERSION}" !define AC_MAJORVERSIONINT 1 !define AC_MINORVERSIONINT 2 +!define AC_NEWPATCHDIR "AC_patch" ; directory with prepared new AC patch -Name "AssaultCube" +Name "${AC_SHORTNAME}" OutFile "AssaultCube_${AC_FULLVERSION}-Update.exe" InstallDir "$PROGRAMFILES\${AC_SHORTNAME}" InstallDirRegKey HKLM "Software\${AC_SHORTNAME}" "" +!define ARP "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" RequestExecutionLevel admin ; require admin in Vista/7 +; Variables +Var EstimatedSize +Var Day +Var Month +Var Year +Var DoW +Var Hour +Var Minute +Var Second + ; Interface Configuration !define MUI_HEADERIMAGE @@ -70,9 +83,7 @@ RequestExecutionLevel admin ; require admin in Vista/7 XPStyle on Icon "${CURPATH}\icon.ico" -UninstallIcon "${CURPATH}\icon.ico" !define MUI_ICON "${CURPATH}\icon.ico" -!define MUI_UNICON "${CURPATH}\icon.ico" ; Pages @@ -83,12 +94,8 @@ Page custom WelcomePage !insertmacro MUI_PAGE_INSTFILES Page custom FinishPage -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_INSTFILES - !insertmacro MUI_LANGUAGE "English" - ; Custom Welcome Page !define WS_CHILD 0x40000000 @@ -290,7 +297,7 @@ Function WelcomePage SendMessage $HEADLINE ${WM_SETFONT} $HEADLINE_FONT 0 - nsDialogs::CreateControl /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 120u 32u -130u -32u "This wizard will guide you through the update of AssaultCube.$\r$\n$\r$\nIt is recommended that you close all other applications before starting Setup. This will make it possible to update relevant system files without having to reboot your computer.$\r$\n$\r$\nClick next to continue." + nsDialogs::CreateControl /NOUNLOAD STATIC ${WS_VISIBLE}|${WS_CHILD}|${WS_CLIPSIBLINGS} 0 120u 32u -130u -32u "This wizard will guide you through the update of AssaultCube ${AC_FULLVERSIONINT}.$\r$\n$\r$\nClick Next to continue." Pop $TEXT SetCtlColors $DIALOG "" 0xffffff @@ -315,6 +322,11 @@ Function WelcomePage Quit success: + ClearErrors + ReadRegStr $0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${AC_SHORTNAME}" "InstallLocation" + ${IfNot} ${Errors} + StrCpy $INSTDIR $0 + ${EndIf} FunctionEnd @@ -356,15 +368,23 @@ FunctionEnd ; Installer Sections -Section "AssaultCube ${AC_FULLVERSION} Update" PATCH +Section "AssaultCube ${AC_FULLVERSIONINT} Update" PATCH SectionIn RO - - WriteRegStr HKLM "Software\${AC_SHORTNAME}" "version" ${AC_FULLVERSIONINT} SetOutPath "$INSTDIR" - File /r AC_patch\*.* + File /r "${AC_NEWPATCHDIR}\*.*" + + ; Determine installed size (will include all files, even user placed in $INSTDIR!) + ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2 + IntFmt $EstimatedSize "0x%08X" $0 + + ${GetTime} "" "LS" $Day $Month $Year $DoW $Hour $Minute $Second + + WriteRegStr HKLM "${ARP}" "DisplayVersion" "${AC_FULLVERSIONINT}" + WriteRegStr HKLM "${ARP}" "InstallDate" "$Year$Month$Day" + WriteRegDWORD HKLM "${ARP}" "EstimatedSize" "$EstimatedSize" SectionEnd