From: <che...@us...> - 2009-12-20 03:43:05
|
Revision: 3286 http://mp-plugins.svn.sourceforge.net/mp-plugins/?rev=3286&view=rev Author: chef_koch Date: 2009-12-20 03:21:23 +0000 (Sun, 20 Dec 2009) Log Message: ----------- reworked the ReInstall Page to work the same way like official mui pages added new check for minimum version of MP and/or TVServer if one of the related plugins are enabled set minimum version to 2.0.0.0 for both for testing Modified Paths: -------------- trunk/plugins/IR Server Suite/setup/languages/English.nsh trunk/plugins/IR Server Suite/setup/pages/AddRemovePage.nsh trunk/plugins/IR Server Suite/setup/setup.nsi Modified: trunk/plugins/IR Server Suite/setup/languages/English.nsh =================================================================== --- trunk/plugins/IR Server Suite/setup/languages/English.nsh 2009-12-20 00:17:54 UTC (rev 3285) +++ trunk/plugins/IR Server Suite/setup/languages/English.nsh 2009-12-20 03:21:23 UTC (rev 3286) @@ -30,7 +30,10 @@ !insertmacro LANG_STRING DESC_SectionHcwPvrTuner "Command line tuner for Hauppauge PVR devices." !insertmacro LANG_STRING DESC_SectionMCEBlaster "For tuning external channels (on Set Top Boxes) with Windows Media Center." +!insertmacro LANG_STRING ERROR_MIN_VERSION_MP "You are trying to install MediaPortal plugins.$\r$\nThe minimum required MediaPortal version is ${MIN_VERSION_MP}.$\r$\n$\r$\nSo please update your MediaPortal installation or unselect those plugins." +!insertmacro LANG_STRING ERROR_MIN_VERSION_TVSERVER "You are trying to install MediaPortal TV Server plugins.$\r$\nThe minimum required MediaPortal TV Server version is ${MIN_VERSION_TVSERVER}.$\r$\n$\r$\nSo please update your MediaPortal TV Server installation or unselect those plugins." + # Texts for message boxes !if "${PRODUCT_NAME}" == "MediaPortal" !insertmacro LANG_STRING TEXT_MSGBOX_REMOVE_ALL "!!! ATTENTION !!!$\r$\nDo you want to make a complete cleanup?$\r$\nThis removes completly the registry keys, the installation and the common app data directory, inclusive thumbs, databases, skins and plugins!" Modified: trunk/plugins/IR Server Suite/setup/pages/AddRemovePage.nsh =================================================================== --- trunk/plugins/IR Server Suite/setup/pages/AddRemovePage.nsh 2009-12-20 00:17:54 UTC (rev 3285) +++ trunk/plugins/IR Server Suite/setup/pages/AddRemovePage.nsh 2009-12-20 03:21:23 UTC (rev 3286) @@ -1,9 +1,9 @@ #region Copyright (C) 2005-2009 Team MediaPortal /* - * Copyright (C) 2005-2009 Team MediaPortal - * http://www.team-mediaportal.com - * + * Copyright (C) 2005-2009 Team MediaPortal + * http://www.team-mediaportal.com + * * This Program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) @@ -26,178 +26,237 @@ /* _____________________________________________________________________________ - AddRemovePage + ReinstallPage + + If same version is already installed, this page offers to uninstall or reinstall. + If different version, this page offers simple and advanced mode for installation. + + Needs: $PREVIOUS_VERSION_STATE { "newer" , "older", "same" } + $EXPRESS_UPDATE { 0 , 1 } + Function: RunUninstaller to start uninstaller of previous version + Function: LoadPreviousSettings to re-load settings of previous installation _____________________________________________________________________________ - - The original header file is taken from: - http://nsis.sourceforge.net/Add/Remove_Functionality - and modified for our needs. */ -!ifndef ___ADD_REMOVE_PAGE__NSH___ -!define ___ADD_REMOVE_PAGE__NSH___ +!ifndef ___REINSTALLPAGE__NSH___ +!define ___REINSTALLPAGE__NSH___ -!include WordFunc.nsh -!include FileFunc.nsh +;-------------------------------- +;Page interface settings and variables -##### Add/Remove/Reinstall page -Var ReinstallMode -Var ReinstallModePage.optBtn1 -Var ReinstallModePage.optBtn1.state -Var ReinstallModePage.optBtn2 -Var ReinstallModePage.optBtn2.state +!macro MUI_REINSTALLPAGE_INTERFACE -Function PageReinstallMode - ; check if software is already installed - ${If} $PREVIOUS_VERSION == "" - Abort - ${EndIf} + !ifndef MUI_REINSTALLPAGE_INTERFACE + !define MUI_REINSTALLPAGE_INTERFACE + Var mui.ReinstallPage + Var ReinstallMode + Var mui.ReinstallPage.Text - ; save current values to stack - Push $R0 - Push $R1 - Push $R2 - Push $R3 + Var mui.ReinstallPage.Option1 + Var mui.ReinstallPage.Option1.State + Var mui.ReinstallPage.Option2 + Var mui.ReinstallPage.Option2.State - ; set string for control texts - ${If} $PREVIOUS_VERSION_STATE == "newer" - StrCpy $R1 "$(TEXT_ADDREMOVE_INFO_UPGRADE)" - StrCpy $R2 "$(TEXT_ADDREMOVE_UPDOWN_OPT1)" - StrCpy $R3 "$(TEXT_ADDREMOVE_UPDOWN_OPT2)" - !insertmacro MUI_HEADER_TEXT "$(TEXT_ADDREMOVE_HEADER)" "$(TEXT_ADDREMOVE_HEADER2_UPDOWN)" + Function ReinstallPage.UpdateSelection - ${ElseIf} $PREVIOUS_VERSION_STATE == "older" - StrCpy $R1 "$(TEXT_ADDREMOVE_INFO_DOWNGRADE)" - StrCpy $R2 "$(TEXT_ADDREMOVE_UPDOWN_OPT1)" - StrCpy $R3 "$(TEXT_ADDREMOVE_UPDOWN_OPT2)" - !insertmacro MUI_HEADER_TEXT "$(TEXT_ADDREMOVE_HEADER)" "$(TEXT_ADDREMOVE_HEADER2_UPDOWN)" + ${NSD_GetState} $mui.ReinstallPage.Option1 $mui.ReinstallPage.Option1.State + ${NSD_GetState} $mui.ReinstallPage.Option2 $mui.ReinstallPage.Option2.State - ${ElseIf} $PREVIOUS_VERSION_STATE == "same" - StrCpy $R1 "$(TEXT_ADDREMOVE_INFO_REPAIR)" - StrCpy $R2 "$(TEXT_ADDREMOVE_REPAIR_OPT1)" - StrCpy $R3 "$(TEXT_ADDREMOVE_REPAIR_OPT2)" - !insertmacro MUI_HEADER_TEXT "$(TEXT_ADDREMOVE_HEADER)" "$(TEXT_ADDREMOVE_HEADER2_REPAIR)" + ${If} $mui.ReinstallPage.Option2.State == ${BST_CHECKED} + StrCpy $ReinstallMode 2 + ${Else} + StrCpy $ReinstallMode 1 + ${EndIf} - ${Else} - MessageBox MB_ICONSTOP "Unknown value of PREVIOUS_VERSION_STATE, aborting" /SD IDOK - Abort - ${EndIf} + FunctionEnd + !endif + +; !insertmacro MUI_DEFAULT MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP "${NSISDIR}\Contrib\Graphics\Wizard\win.bmp" - ; create controls - nsDialogs::Create /NOUNLOAD 1018 - Pop $R0 +!macroend - ${NSD_CreateLabel} 0 0 300u 24u $R1 - Pop $R1 - ${NSD_CreateRadioButton} 30u 50u -30u 8u $R2 - Pop $ReinstallModePage.optBtn1 - ${NSD_OnClick} $ReinstallModePage.optBtn1 PageReinstallModeUpdateSelection +;-------------------------------- +;Interface initialization - ${NSD_CreateRadioButton} 30u 70u -30u 8u $R3 - Pop $ReinstallModePage.optBtn2 - ${NSD_OnClick} $ReinstallModePage.optBtn2 PageReinstallModeUpdateSelection +!macro MUI_REINSTALLPAGE_GUIINIT + !ifndef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}REINSTALLPAGE_GUINIT + !define MUI_${MUI_PAGE_UNINSTALLER_PREFIX}REINSTALLPAGE_GUINIT - ; set current ReinstallMode to option buttons - ${If} $ReinstallMode == 2 - ${NSD_Check} $ReinstallModePage.optBtn2 - ${Else} - ; if not 2, set to 1 - ${NSD_Check} $ReinstallModePage.optBtn1 - ; set reinstallmode to 1, if reinstallmode = "" - StrCpy $ReinstallMode 1 - ${EndIf} + Function ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ReinstallPage.GUIInit +; InitPluginsDir +; File "/oname=$PLUGINSDIR\modern-wizard.bmp" "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}WELCOMEFINISHPAGE_BITMAP}" - nsDialogs::Show + !ifdef MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT + Call "${MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT}" + !endif - ; restore values from stack - Pop $R3 - Pop $R2 - Pop $R1 - Pop $R0 -FunctionEnd + FunctionEnd + + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}PAGE_FUNCTION_GUIINIT ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ReinstallPage.GUIInit -Function PageReinstallModeUpdateSelection + !endif - ${NSD_GetState} $ReinstallModePage.optBtn1 $ReinstallModePage.optBtn1.state - ${NSD_GetState} $ReinstallModePage.optBtn2 $ReinstallModePage.optBtn2.state +!macroend - ${If} $ReinstallModePage.optBtn2.state == ${BST_CHECKED} - StrCpy $ReinstallMode 2 - ${Else} - StrCpy $ReinstallMode 1 - ${EndIf} -FunctionEnd +;-------------------------------- +;Page declaration -Function PageLeaveReinstallMode +!macro MUI_PAGEDECLARATION_REINSTALL - StrCpy $EXPRESS_UPDATE 0 + !insertmacro MUI_SET MUI_${MUI_PAGE_UNINSTALLER_PREFIX}REINSTALLPAGE "" + !insertmacro MUI_REINSTALLPAGE_INTERFACE + + !insertmacro MUI_REINSTALLPAGE_GUIINIT - ; Uninstall is selected - ${If} $PREVIOUS_VERSION_STATE == "same" - ${AndIf} $ReinstallMode == 2 +; !insertmacro MUI_DEFAULT MUI_WELCOMEPAGE_TITLE "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_WELCOME_INFO_TITLE)" +; !insertmacro MUI_DEFAULT MUI_WELCOMEPAGE_TEXT "$(MUI_${MUI_PAGE_UNINSTALLER_PREFIX}TEXT_WELCOME_INFO_TEXT)" + +; !insertmacro MUI_PAGE_FUNCTION_FULLWINDOW - StrCpy $EXPRESS_UPDATE 1 - Call RunUninstaller - Quit + PageEx ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}custom - ${EndIf} + PageCallbacks ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ReinstallPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ReinstallLeave_${MUI_UNIQUEID} + PageExEnd - ; ExpressUpdate is selected - ${If} $PREVIOUS_VERSION_STATE != "same" - ${AndIf} $ReinstallMode == 1 + !insertmacro MUI_FUNCTION_REINSTALLPAGE ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ReinstallPre_${MUI_UNIQUEID} ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}mui.ReinstallLeave_${MUI_UNIQUEID} - StrCpy $EXPRESS_UPDATE 1 - Call LoadPreviousSettings +; !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE +; !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_3LINES +; !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TEXT - ${EndIf} +!macroend -FunctionEnd +!macro MUI_PAGE_REINSTALL -/* - ${NSD_GetState} $R2 $R1 + !verbose push +; !verbose ${MUI_VERBOSE} + !verbose 4 - StrCmp $R0 "1" 0 +2 - StrCmp $R1 "1" doUninstall finish - StrCmp $R0 "2" 0 +3 - StrCmp $R1 "1" finish doUninstall + !insertmacro MUI_PAGE_INIT + !insertmacro MUI_PAGEDECLARATION_REINSTALL - doUninstall: - ; check if MP is already installed - ReadRegStr $R0 HKLM "${RegKey}" UninstallString - ${If} ${FileExists} "$R0" - ; get parent folder of uninstallation EXE (RO) and save it to R1 - ${GetParent} $R0 $R1 - ; start uninstallation of installed MP, from tmp folder, so it will delete itself - HideWindow - ClearErrors - CopyFiles $R0 "$TEMP\uninstall-temp.exe" - ExecWait '"$TEMP\uninstall-temp.exe" _?=$R1' - BringToFront + !verbose pop - ; if an error occured, ask to cancel installation - ${If} ${Errors} - MessageBox MB_YESNO|MB_ICONEXCLAMATION "$(TEXT_MSGBOX_ERROR_ON_UNINSTALL)" IDYES +2 +!macroend + + +;-------------------------------- +;Page functions + +!macro MUI_FUNCTION_REINSTALLPAGE PRE LEAVE + + Function "${PRE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM PRE + + ; check if software is already installed + ${If} $PREVIOUS_VERSION == "" + Abort + ${EndIf} + + + ; set string for control texts + ${If} $PREVIOUS_VERSION_STATE == "newer" + StrCpy $R1 "$(TEXT_ADDREMOVE_INFO_UPGRADE)" + StrCpy $R2 "$(TEXT_ADDREMOVE_UPDOWN_OPT1)" + StrCpy $R3 "$(TEXT_ADDREMOVE_UPDOWN_OPT2)" + !insertmacro MUI_HEADER_TEXT "$(TEXT_ADDREMOVE_HEADER)" "$(TEXT_ADDREMOVE_HEADER2_UPDOWN)" + + ${ElseIf} $PREVIOUS_VERSION_STATE == "older" + StrCpy $R1 "$(TEXT_ADDREMOVE_INFO_DOWNGRADE)" + StrCpy $R2 "$(TEXT_ADDREMOVE_UPDOWN_OPT1)" + StrCpy $R3 "$(TEXT_ADDREMOVE_UPDOWN_OPT2)" + !insertmacro MUI_HEADER_TEXT "$(TEXT_ADDREMOVE_HEADER)" "$(TEXT_ADDREMOVE_HEADER2_UPDOWN)" + + ${ElseIf} $PREVIOUS_VERSION_STATE == "same" + StrCpy $R1 "$(TEXT_ADDREMOVE_INFO_REPAIR)" + StrCpy $R2 "$(TEXT_ADDREMOVE_REPAIR_OPT1)" + StrCpy $R3 "$(TEXT_ADDREMOVE_REPAIR_OPT2)" + !insertmacro MUI_HEADER_TEXT "$(TEXT_ADDREMOVE_HEADER)" "$(TEXT_ADDREMOVE_HEADER2_REPAIR)" + + ${Else} + MessageBox MB_ICONSTOP "Unknown value of PREVIOUS_VERSION_STATE, aborting" /SD IDOK + Abort + ${EndIf} + + + ;create dialog + nsDialogs::Create 1018 + Pop $mui.ReinstallPage +; nsDialogs::SetRTL $(^RTL) +; SetCtlColors $mui.ReinstallPage "" "${MUI_BGCOLOR}" + + ;create text + ${NSD_CreateLabel} 0 0 300u 24u "$R1" + Pop $mui.ReinstallPage.Text + + ;create options + ${NSD_CreateRadioButton} 30u 50u -30u 8u "$R2" + Pop $mui.ReinstallPage.Option1 + ${NSD_OnClick} $mui.ReinstallPage.Option1 ReinstallPage.UpdateSelection + ${NSD_CreateRadioButton} 30u 70u -30u 8u "$R3" + Pop $mui.ReinstallPage.Option2 + ${NSD_OnClick} $mui.ReinstallPage.Option2 ReinstallPage.UpdateSelection + + + ; set current ReinstallMode to option buttons + ${If} $ReinstallMode == 2 + ${NSD_Check} $mui.ReinstallPage.Option2 + ${Else} + ; if not 2, set to 1 + ${NSD_Check} $mui.ReinstallPage.Option1 + ; set reinstallmode to 1, if reinstallmode = "" + StrCpy $ReinstallMode 1 + ${EndIf} + + + ;Show page +; Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageLoadFullWindow + !insertmacro MUI_PAGE_FUNCTION_CUSTOM SHOW + nsDialogs::Show +; Call ${MUI_PAGE_UNINSTALLER_FUNCPREFIX}muiPageUnloadFullWindow + +; !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TITLE_HEIGHT +; !insertmacro MUI_UNSET MUI_WELCOMEPAGE_TEXT_TOP + + FunctionEnd + + Function "${LEAVE}" + + !insertmacro MUI_PAGE_FUNCTION_CUSTOM LEAVE + + + StrCpy $EXPRESS_UPDATE 0 + + ; Uninstall is selected + ${If} $PREVIOUS_VERSION_STATE == "same" + ${AndIf} $ReinstallMode == 2 + + StrCpy $EXPRESS_UPDATE 1 + Call RunUninstaller Quit + ${EndIf} - ${EndIf} - ; if reboot flag is set, abort the installation, and continue the installer on next startup - ${If} ${FileExists} "$INSTDIR\rebootflag" - MessageBox MB_OK|MB_ICONEXCLAMATION "$(TEXT_MSGBOX_ERROR_REBOOT_REQUIRED)" - WriteRegStr HKLM "SOFTWARE\Microsoft\Windows\CurrentVersion\RunOnce" "$(^Name)" $EXEPATH - Quit - ${EndIf} + ; ExpressUpdate is selected + ${If} $PREVIOUS_VERSION_STATE != "same" + ${AndIf} $ReinstallMode == 1 - finish: -FunctionEnd -*/ + StrCpy $EXPRESS_UPDATE 1 + Call LoadPreviousSettings -!endif # !___ADD_REMOVE_PAGE__NSH___ + ${EndIf} + + FunctionEnd + +!macroend + +!endif # !___REINSTALL_PAGE__NSH___ Modified: trunk/plugins/IR Server Suite/setup/setup.nsi =================================================================== --- trunk/plugins/IR Server Suite/setup/setup.nsi 2009-12-20 00:17:54 UTC (rev 3285) +++ trunk/plugins/IR Server Suite/setup/setup.nsi 2009-12-20 03:21:23 UTC (rev 3286) @@ -94,7 +94,12 @@ ; if you want to set custom path to logfile, uncomment the following line #!define INSTALL_LOG_FILE "$DESKTOP\install_$(^Name).log" +!ifdef MPplugins + !define MIN_VERSION_MP "2.0.0.0" + !define MIN_VERSION_TVSERVER "2.0.0.0" +!endif + #--------------------------------------------------------------------------- # VARIABLES #--------------------------------------------------------------------------- @@ -196,9 +201,11 @@ !insertmacro MUI_PAGE_WELCOME !insertmacro MUI_PAGE_LICENSE "..\IR Server Suite\Documentation\LICENSE.GPL" -Page custom PageReinstallMode PageLeaveReinstallMode +!define MUI_PAGE_CUSTOMFUNCTION_LEAVE PageReinstallLeave +!insertmacro MUI_PAGE_REINSTALL !define MUI_PAGE_CUSTOMFUNCTION_PRE PageComponentsPre +!define MUI_PAGE_CUSTOMFUNCTION_LEAVE PageComponentsLeave !insertmacro MUI_PAGE_COMPONENTS Page custom PageServerServiceMode PageLeaveServerServiceMode @@ -916,10 +923,10 @@ !ifdef MPplugins ; start tvservice, if it was closed before !insertmacro StartTVService -!endif ; removing tve2 blaster Delete "$MPdir.Plugins\Process\TV2BlasterPlugin.dll" +!endif ; use the all users context SetShellVarContext all @@ -1054,6 +1061,31 @@ !endif !macroend +!macro MediaPortalVersionCheck + ${If} ${SectionIsSelected} ${SectionMPControlPlugin} + ${OrIf} ${SectionIsSelected} ${SectionMPBlastZonePlugin} + + !insertmacro MP_GET_VERSION $0 + ${VersionCompare} $0 ${MIN_VERSION_MP} $R0 + ${If} $R0 == 2 ;MIN_VERSION_MP is higher than current installed + MessageBox MB_OK|MB_ICONEXCLAMATION "$(ERROR_MIN_VERSION_MP)" + Abort + ${EndIf} + + ${EndIf} + + + ${If} ${SectionIsSelected} ${SectionTV3BlasterPlugin} + + !insertmacro TVSERVER_GET_VERSION $0 + ${VersionCompare} $0 ${MIN_VERSION_TVSERVER} $R0 + ${If} $R0 == 2 ;MIN_VERSION_TVSERVER is higher than current installed + MessageBox MB_OK|MB_ICONEXCLAMATION "$(ERROR_MIN_VERSION_TVSERVER)" + Abort + ${EndIf} + + ${EndIf} +!macroend !endif Function ReadPreviousSettings @@ -1199,6 +1231,19 @@ ;====================================== +Function PageReinstallLeave + !ifdef MPplugins + ; ExpressUpdate is selected + ${If} $PREVIOUS_VERSION_STATE != "same" + ${AndIf} $ReinstallMode == 1 + + ; check if mp components are selected and if correct versions are installed + !insertmacro MediaPortalVersionCheck + + ${EndIf} + !endif +FunctionEnd + Function PageComponentsPre ; skip page if previous settings are used for update ${If} $EXPRESS_UPDATE == 1 @@ -1206,6 +1251,13 @@ ${EndIf} FunctionEnd +Function PageComponentsLeave + !ifdef MPplugins + ; check if mp components are selected and if correct versions are installed + !insertmacro MediaPortalVersionCheck + !endif +FunctionEnd + Function PageDirectoryPre ; skip page if previous settings are used for update ${If} $EXPRESS_UPDATE == 1 @@ -1246,12 +1298,12 @@ ${EndIf} FunctionEnd -Function un.ConfirmPagePre - ; skip page if uninstaller is called from installer - ${If} $frominstall == 1 - Abort - ${EndIf} -FunctionEnd +;Function un.ConfirmPagePre +; ; skip page if uninstaller is called from installer +; ${If} $frominstall == 1 +; Abort +; ${EndIf} +;FunctionEnd Function un.FinishPagePre ; skip page if uninstaller is called from installer This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |