From c6401fab7c5f1daf36cdb3f99c640477c19bdc01 Mon Sep 17 00:00:00 2001 From: sr55 Date: Sat, 24 Mar 2012 19:18:24 +0000 Subject: WinGui: (WPF) Setup all the Installer (Nightly and Release, x86/64) and Build scripts for the new UI. git-svn-id: svn://svn.handbrake.fr/HandBrake/trunk@4533 b64f7644-9d1e-0410-96f1-a4d463321fa5 --- .../HandBrake.ApplicationServices.csproj | 2 - win/CS/HandBrake10.sln | 1 + win/CS/HandBrakeCS.csproj | 1 - win/CS/HandBrakeWPF/HandBrakeWPF.csproj | 7 +- win/CS/HandBrakeWPF/Installer/Installer.nsi | 326 ++++++++++++++++++++ win/CS/HandBrakeWPF/Installer/Installer64.nsi | 329 +++++++++++++++++++++ win/CS/HandBrakeWPF/Installer/MakeAlpha.nsi.tmpl | 168 ----------- win/CS/HandBrakeWPF/Installer/MakeNightly.nsi.tmpl | 326 ++++++++++++++++++++ .../HandBrakeWPF/Installer/MakeNightly64.nsi.tmpl | 326 ++++++++++++++++++++ win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs | 11 +- win/CS/HandBrakeWPF/README BEFORE WRITING CODE.txt | 7 - win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs | 2 +- win/CS/build.xml | 16 - win/CS/build2.xml | 76 +++++ 14 files changed, 1398 insertions(+), 200 deletions(-) create mode 100644 win/CS/HandBrakeWPF/Installer/Installer.nsi create mode 100644 win/CS/HandBrakeWPF/Installer/Installer64.nsi delete mode 100644 win/CS/HandBrakeWPF/Installer/MakeAlpha.nsi.tmpl create mode 100644 win/CS/HandBrakeWPF/Installer/MakeNightly.nsi.tmpl create mode 100644 win/CS/HandBrakeWPF/Installer/MakeNightly64.nsi.tmpl delete mode 100644 win/CS/HandBrakeWPF/README BEFORE WRITING CODE.txt create mode 100644 win/CS/build2.xml (limited to 'win/CS') diff --git a/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj b/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj index 4cee59f78..406fdabd8 100644 --- a/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj +++ b/win/CS/HandBrake.ApplicationServices/HandBrake.ApplicationServices.csproj @@ -198,8 +198,6 @@ --> - subwcrev.exe "$(ProjectDir)." "$(ProjectDir)Properties\AssemblyInfo.cs.tmpl" "$(ProjectDir)Properties\AssemblyInfo.cs" - subwcrev.exe "$(ProjectDir)." "$(ProjectDir)Properties\AssemblyInfo.cs.tmpl" "$(ProjectDir)Properties\AssemblyInfo.cs" \ No newline at end of file diff --git a/win/CS/HandBrake10.sln b/win/CS/HandBrake10.sln index fb031213b..77462c94f 100644 --- a/win/CS/HandBrake10.sln +++ b/win/CS/HandBrake10.sln @@ -12,6 +12,7 @@ EndProject Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{5CB7BC74-449C-4E95-98AB-E1E4387E514B}" ProjectSection(SolutionItems) = preProject build.xml = build.xml + build2.xml = build2.xml EndProjectSection EndProject Global diff --git a/win/CS/HandBrakeCS.csproj b/win/CS/HandBrakeCS.csproj index c2e0f74aa..dddd46cd3 100644 --- a/win/CS/HandBrakeCS.csproj +++ b/win/CS/HandBrakeCS.csproj @@ -316,7 +316,6 @@ - diff --git a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj index 16989a264..3d8fb826f 100644 --- a/win/CS/HandBrakeWPF/HandBrakeWPF.csproj +++ b/win/CS/HandBrakeWPF/HandBrakeWPF.csproj @@ -9,7 +9,7 @@ WinExe Properties HandBrakeWPF - HandBrakeWPF + HandBrake v4.0 Client 512 @@ -216,7 +216,10 @@ Resources.Designer.cs - + + + + SettingsSingleFileGenerator diff --git a/win/CS/HandBrakeWPF/Installer/Installer.nsi b/win/CS/HandBrakeWPF/Installer/Installer.nsi new file mode 100644 index 000000000..c19c0e2ab --- /dev/null +++ b/win/CS/HandBrakeWPF/Installer/Installer.nsi @@ -0,0 +1,326 @@ +/* Resources.Designer.cs $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +; Script generated by the HM NIS Edit Script Wizard. + +; HM NIS Edit Wizard helper defines +!define PRODUCT_NAME "HandBrake" +!define PRODUCT_VERSION "0.9.7" +!define PRODUCT_VERSION_NUMBER "0.9.7" +!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Handbrake.exe" +!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" +!define PRODUCT_UNINST_ROOT_KEY "HKLM" + +;Required .NET framework +!define MIN_FRA_MAJOR "4" +!define MIN_FRA_MINOR "0" +!define MIN_FRA_BUILD "*" + +SetCompressor lzma + +; MUI 1.67 compatible ------ +!include "MUI.nsh" + +; MUI Settings +!define MUI_ABORTWARNING +!define MUI_ICON "handbrakepineapple.ico" +!define MUI_UNICON "handbrakepineapple.ico" + +; Welcome page +!insertmacro MUI_PAGE_WELCOME +; License page +!insertmacro MUI_PAGE_LICENSE "doc\COPYING" +; Directory page +!insertmacro MUI_PAGE_DIRECTORY +; Instfiles page +!insertmacro MUI_PAGE_INSTFILES +; Finish page +;!define MUI_FINISHPAGE_RUN "$INSTDIR\Handbrake.exe" +!insertmacro MUI_PAGE_FINISH + +; Uninstaller pages +!insertmacro MUI_UNPAGE_INSTFILES + +; Language files +!insertmacro MUI_LANGUAGE "English" + +; MUI end ------ + +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile "HandBrake-${PRODUCT_VERSION_NUMBER}-Win_GUI.exe" + +!include WordFunc.nsh +!insertmacro VersionCompare +!include LogicLib.nsh + +InstallDir "$PROGRAMFILES\Handbrake" +InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" +ShowInstDetails show +ShowUnInstDetails show + +Var InstallDotNET + +Function .onInit + + ; Begin Only allow one version + System::Call 'kernel32::CreateMutexA(i 0, i 0, t "myMutex") i .r1 ?e' + Pop $R0 + + StrCmp $R0 0 +3 + MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running." /SD IDOK + Abort + + ;Remove previous version + ReadRegStr $R0 HKLM \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}\" \ + "UninstallString" + StrCmp $R0 "" done + + MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ + "${PRODUCT_NAME} is already installed. $\n$\nClick `OK` to remove the \ + previous version or `Cancel` to continue." /SD IDOK \ + IDOK uninst + goto done + + ;Run the uninstaller + uninst: + IfSilent +3 + Exec $INSTDIR\uninst.exe + goto done + Exec '"$INSTDIR\uninst.exe" /S' + done: +FunctionEnd + +Section "Handbrake" SEC01 + SetOutPath "$INSTDIR" + SetOverwrite ifnewer + + ; Begin Check .NET version + StrCpy $InstallDotNET "No" + Call CheckFramework + StrCmp $0 "1" +3 + StrCpy $InstallDotNET "Yes" + MessageBox MB_OK|MB_ICONINFORMATION "${PRODUCT_NAME} requires that the .NET Framework 4.0 Client Profile is installed. The latest .NET Framework will be downloaded and installed automatically during installation of ${PRODUCT_NAME}." /SD IDOK + Pop $0 + + ; Get .NET if required + ${If} $InstallDotNET == "Yes" + SetDetailsView hide + inetc::get /caption "Downloading .NET Framework 4.0" /canceltext "Cancel" "http://www.microsoft.com/downloads/info.aspx?na=41&srcfamilyid=e5ad0459-cbcc-4b4f-97b6-fb17111cf544&srcdisplaylang=en&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f2%2f562A10F9-C9F4-4313-A044-9C94E0A8FAC8%2fdotNetFx40_Client_x86_x64.exe" "$INSTDIR\dotnetfx.exe" /end + Pop $1 + + ${If} $1 != "OK" + Delete "$INSTDIR\dotnetfx.exe" + Abort "Installation cancelled, ${PRODUCT_NAME} requires the .NET 4.0 Framework" + ${EndIf} + + ExecWait "$INSTDIR\dotnetfx.exe" + Delete "$INSTDIR\dotnetfx.exe" + + SetDetailsView show + ${EndIf} + + ; Install Files + File "*.exe" + CreateDirectory "$SMPROGRAMS\Handbrake" + CreateShortCut "$SMPROGRAMS\Handbrake\Handbrake.lnk" "$INSTDIR\Handbrake.exe" + CreateShortCut "$DESKTOP\Handbrake.lnk" "$INSTDIR\Handbrake.exe" + File "*.dll" + File "*.config" + File "*.xml" + File "*.pdb" + + ; Copy the standard doc set into the doc folder + SetOutPath "$INSTDIR\doc" + SetOverwrite ifnewer + File "doc\*.*" + + ; Copy the standard fonts config set into the fonts folder + SetOutPath "$INSTDIR\fonts" + SetOverwrite ifnewer + File /r "fonts\*.*" +SectionEnd + +Section -AdditionalIcons + CreateShortCut "$SMPROGRAMS\Handbrake\Uninstall.lnk" "$INSTDIR\uninst.exe" +SectionEnd + +Section -Post + WriteUninstaller "$INSTDIR\uninst.exe" + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\Handbrake.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\Handbrake.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" +SectionEnd + + +Function un.onUninstSuccess + HideWindow + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." /SD IDOK +FunctionEnd + +Function un.onInit + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" /SD IDYES IDYES +2 + Abort +FunctionEnd + +Section Uninstall + Delete "$INSTDIR\uninst.exe" + + Delete "$INSTDIR\*.*" + Delete "$INSTDIR\doc\*.*" + Delete "$INSTDIR\fonts\*.*" + Delete "$INSTDIR\fonts\conf.d\*.*" + Delete "$INSTDIR\fonts\conf.avail\*.*" + RMDir "$INSTDIR\doc" + RMDIR "$INSTDIR\fonts\conf.d" + RMDIR "$INSTDIR\fonts\conf.avail" + RMDIR "$INSTDIR\fonts" + Delete "$SMPROGRAMS\Handbrake\Uninstall.lnk" + Delete "$DESKTOP\Handbrake.lnk" + Delete "$SMPROGRAMS\Handbrake\Handbrake.lnk" + RMDir "$SMPROGRAMS\Handbrake" + RMDir "$INSTDIR" + + DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" + DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" + SetAutoClose true +SectionEnd + +;Check for .NET framework +Function CheckFrameWork + + ;Save the variables in case something else is using them + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + Push $R5 + Push $R6 + Push $R7 + Push $R8 + + StrCpy $R5 "0" + StrCpy $R6 "0" + StrCpy $R7 "0" + StrCpy $R8 "0.0.0" + StrCpy $0 0 + + loop: + + ;Get each sub key under "SOFTWARE\Microsoft\NET Framework Setup\NDP" + EnumRegKey $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP" $0 + StrCmp $1 "" done ;jump to end if no more registry keys + IntOp $0 $0 + 1 + StrCpy $2 $1 1 ;Cut off the first character + StrCpy $3 $1 "" 1 ;Remainder of string + + ;Loop if first character is not a 'v' + StrCmpS $2 "v" start_parse loop + + ;Parse the string + start_parse: + StrCpy $R1 "" + StrCpy $R2 "" + StrCpy $R3 "" + StrCpy $R4 $3 + + StrCpy $4 1 + + parse: + StrCmp $3 "" parse_done ;If string is empty, we are finished + StrCpy $2 $3 1 ;Cut off the first character + StrCpy $3 $3 "" 1 ;Remainder of string + StrCmp $2 "." is_dot not_dot ;Move to next part if it's a dot + + is_dot: + IntOp $4 $4 + 1 ; Move to the next section + goto parse ;Carry on parsing + + not_dot: + IntCmp $4 1 major_ver + IntCmp $4 2 minor_ver + IntCmp $4 3 build_ver + IntCmp $4 4 parse_done + + major_ver: + StrCpy $R1 $R1$2 + goto parse ;Carry on parsing + + minor_ver: + StrCpy $R2 $R2$2 + goto parse ;Carry on parsing + + build_ver: + StrCpy $R3 $R3$2 + goto parse ;Carry on parsing + + parse_done: + + IntCmp $R1 $R5 this_major_same loop this_major_more + this_major_more: + StrCpy $R5 $R1 + StrCpy $R6 $R2 + StrCpy $R7 $R3 + StrCpy $R8 $R4 + + goto loop + + this_major_same: + IntCmp $R2 $R6 this_minor_same loop this_minor_more + this_minor_more: + StrCpy $R6 $R2 + StrCpy $R7 R3 + StrCpy $R8 $R4 + goto loop + + this_minor_same: + IntCmp $R3 $R7 loop loop this_build_more + this_build_more: + StrCpy $R7 $R3 + StrCpy $R8 $R4 + goto loop + + done: + + ;Have we got the framework we need? + IntCmp $R5 ${MIN_FRA_MAJOR} max_major_same fail OK + max_major_same: + IntCmp $R6 ${MIN_FRA_MINOR} max_minor_same fail OK + max_minor_same: + IntCmp $R7 ${MIN_FRA_BUILD} OK fail OK + + ;Version on machine is greater than what we need + OK: + StrCpy $0 "1" + goto end + + fail: + StrCmp $R8 "0.0.0" end + + + end: + + ;Pop the variables we pushed earlier + Pop $R8 + Pop $R7 + Pop $R6 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Pop $4 + Pop $3 + Pop $2 + Pop $1 +FunctionEnd \ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Installer/Installer64.nsi b/win/CS/HandBrakeWPF/Installer/Installer64.nsi new file mode 100644 index 000000000..9e6ff4872 --- /dev/null +++ b/win/CS/HandBrakeWPF/Installer/Installer64.nsi @@ -0,0 +1,329 @@ +/* Resources.Designer.cs $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +; Script generated by the HM NIS Edit Script Wizard. + +; HM NIS Edit Wizard helper defines +!define PRODUCT_NAME "HandBrake" +!define PRODUCT_VERSION "0.9.7" +!define PRODUCT_VERSION_NUMBER "0.9.7" +!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Handbrake.exe" +!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" +!define PRODUCT_UNINST_ROOT_KEY "HKLM" + +;Required .NET framework +!define MIN_FRA_MAJOR "4" +!define MIN_FRA_MINOR "0" +!define MIN_FRA_BUILD "*" + +SetCompressor lzma + +; MUI 1.67 compatible ------ +!include "MUI.nsh" + +; MUI Settings +!define MUI_ABORTWARNING +!define MUI_ICON "handbrakepineapple.ico" +!define MUI_UNICON "handbrakepineapple.ico" + +; Welcome page +!insertmacro MUI_PAGE_WELCOME +; License page +!insertmacro MUI_PAGE_LICENSE "doc\COPYING" +; Directory page +!insertmacro MUI_PAGE_DIRECTORY +; Instfiles page +!insertmacro MUI_PAGE_INSTFILES +; Finish page +;!define MUI_FINISHPAGE_RUN "$INSTDIR\Handbrake.exe" +!insertmacro MUI_PAGE_FINISH + +; Uninstaller pages +!insertmacro MUI_UNPAGE_INSTFILES + +; Language files +!insertmacro MUI_LANGUAGE "English" + +; MUI end ------ + +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile "HandBrake-${PRODUCT_VERSION_NUMBER}-Win_GUI.exe" + +!include WordFunc.nsh +!insertmacro VersionCompare +!include LogicLib.nsh + +InstallDir "$PROGRAMFILES64\Handbrake" +InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" +ShowInstDetails show +ShowUnInstDetails show + +Var InstallDotNET + +Function .onInit + + ; Begin Only allow one version + System::Call 'kernel32::CreateMutexA(i 0, i 0, t "myMutex") i .r1 ?e' + Pop $R0 + + StrCmp $R0 0 +3 + MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running." /SD IDOK + Abort + + ;Remove previous version + ReadRegStr $R0 HKLM \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}\" \ + "UninstallString" + StrCmp $R0 "" done + + MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ + "${PRODUCT_NAME} is already installed. $\n$\nClick `OK` to remove the \ + previous version or `Cancel` to continue." /SD IDOK \ + IDOK uninst + goto done + + ;Run the uninstaller + uninst: + IfSilent +3 + Exec $INSTDIR\uninst.exe + goto done + Exec '"$INSTDIR\uninst.exe" /S' + done: +FunctionEnd + +Section "Handbrake" SEC01 + SetOutPath "$INSTDIR" + SetOverwrite ifnewer + + ; Begin Check .NET version + StrCpy $InstallDotNET "No" + Call CheckFramework + StrCmp $0 "1" +3 + StrCpy $InstallDotNET "Yes" + MessageBox MB_OK|MB_ICONINFORMATION "${PRODUCT_NAME} requires that the .NET Framework 4.0 Client Profile is installed. The latest .NET Framework will be downloaded and installed automatically during installation of ${PRODUCT_NAME}." /SD IDOK + Pop $0 + + ; Get .NET if required + ${If} $InstallDotNET == "Yes" + SetDetailsView hide + inetc::get /caption "Downloading .NET Framework 4.0" /canceltext "Cancel" "http://www.microsoft.com/downloads/info.aspx?na=41&srcfamilyid=e5ad0459-cbcc-4b4f-97b6-fb17111cf544&srcdisplaylang=en&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f2%2f562A10F9-C9F4-4313-A044-9C94E0A8FAC8%2fdotNetFx40_Client_x86_x64.exe" "$INSTDIR\dotnetfx.exe" /end + Pop $1 + + ${If} $1 != "OK" + Delete "$INSTDIR\dotnetfx.exe" + Abort "Installation cancelled, ${PRODUCT_NAME} requires the .NET 4.0 Framework" + ${EndIf} + + ExecWait "$INSTDIR\dotnetfx.exe" + Delete "$INSTDIR\dotnetfx.exe" + + SetDetailsView show + ${EndIf} + + ; Install Files + File "Handbrake.exe" + File "HandBrakeCLI.exe" + CreateDirectory "$SMPROGRAMS\Handbrake" + CreateShortCut "$SMPROGRAMS\Handbrake\Handbrake.lnk" "$INSTDIR\Handbrake.exe" + CreateShortCut "$DESKTOP\Handbrake.lnk" "$INSTDIR\Handbrake.exe" + File "*.dll" + File "*.config" + File "*.xml" + File "*.pdb" + + ; Copy the standard doc set into the doc folder + SetOutPath "$INSTDIR\doc" + SetOverwrite ifnewer + File "doc\*.*" + + ; Copy the standard fonts config set into the fonts folder + SetOutPath "$INSTDIR\fonts" + SetOverwrite ifnewer + File /r "fonts\*.*" + + +SectionEnd + +Section -AdditionalIcons + CreateShortCut "$SMPROGRAMS\Handbrake\Uninstall.lnk" "$INSTDIR\uninst.exe" +SectionEnd + +Section -Post + WriteUninstaller "$INSTDIR\uninst.exe" + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\Handbrake.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\Handbrake.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" +SectionEnd + + +Function un.onUninstSuccess + HideWindow + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." /SD IDOK +FunctionEnd + +Function un.onInit + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" /SD IDYES IDYES +2 + Abort +FunctionEnd + +Section Uninstall + Delete "$INSTDIR\uninst.exe" + + Delete "$INSTDIR\*.*" + Delete "$INSTDIR\doc\*.*" + Delete "$INSTDIR\fonts\*.*" + Delete "$INSTDIR\fonts\conf.d\*.*" + Delete "$INSTDIR\fonts\conf.avail\*.*" + RMDir "$INSTDIR\doc" + RMDIR "$INSTDIR\fonts\conf.d" + RMDIR "$INSTDIR\fonts\conf.avail" + RMDIR "$INSTDIR\fonts" + Delete "$SMPROGRAMS\Handbrake\Uninstall.lnk" + Delete "$DESKTOP\Handbrake.lnk" + Delete "$SMPROGRAMS\Handbrake\Handbrake.lnk" + RMDir "$SMPROGRAMS\Handbrake" + RMDir "$INSTDIR" + + DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" + DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" + SetAutoClose true +SectionEnd + +;Check for .NET framework +Function CheckFrameWork + + ;Save the variables in case something else is using them + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + Push $R5 + Push $R6 + Push $R7 + Push $R8 + + StrCpy $R5 "0" + StrCpy $R6 "0" + StrCpy $R7 "0" + StrCpy $R8 "0.0.0" + StrCpy $0 0 + + loop: + + ;Get each sub key under "SOFTWARE\Microsoft\NET Framework Setup\NDP" + EnumRegKey $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP" $0 + StrCmp $1 "" done ;jump to end if no more registry keys + IntOp $0 $0 + 1 + StrCpy $2 $1 1 ;Cut off the first character + StrCpy $3 $1 "" 1 ;Remainder of string + + ;Loop if first character is not a 'v' + StrCmpS $2 "v" start_parse loop + + ;Parse the string + start_parse: + StrCpy $R1 "" + StrCpy $R2 "" + StrCpy $R3 "" + StrCpy $R4 $3 + + StrCpy $4 1 + + parse: + StrCmp $3 "" parse_done ;If string is empty, we are finished + StrCpy $2 $3 1 ;Cut off the first character + StrCpy $3 $3 "" 1 ;Remainder of string + StrCmp $2 "." is_dot not_dot ;Move to next part if it's a dot + + is_dot: + IntOp $4 $4 + 1 ; Move to the next section + goto parse ;Carry on parsing + + not_dot: + IntCmp $4 1 major_ver + IntCmp $4 2 minor_ver + IntCmp $4 3 build_ver + IntCmp $4 4 parse_done + + major_ver: + StrCpy $R1 $R1$2 + goto parse ;Carry on parsing + + minor_ver: + StrCpy $R2 $R2$2 + goto parse ;Carry on parsing + + build_ver: + StrCpy $R3 $R3$2 + goto parse ;Carry on parsing + + parse_done: + + IntCmp $R1 $R5 this_major_same loop this_major_more + this_major_more: + StrCpy $R5 $R1 + StrCpy $R6 $R2 + StrCpy $R7 $R3 + StrCpy $R8 $R4 + + goto loop + + this_major_same: + IntCmp $R2 $R6 this_minor_same loop this_minor_more + this_minor_more: + StrCpy $R6 $R2 + StrCpy $R7 R3 + StrCpy $R8 $R4 + goto loop + + this_minor_same: + IntCmp $R3 $R7 loop loop this_build_more + this_build_more: + StrCpy $R7 $R3 + StrCpy $R8 $R4 + goto loop + + done: + + ;Have we got the framework we need? + IntCmp $R5 ${MIN_FRA_MAJOR} max_major_same fail OK + max_major_same: + IntCmp $R6 ${MIN_FRA_MINOR} max_minor_same fail OK + max_minor_same: + IntCmp $R7 ${MIN_FRA_BUILD} OK fail OK + + ;Version on machine is greater than what we need + OK: + StrCpy $0 "1" + goto end + + fail: + StrCmp $R8 "0.0.0" end + + + end: + + ;Pop the variables we pushed earlier + Pop $R8 + Pop $R7 + Pop $R6 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Pop $4 + Pop $3 + Pop $2 + Pop $1 +FunctionEnd \ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Installer/MakeAlpha.nsi.tmpl b/win/CS/HandBrakeWPF/Installer/MakeAlpha.nsi.tmpl deleted file mode 100644 index 2be087486..000000000 --- a/win/CS/HandBrakeWPF/Installer/MakeAlpha.nsi.tmpl +++ /dev/null @@ -1,168 +0,0 @@ -/* Resources.Designer.cs $ - - This file is part of the HandBrake source code. - Homepage: . - It may be used under the terms of the GNU General Public License. */ - -; Script generated by the HM NIS Edit Script Wizard. - -; HM NIS Edit Wizard helper defines -!define PRODUCT_NAME "HandBrake WPF (Pre-Alpha)" -!define PRODUCT_VERSION "$WCREV$" -!define PRODUCT_VERSION_NUMBER "svn$WCREV$" -!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\HandBrakeWPF.exe" -!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" -!define PRODUCT_UNINST_ROOT_KEY "HKLM" - -;Required .NET framework -!define MIN_FRA_MAJOR "4" -!define MIN_FRA_MINOR "0" -!define MIN_FRA_BUILD "*" - -SetCompressor lzma - -; MUI 1.67 compatible ------ -!include "MUI.nsh" - -; MUI Settings -!define MUI_ABORTWARNING -!define MUI_ICON "handbrakepineapple.ico" -!define MUI_UNICON "handbrakepineapple.ico" - -; Welcome page -!insertmacro MUI_PAGE_WELCOME -; License page -!insertmacro MUI_PAGE_LICENSE "doc\COPYING" -; Directory page -!insertmacro MUI_PAGE_DIRECTORY -; Instfiles page -!insertmacro MUI_PAGE_INSTFILES -; Finish page -;!define MUI_FINISHPAGE_RUN "$INSTDIR\HandBrakeWPF.exe" -!insertmacro MUI_PAGE_FINISH - -; Uninstaller pages -!insertmacro MUI_UNPAGE_INSTFILES - -; Language files -!insertmacro MUI_LANGUAGE "English" - -; MUI end ------ - -Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" -OutFile "HandBrake-${PRODUCT_VERSION_NUMBER}-WPF_PRE_ALPHA.exe" - -!include WordFunc.nsh -!insertmacro VersionCompare -!include LogicLib.nsh - -InstallDir "$PROGRAMFILES\HandbrakeWPF" -InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" -ShowInstDetails show -ShowUnInstDetails show - -Var InstallDotNET - -Function .onInit - - ; Begin Only allow one version - System::Call 'kernel32::CreateMutexA(i 0, i 0, t "myMutex") i .r1 ?e' - Pop $R0 - - StrCmp $R0 0 +3 - MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running." /SD IDOK - Abort - - ;Remove previous version - ReadRegStr $R0 HKLM \ - "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}\" \ - "UninstallString" - StrCmp $R0 "" done - - MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ - "${PRODUCT_NAME} is already installed. $\n$\nClick `OK` to remove the \ - previous version or `Cancel` to continue." /SD IDOK \ - IDOK uninst - goto done - - ;Run the uninstaller - uninst: - IfSilent +3 - Exec $INSTDIR\uninst.exe - goto done - Exec '"$INSTDIR\uninst.exe" /S' - done: -FunctionEnd - -Section "Handbrake" SEC01 - SetOutPath "$INSTDIR" - SetOverwrite ifnewer - - ; Install Files - File "*.exe" - CreateDirectory "$SMPROGRAMS\HandBrakeWPF" - CreateShortCut "$SMPROGRAMS\Handbrake\HandBrakeWPF.lnk" "$INSTDIR\HandBrakeWPF.exe" - CreateShortCut "$DESKTOP\HandBrakeWPF.lnk" "$INSTDIR\HandBrakeWPF.exe" - File "*.dll" - File "*.config" - File "*.xml" - File "*.pdb" - - ; Copy the standard doc set into the doc folder - SetOutPath "$INSTDIR\doc" - SetOverwrite ifnewer - File "doc\*.*" - - ; Copy the standard fonts config set into the fonts folder - SetOutPath "$INSTDIR\fonts" - SetOverwrite ifnewer - File /r "fonts\*.*" -SectionEnd - -Section -AdditionalIcons - CreateShortCut "$SMPROGRAMS\Handbrake\Uninstall.lnk" "$INSTDIR\uninst.exe" -SectionEnd - -Section -Post - WriteUninstaller "$INSTDIR\uninst.exe" - WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\HandBrakeWPF.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\HandBrakeWPF.exe" - WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" -SectionEnd - - -Function un.onUninstSuccess - HideWindow - MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." /SD IDOK -FunctionEnd - -Function un.onInit - MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" /SD IDYES IDYES +2 - Abort -FunctionEnd - -Section Uninstall - Delete "$INSTDIR\uninst.exe" - - Delete "$INSTDIR\*.*" - Delete "$INSTDIR\doc\*.*" - Delete "$INSTDIR\fonts\*.*" - Delete "$INSTDIR\fonts\conf.d\*.*" - Delete "$INSTDIR\fonts\conf.avail\*.*" - RMDir "$INSTDIR\doc" - RMDIR "$INSTDIR\fonts\conf.d" - RMDIR "$INSTDIR\fonts\conf.avail" - RMDIR "$INSTDIR\fonts" - Delete "$SMPROGRAMS\HandBrakeWPF\Uninstall.lnk" - Delete "$DESKTOP\HandBrakeWPF.lnk" - Delete "$SMPROGRAMS\HandBrakeWPF\HandBrakeWPF.lnk" - RMDir "$SMPROGRAMS\HandBrakeWPF" - RMDir "$INSTDIR" - - DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" - DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" - SetAutoClose true -SectionEnd - diff --git a/win/CS/HandBrakeWPF/Installer/MakeNightly.nsi.tmpl b/win/CS/HandBrakeWPF/Installer/MakeNightly.nsi.tmpl new file mode 100644 index 000000000..07b9d6240 --- /dev/null +++ b/win/CS/HandBrakeWPF/Installer/MakeNightly.nsi.tmpl @@ -0,0 +1,326 @@ +/* Resources.Designer.cs $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +; Script generated by the HM NIS Edit Script Wizard. + +; HM NIS Edit Wizard helper defines +!define PRODUCT_NAME "Handbrake" +!define PRODUCT_VERSION "$WCREV$ Nightly" +!define PRODUCT_VERSION_NUMBER "svn$WCREV$" +!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Handbrake.exe" +!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" +!define PRODUCT_UNINST_ROOT_KEY "HKLM" + +;Required .NET framework +!define MIN_FRA_MAJOR "4" +!define MIN_FRA_MINOR "0" +!define MIN_FRA_BUILD "*" + +SetCompressor lzma + +; MUI 1.67 compatible ------ +!include "MUI.nsh" + +; MUI Settings +!define MUI_ABORTWARNING +!define MUI_ICON "handbrakepineapple.ico" +!define MUI_UNICON "handbrakepineapple.ico" + +; Welcome page +!insertmacro MUI_PAGE_WELCOME +; License page +!insertmacro MUI_PAGE_LICENSE "doc\COPYING" +; Directory page +!insertmacro MUI_PAGE_DIRECTORY +; Instfiles page +!insertmacro MUI_PAGE_INSTFILES +; Finish page +;!define MUI_FINISHPAGE_RUN "$INSTDIR\Handbrake.exe" +!insertmacro MUI_PAGE_FINISH + +; Uninstaller pages +!insertmacro MUI_UNPAGE_INSTFILES + +; Language files +!insertmacro MUI_LANGUAGE "English" + +; MUI end ------ + +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile "HandBrake-${PRODUCT_VERSION_NUMBER}_i686-Win_GUI.exe" + +!include WordFunc.nsh +!insertmacro VersionCompare +!include LogicLib.nsh + +InstallDir "$PROGRAMFILES\Handbrake" +InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" +ShowInstDetails show +ShowUnInstDetails show + +Var InstallDotNET + +Function .onInit + + ; Begin Only allow one version + System::Call 'kernel32::CreateMutexA(i 0, i 0, t "myMutex") i .r1 ?e' + Pop $R0 + + StrCmp $R0 0 +3 + MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running." /SD IDOK + Abort + + ;Remove previous version + ReadRegStr $R0 HKLM \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}\" \ + "UninstallString" + StrCmp $R0 "" done + + MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ + "${PRODUCT_NAME} is already installed. $\n$\nClick `OK` to remove the \ + previous version or `Cancel` to continue." /SD IDOK \ + IDOK uninst + goto done + + ;Run the uninstaller + uninst: + IfSilent +3 + Exec $INSTDIR\uninst.exe + goto done + Exec '"$INSTDIR\uninst.exe" /S' + done: +FunctionEnd + +Section "Handbrake" SEC01 + SetOutPath "$INSTDIR" + SetOverwrite ifnewer + + ; Begin Check .NET version + StrCpy $InstallDotNET "No" + Call CheckFramework + StrCmp $0 "1" +3 + StrCpy $InstallDotNET "Yes" + MessageBox MB_OK|MB_ICONINFORMATION "${PRODUCT_NAME} requires that the .NET Framework 4.0 Client Profile is installed. The latest .NET Framework will be downloaded and installed automatically during installation of ${PRODUCT_NAME}." /SD IDOK + Pop $0 + + ; Get .NET if required + ${If} $InstallDotNET == "Yes" + SetDetailsView hide + inetc::get /caption "Downloading .NET Framework 4.0" /canceltext "Cancel" "http://www.microsoft.com/downloads/info.aspx?na=41&srcfamilyid=e5ad0459-cbcc-4b4f-97b6-fb17111cf544&srcdisplaylang=en&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f2%2f562A10F9-C9F4-4313-A044-9C94E0A8FAC8%2fdotNetFx40_Client_x86_x64.exe" "$INSTDIR\dotnetfx.exe" /end + Pop $1 + + ${If} $1 != "OK" + Delete "$INSTDIR\dotnetfx.exe" + Abort "Installation cancelled, ${PRODUCT_NAME} requires the .NET 4.0 Framework" + ${EndIf} + + ExecWait "$INSTDIR\dotnetfx.exe" + Delete "$INSTDIR\dotnetfx.exe" + + SetDetailsView show + ${EndIf} + + ; Install Files + File "*.exe" + CreateDirectory "$SMPROGRAMS\Handbrake" + CreateShortCut "$SMPROGRAMS\Handbrake\Handbrake.lnk" "$INSTDIR\Handbrake.exe" + CreateShortCut "$DESKTOP\Handbrake.lnk" "$INSTDIR\Handbrake.exe" + File "*.dll" + File "*.config" + File "*.xml" + File "*.pdb" + + ; Copy the standard doc set into the doc folder + SetOutPath "$INSTDIR\doc" + SetOverwrite ifnewer + File "doc\*.*" + + ; Copy the standard fonts config set into the fonts folder + SetOutPath "$INSTDIR\fonts" + SetOverwrite ifnewer + File /r "fonts\*.*" +SectionEnd + +Section -AdditionalIcons + CreateShortCut "$SMPROGRAMS\Handbrake\Uninstall.lnk" "$INSTDIR\uninst.exe" +SectionEnd + +Section -Post + WriteUninstaller "$INSTDIR\uninst.exe" + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\Handbrake.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\Handbrake.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" +SectionEnd + + +Function un.onUninstSuccess + HideWindow + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." /SD IDOK +FunctionEnd + +Function un.onInit + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" /SD IDYES IDYES +2 + Abort +FunctionEnd + +Section Uninstall + Delete "$INSTDIR\uninst.exe" + + Delete "$INSTDIR\*.*" + Delete "$INSTDIR\doc\*.*" + Delete "$INSTDIR\fonts\*.*" + Delete "$INSTDIR\fonts\conf.d\*.*" + Delete "$INSTDIR\fonts\conf.avail\*.*" + RMDir "$INSTDIR\doc" + RMDIR "$INSTDIR\fonts\conf.d" + RMDIR "$INSTDIR\fonts\conf.avail" + RMDIR "$INSTDIR\fonts" + Delete "$SMPROGRAMS\Handbrake\Uninstall.lnk" + Delete "$DESKTOP\Handbrake.lnk" + Delete "$SMPROGRAMS\Handbrake\Handbrake.lnk" + RMDir "$SMPROGRAMS\Handbrake" + RMDir "$INSTDIR" + + DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" + DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" + SetAutoClose true +SectionEnd + +;Check for .NET framework +Function CheckFrameWork + + ;Save the variables in case something else is using them + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + Push $R5 + Push $R6 + Push $R7 + Push $R8 + + StrCpy $R5 "0" + StrCpy $R6 "0" + StrCpy $R7 "0" + StrCpy $R8 "0.0.0" + StrCpy $0 0 + + loop: + + ;Get each sub key under "SOFTWARE\Microsoft\NET Framework Setup\NDP" + EnumRegKey $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP" $0 + StrCmp $1 "" done ;jump to end if no more registry keys + IntOp $0 $0 + 1 + StrCpy $2 $1 1 ;Cut off the first character + StrCpy $3 $1 "" 1 ;Remainder of string + + ;Loop if first character is not a 'v' + StrCmpS $2 "v" start_parse loop + + ;Parse the string + start_parse: + StrCpy $R1 "" + StrCpy $R2 "" + StrCpy $R3 "" + StrCpy $R4 $3 + + StrCpy $4 1 + + parse: + StrCmp $3 "" parse_done ;If string is empty, we are finished + StrCpy $2 $3 1 ;Cut off the first character + StrCpy $3 $3 "" 1 ;Remainder of string + StrCmp $2 "." is_dot not_dot ;Move to next part if it's a dot + + is_dot: + IntOp $4 $4 + 1 ; Move to the next section + goto parse ;Carry on parsing + + not_dot: + IntCmp $4 1 major_ver + IntCmp $4 2 minor_ver + IntCmp $4 3 build_ver + IntCmp $4 4 parse_done + + major_ver: + StrCpy $R1 $R1$2 + goto parse ;Carry on parsing + + minor_ver: + StrCpy $R2 $R2$2 + goto parse ;Carry on parsing + + build_ver: + StrCpy $R3 $R3$2 + goto parse ;Carry on parsing + + parse_done: + + IntCmp $R1 $R5 this_major_same loop this_major_more + this_major_more: + StrCpy $R5 $R1 + StrCpy $R6 $R2 + StrCpy $R7 $R3 + StrCpy $R8 $R4 + + goto loop + + this_major_same: + IntCmp $R2 $R6 this_minor_same loop this_minor_more + this_minor_more: + StrCpy $R6 $R2 + StrCpy $R7 R3 + StrCpy $R8 $R4 + goto loop + + this_minor_same: + IntCmp $R3 $R7 loop loop this_build_more + this_build_more: + StrCpy $R7 $R3 + StrCpy $R8 $R4 + goto loop + + done: + + ;Have we got the framework we need? + IntCmp $R5 ${MIN_FRA_MAJOR} max_major_same fail OK + max_major_same: + IntCmp $R6 ${MIN_FRA_MINOR} max_minor_same fail OK + max_minor_same: + IntCmp $R7 ${MIN_FRA_BUILD} OK fail OK + + ;Version on machine is greater than what we need + OK: + StrCpy $0 "1" + goto end + + fail: + StrCmp $R8 "0.0.0" end + + + end: + + ;Pop the variables we pushed earlier + Pop $R8 + Pop $R7 + Pop $R6 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Pop $4 + Pop $3 + Pop $2 + Pop $1 +FunctionEnd \ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Installer/MakeNightly64.nsi.tmpl b/win/CS/HandBrakeWPF/Installer/MakeNightly64.nsi.tmpl new file mode 100644 index 000000000..15c35d248 --- /dev/null +++ b/win/CS/HandBrakeWPF/Installer/MakeNightly64.nsi.tmpl @@ -0,0 +1,326 @@ +/* Resources.Designer.cs $ + + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +; Script generated by the HM NIS Edit Script Wizard. + +; HM NIS Edit Wizard helper defines +!define PRODUCT_NAME "Handbrake" +!define PRODUCT_VERSION "$WCREV$ Nightly" +!define PRODUCT_VERSION_NUMBER "svn$WCREV$" +!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\Handbrake.exe" +!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" +!define PRODUCT_UNINST_ROOT_KEY "HKLM" + +;Required .NET framework +!define MIN_FRA_MAJOR "4" +!define MIN_FRA_MINOR "0" +!define MIN_FRA_BUILD "*" + +SetCompressor lzma + +; MUI 1.67 compatible ------ +!include "MUI.nsh" + +; MUI Settings +!define MUI_ABORTWARNING +!define MUI_ICON "handbrakepineapple.ico" +!define MUI_UNICON "handbrakepineapple.ico" + +; Welcome page +!insertmacro MUI_PAGE_WELCOME +; License page +!insertmacro MUI_PAGE_LICENSE "doc\COPYING" +; Directory page +!insertmacro MUI_PAGE_DIRECTORY +; Instfiles page +!insertmacro MUI_PAGE_INSTFILES +; Finish page +;!define MUI_FINISHPAGE_RUN "$INSTDIR\Handbrake.exe" +!insertmacro MUI_PAGE_FINISH + +; Uninstaller pages +!insertmacro MUI_UNPAGE_INSTFILES + +; Language files +!insertmacro MUI_LANGUAGE "English" + +; MUI end ------ + +Name "${PRODUCT_NAME} ${PRODUCT_VERSION}" +OutFile "HandBrake-${PRODUCT_VERSION_NUMBER}_x86_64-Win_GUI.exe" + +!include WordFunc.nsh +!insertmacro VersionCompare +!include LogicLib.nsh + +InstallDir "$PROGRAMFILES64\Handbrake" +InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" "" +ShowInstDetails show +ShowUnInstDetails show + +Var InstallDotNET + +Function .onInit + + ; Begin Only allow one version + System::Call 'kernel32::CreateMutexA(i 0, i 0, t "myMutex") i .r1 ?e' + Pop $R0 + + StrCmp $R0 0 +3 + MessageBox MB_OK|MB_ICONEXCLAMATION "The installer is already running." /SD IDOK + Abort + + ;Remove previous version + ReadRegStr $R0 HKLM \ + "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}\" \ + "UninstallString" + StrCmp $R0 "" done + + MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ + "${PRODUCT_NAME} is already installed. $\n$\nClick `OK` to remove the \ + previous version or `Cancel` to continue." /SD IDOK \ + IDOK uninst + goto done + + ;Run the uninstaller + uninst: + IfSilent +3 + Exec $INSTDIR\uninst.exe + goto done + Exec '"$INSTDIR\uninst.exe" /S' + done: +FunctionEnd + +Section "Handbrake" SEC01 + SetOutPath "$INSTDIR" + SetOverwrite ifnewer + + ; Begin Check .NET version + StrCpy $InstallDotNET "No" + Call CheckFramework + StrCmp $0 "1" +3 + StrCpy $InstallDotNET "Yes" + MessageBox MB_OK|MB_ICONINFORMATION "${PRODUCT_NAME} requires that the .NET Framework 4.0 Client Profile is installed. The latest .NET Framework will be downloaded and installed automatically during installation of ${PRODUCT_NAME}." /SD IDOK + Pop $0 + + ; Get .NET if required + ${If} $InstallDotNET == "Yes" + SetDetailsView hide + inetc::get /caption "Downloading .NET Framework 4.0" /canceltext "Cancel" "http://www.microsoft.com/downloads/info.aspx?na=41&srcfamilyid=e5ad0459-cbcc-4b4f-97b6-fb17111cf544&srcdisplaylang=en&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f2%2f562A10F9-C9F4-4313-A044-9C94E0A8FAC8%2fdotNetFx40_Client_x86_x64.exe" "$INSTDIR\dotnetfx.exe" /end + Pop $1 + + ${If} $1 != "OK" + Delete "$INSTDIR\dotnetfx.exe" + Abort "Installation cancelled, ${PRODUCT_NAME} requires the .NET 4.0 Framework" + ${EndIf} + + ExecWait "$INSTDIR\dotnetfx.exe" + Delete "$INSTDIR\dotnetfx.exe" + + SetDetailsView show + ${EndIf} + + ; Install Files + File "*.exe" + CreateDirectory "$SMPROGRAMS\Handbrake" + CreateShortCut "$SMPROGRAMS\Handbrake\Handbrake.lnk" "$INSTDIR\Handbrake.exe" + CreateShortCut "$DESKTOP\Handbrake.lnk" "$INSTDIR\Handbrake.exe" + File "*.dll" + File "*.config" + File "*.xml" + File "*.pdb" + + ; Copy the standard doc set into the doc folder + SetOutPath "$INSTDIR\doc" + SetOverwrite ifnewer + File "doc\*.*" + + ; Copy the standard fonts config set into the fonts folder + SetOutPath "$INSTDIR\fonts" + SetOverwrite ifnewer + File /r "fonts\*.*" +SectionEnd + +Section -AdditionalIcons + CreateShortCut "$SMPROGRAMS\Handbrake\Uninstall.lnk" "$INSTDIR\uninst.exe" +SectionEnd + +Section -Post + WriteUninstaller "$INSTDIR\uninst.exe" + WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\Handbrake.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\Handbrake.exe" + WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}" +SectionEnd + + +Function un.onUninstSuccess + HideWindow + MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer." /SD IDOK +FunctionEnd + +Function un.onInit + MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" /SD IDYES IDYES +2 + Abort +FunctionEnd + +Section Uninstall + Delete "$INSTDIR\uninst.exe" + + Delete "$INSTDIR\*.*" + Delete "$INSTDIR\doc\*.*" + Delete "$INSTDIR\fonts\*.*" + Delete "$INSTDIR\fonts\conf.d\*.*" + Delete "$INSTDIR\fonts\conf.avail\*.*" + RMDir "$INSTDIR\doc" + RMDIR "$INSTDIR\fonts\conf.d" + RMDIR "$INSTDIR\fonts\conf.avail" + RMDIR "$INSTDIR\fonts" + Delete "$SMPROGRAMS\Handbrake\Uninstall.lnk" + Delete "$DESKTOP\Handbrake.lnk" + Delete "$SMPROGRAMS\Handbrake\Handbrake.lnk" + RMDir "$SMPROGRAMS\Handbrake" + RMDir "$INSTDIR" + + DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" + DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}" + SetAutoClose true +SectionEnd + +;Check for .NET framework +Function CheckFrameWork + + ;Save the variables in case something else is using them + Push $0 + Push $1 + Push $2 + Push $3 + Push $4 + Push $R1 + Push $R2 + Push $R3 + Push $R4 + Push $R5 + Push $R6 + Push $R7 + Push $R8 + + StrCpy $R5 "0" + StrCpy $R6 "0" + StrCpy $R7 "0" + StrCpy $R8 "0.0.0" + StrCpy $0 0 + + loop: + + ;Get each sub key under "SOFTWARE\Microsoft\NET Framework Setup\NDP" + EnumRegKey $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP" $0 + StrCmp $1 "" done ;jump to end if no more registry keys + IntOp $0 $0 + 1 + StrCpy $2 $1 1 ;Cut off the first character + StrCpy $3 $1 "" 1 ;Remainder of string + + ;Loop if first character is not a 'v' + StrCmpS $2 "v" start_parse loop + + ;Parse the string + start_parse: + StrCpy $R1 "" + StrCpy $R2 "" + StrCpy $R3 "" + StrCpy $R4 $3 + + StrCpy $4 1 + + parse: + StrCmp $3 "" parse_done ;If string is empty, we are finished + StrCpy $2 $3 1 ;Cut off the first character + StrCpy $3 $3 "" 1 ;Remainder of string + StrCmp $2 "." is_dot not_dot ;Move to next part if it's a dot + + is_dot: + IntOp $4 $4 + 1 ; Move to the next section + goto parse ;Carry on parsing + + not_dot: + IntCmp $4 1 major_ver + IntCmp $4 2 minor_ver + IntCmp $4 3 build_ver + IntCmp $4 4 parse_done + + major_ver: + StrCpy $R1 $R1$2 + goto parse ;Carry on parsing + + minor_ver: + StrCpy $R2 $R2$2 + goto parse ;Carry on parsing + + build_ver: + StrCpy $R3 $R3$2 + goto parse ;Carry on parsing + + parse_done: + + IntCmp $R1 $R5 this_major_same loop this_major_more + this_major_more: + StrCpy $R5 $R1 + StrCpy $R6 $R2 + StrCpy $R7 $R3 + StrCpy $R8 $R4 + + goto loop + + this_major_same: + IntCmp $R2 $R6 this_minor_same loop this_minor_more + this_minor_more: + StrCpy $R6 $R2 + StrCpy $R7 R3 + StrCpy $R8 $R4 + goto loop + + this_minor_same: + IntCmp $R3 $R7 loop loop this_build_more + this_build_more: + StrCpy $R7 $R3 + StrCpy $R8 $R4 + goto loop + + done: + + ;Have we got the framework we need? + IntCmp $R5 ${MIN_FRA_MAJOR} max_major_same fail OK + max_major_same: + IntCmp $R6 ${MIN_FRA_MINOR} max_minor_same fail OK + max_minor_same: + IntCmp $R7 ${MIN_FRA_BUILD} OK fail OK + + ;Version on machine is greater than what we need + OK: + StrCpy $0 "1" + goto end + + fail: + StrCmp $R8 "0.0.0" end + + + end: + + ;Pop the variables we pushed earlier + Pop $R8 + Pop $R7 + Pop $R6 + Pop $R5 + Pop $R4 + Pop $R3 + Pop $R2 + Pop $R1 + Pop $4 + Pop $3 + Pop $2 + Pop $1 +FunctionEnd \ No newline at end of file diff --git a/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs b/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs index 72f9c8830..4903de063 100644 --- a/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs +++ b/win/CS/HandBrakeWPF/Properties/AssemblyInfo.cs @@ -1,4 +1,9 @@ -using System.Reflection; +/* AssemblyInfo.cs $ + This file is part of the HandBrake source code. + Homepage: . + It may be used under the terms of the GNU General Public License. */ + +using System.Reflection; using System.Resources; using System.Runtime.CompilerServices; using System.Runtime.InteropServices; @@ -51,5 +56,5 @@ using System.Windows; // You can specify all the values or you can default the Build and Revision Numbers // by using the '*' as shown below: // [assembly: AssemblyVersion("1.0.*")] -[assembly: AssemblyVersion("0.9.5.0")] -[assembly: AssemblyFileVersion("0.9.5.0")] +[assembly: AssemblyVersion("0.9.6.4532")] +[assembly: NeutralResourcesLanguage("")] \ No newline at end of file diff --git a/win/CS/HandBrakeWPF/README BEFORE WRITING CODE.txt b/win/CS/HandBrakeWPF/README BEFORE WRITING CODE.txt deleted file mode 100644 index 252bae71b..000000000 --- a/win/CS/HandBrakeWPF/README BEFORE WRITING CODE.txt +++ /dev/null @@ -1,7 +0,0 @@ -This is the port of the current WinForms GUI over to WPF. -It is an incomplete work-in-progress and not currently in a usable state! - -Goals: - -- Move as much of the busness logic into the ApplicaitonServices library so it's reusable. -- Rebuild the UI in WPF using MVVM approach using Caliburn Micro 1.2 as the base and Castle Windsor for IoC/DI \ No newline at end of file diff --git a/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs b/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs index 54622b392..731e7d384 100644 --- a/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs +++ b/win/CS/HandBrakeWPF/ViewModels/MainViewModel.cs @@ -158,7 +158,7 @@ namespace HandBrakeWPF.ViewModels this.queueProcessor = IoC.Get(); // TODO Instance ID! // Setup Properties - this.WindowTitle = "HandBrake WPF Test Application"; + this.WindowTitle = "HandBrake"; this.CurrentTask = new EncodeTask(); this.ScannedSource = new Source(); diff --git a/win/CS/build.xml b/win/CS/build.xml index bd77cb5d9..4fa72c4c1 100644 --- a/win/CS/build.xml +++ b/win/CS/build.xml @@ -20,7 +20,6 @@ - @@ -32,9 +31,6 @@ BuildRelease;CreateReleasePostBuildEvent - - AlphaPreBuild;BuildRelease;CreateAlphaPostBuildEvent - @@ -51,11 +47,6 @@ - - - - - @@ -79,11 +70,4 @@ - - - - - - - \ No newline at end of file diff --git a/win/CS/build2.xml b/win/CS/build2.xml new file mode 100644 index 000000000..17e2f498a --- /dev/null +++ b/win/CS/build2.xml @@ -0,0 +1,76 @@ + + + + + + Release + + + + + + + + + + + + PreBuild;BuildRelease;NightlyPostBuild + + + + PreBuild;BuildRelease;ReleasePostBuild + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file -- cgit v1.2.3