;SectionGetFlags ${sectionDefinedName} $0 ;IntOp $0 $0 & ${SF_SELECTED} ;WriteIniStr myFile.ini uninstallSection section1 $0 ;Created by OwD : 15.05.2003. Last modified : 02.06.2003. !define MUI_PRODUCT "X Codec Pack" !define MUI_VERSION "1.2.0" !define MUI_ICON "setup9.ico" !define MUI_UNICON "setup9.ico" !define MUI_BRANDINGTEXT " X Codec Pack - Install System " !include "MUI.nsh" !define TEMP $R0 CRCCheck On InstType "Standard" SetDatablockOptimize on ShowInstDetails nevershow ShowUninstDetails nevershow SetOverwrite on SetDateSave on OutFile "X Codec Pack 1.2.0.exe" InstallDir "$PROGRAMFILES\X Codec Pack" InstallDirRegKey HKCU "Software\${MUI_PRODUCT}" "" !insertmacro MUI_PAGE_WELCOME !define MUI_TEXT_WELCOME_INFO_TEXT "This wizard will guide you through the installation of\r\n X Codec Pack\r\n\r\n OwD X Codec Pack 1.2.0 containes:\r\n\r\t - DivX Codec 5.0.5\r\t - XviD Codec 0.91\r\t - AC3 Filter 0.68b\r\t - Matrix Mixer 0.21a\r\t - DivX AntiFreeze 0.4\r\t - DivX G400 Filter 2.7\r\t - Media Player 6.4.07.1110\r\n\r\n" !define MUI_CUSTOMFUNCTION_LICENSE_PRE LicenseText Page license mui.LicensePre mui.LicenseShow mui.LicenseLeave "MUI_INSTALLBUTTON_LICENSE" !insertmacro MUI_PAGE_LICENSE !insertmacro MUI_PAGE_DIRECTORY !insertmacro MUI_PAGE_COMPONENTS Page custom AddTasks ValidateCustom !insertmacro MUI_PAGE_INSTFILES !insertmacro MUI_PAGE_FINISH !insertmacro MUI_UNPAGE_CONFIRM !insertmacro MUI_UNPAGE_INSTFILES LicenseData "DivX.txt" ;LicenseData "EULA.txt" ;LicenseData "GNU.txt" !define MUI_ABORTWARNING !define MUI_SPECIALBITMAP "modern-wizard.bmp" !define MUI_HEADERBITMAP "modern-header.bmp" !define MUI_COMPONENTSPAGE_SMALLDESC !insertmacro MUI_LANGUAGE "English" ReserveFile "${NSISDIR}\Plugins\InstallOptions.dll" ReserveFile "Tasks.ini" !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS !insertmacro MUI_RESERVEFILE_SPECIALINI !insertmacro MUI_RESERVEFILE_SPECIALBITMAP LangString DESC_SecDivX ${LANG_ENGLISH} "The DivX Codec is required for DivX compressed movies." LangString DESC_SecXviD ${LANG_ENGLISH} "The XviD Codec is required for XviD compressed movies." LangString DESC_SecAC3 ${LANG_ENGLISH} "AC3 Filter is required for AC3 sound compression. Matrix Mixer can upmix any audio input to multiple speakers." LangString DESC_SecAF ${LANG_ENGLISH} "With DivX AntiFreeze Filter the movie does not freeze at corrupted frames." LangString DESC_SecG400 ${LANG_ENGLISH} "Subtitle tool with many configurations." LangString DESC_SecMP ${LANG_ENGLISH} "Windows Media Player Classic 6.4. Perfect for watching movies. Lots of functions." !macro UpgradeDLL LOCALFILE DESTFILE Push $R0 Push $R1 Push $R2 Push $R3 IfFileExists "${DESTFILE}" "" "copy_${LOCALFILE}" ClearErrors GetDLLVersionLocal "${LOCALFILE}" $R0 $R1 GetDLLVersion "${DESTFILE}" $R2 $R3 IfErrors "upgrade_${LOCALFILE}" IntCmpU $R0 $R2 "" "done_${LOCALFILE}" "upgrade_${LOCALFILE}" IntCmpU $R1 $R3 "done_${LOCALFILE}" "done_${LOCALFILE}" \ "upgrade_${LOCALFILE}" SetOverwrite try "upgrade_${LOCALFILE}:" !ifndef UPGRADEDLL_NOREGISTER UnRegDLL "${DESTFILE}" !endif ClearErrors StrCpy $R0 "${DESTFILE}" Call ":file_${LOCALFILE}" IfErrors "" "noreboot_${LOCALFILE}" GetTempFileName $R0 Call ":file_${LOCALFILE}" Rename /REBOOTOK $R0 "${DESTFILE}" !ifndef UPGRADEDLL_NOREGISTER WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\RunOnce" \ "Register ${DESTFILE}" '"$SYSDIR\rundll32.exe" \ "${DESTFILE},DllRegisterServer"' !endif Goto "done_${LOCALFILE}" "copy_${LOCALFILE}:" StrCpy $R0 "${DESTFILE}" Call ":file_${LOCALFILE}" "noreboot_${LOCALFILE}:" !ifndef UPGRADEDLL_NOREGISTER RegDLL "${DESTFILE}" !endif "done_${LOCALFILE}:" Pop $R3 Pop $R2 Pop $R1 Pop $R0 Goto "end_${LOCALFILE}" "file_${LOCALFILE}:" File /oname=$R0 "${LOCALFILE}" Return "end_${LOCALFILE}:" SetOverwrite on !macroend Function AddSharedDLL Exch $R1 Push $R0 ReadRegDword $R0 HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 IntOp $R0 $R0 + 1 WriteRegDWORD HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 $R0 Pop $R0 Pop $R1 FunctionEnd Function un.RemoveSharedDLL Exch $R1 Push $R0 ReadRegDword $R0 HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 StrCmp $R0 "" remove IntOp $R0 $R0 - 1 IntCmp $R0 0 rk rk uk rk: DeleteRegValue HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 goto remove uk: WriteRegDWORD HKLM Software\Microsoft\Windows\CurrentVersion\SharedDLLs $R1 $R0 Goto noremove remove: Delete /REBOOTOK $R1 noremove: Pop $R0 Pop $R1 FunctionEnd !define SF_SELECTED 1 Section "DivX Codec 5.0.5" SecDivX SectionIn 1 2 SetOutPath "$INSTDIR\DivX 5.0.5" File "DivX 5.0.5\Config.exe" File "DivX 5.0.5\license.txt" File "DivX 5.0.5\readme.txt" SetOutPath "$SYSDIR" File "DivX 5.0.5\system\divx.dll" !insertmacro UpgradeDLL "DivX 5.0.5\system\divxdec.ax" $SYSDIR\divxdec.ax Push $SYSDIR\divxdec.ax Call AddSharedDLL SectionEnd Section "XviD Codec 0.91" SecXviD SectionIn 1 2 SetOutPath "$INSTDIR\XviD 0.91" File "XviD 0.91\AviC.exe" File "XviD 0.91\StatsReader.exe" File "XviD 0.91\MiniCalc.exe" File "XviD 0.91\MiniCalc.txt" File "XviD 0.91\ReadMe.txt" File "XviD 0.91\XviD_Help.chm" SetOutPath "$SYSDIR" File "XviD 0.91\system\xvid.dll" File "XviD 0.91\system\xvid.ax" RegDLL $SYSDIR\xvid.ax SectionEnd Section "AC3 Filter 0.68b with Matrix Mixer 0.21a" SecAC3 SectionIn 1 2 SetOutPath "$INSTDIR\AC3 Filter 0.68b" File "AC3 Filter 0.68b\dialog_patch.exe" File "AC3 Filter 0.68b\ac3filter_eng.html" File "AC3 Filter 0.68b\_readme.txt" File "AC3 Filter 0.68b\GPL_eng.txt" !insertmacro UpgradeDLL "AC3 Filter 0.68b\ac3filter.ax" "$INSTDIR\AC3 Filter 0.68b\ac3filter.ax" Push "$INSTDIR\AC3 Filter 0.68b\ac3filter.ax" Call AddSharedDLL SetOutPath "$INSTDIR\AC3 Filter 0.68b\pic" File "AC3 Filter 0.68b\pic\equalizer.gif" File "AC3 Filter 0.68b\pic\filters.gif" File "AC3 Filter 0.68b\pic\main.gif" File "AC3 Filter 0.68b\pic\mixer.gif" File "AC3 Filter 0.68b\pic\preset.gif" File "AC3 Filter 0.68b\pic\system.gif" SetOutPath "$SYSDIR" File "AC3 Filter 0.68b\system\ac3filter.cpl" SetOutPath "$INSTDIR\Matrix Mixer 0.21a" File "Matrix Mixer 0.21a\matrix_mixer.ax" File "Matrix Mixer 0.21a\matrix_mixer_eng.html" SetOutPath "$INSTDIR\Matrix Mixer 0.21a\pic" File "Matrix Mixer 0.21a\pic\filters.gif" File "Matrix Mixer 0.21a\pic\main.gif" SetOutPath "$INSTDIR\Matrix Mixer 0.21a" RegDLL "$INSTDIR\Matrix Mixer 0.21a\matrix_mixer.ax" SectionEnd Section "DivX AntiFreeze 0.4" SecAF SectionIn 1 2 SetOutPath "$SYSDIR" !insertmacro UpgradeDLL "DivX AntiFreeze 0.4\system\DivXAF.ax" $SYSDIR\DivXAF.ax Push $SYSDIR\DivXAF.ax Call AddSharedDLL SectionEnd Section "DivX G400 2.7" SecG400 SectionIn 1 2 SetOutPath "$INSTDIR\PRR Utilities" File "DivX G400 2.7\divxg400.htm" SetOutPath "$SYSDIR" File "DivX G400 2.7\system\DivXG400.ax" RegDLL $SYSDIR\DivXG400.ax SectionEnd Section "Media Player 6.4.07.1110" SecMP SetOutPath "$INSTDIR\Media Player Classic" File "Media Player Classic\Windows Media Player 6.4.exe" File "Media Player Classic\avi.ico" File "Media Player Classic\DivX.ico" File "Media Player Classic\XviD.ico" ExecWait "$INSTDIR\Media Player Classic\Windows Media Player 6.4.exe /Q:A" SectionEnd Function .onInit InitPluginsDir File /oname=$PLUGINSDIR\Tasks.ini "Tasks.ini" FunctionEnd LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Choose additional tasks" LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "Choose witch additional tasks should be performed." Function LicenseText FindWindow $0 "#32770" "" $HWNDPARENT GetDlgItem $1 $0 102 #change SendMessage $1 ${WM_SETTEXT} 0 "STR:License Text$\r$\nLine 1$\r$\nLine 2$\r$\nLine 3" #change FunctionEnd Function AddTasks SectionGetFlags ${SecMP} $0 StrCmp $0 ${SF_SELECTED} 0 skipPage !insertmacro MUI_HEADER_TEXT "$(TEXT_IO_TITLE)" "$(TEXT_IO_SUBTITLE)" !insertmacro MUI_INSTALLOPTIONS_DISPLAY "Tasks.ini" skipPage: FunctionEnd Function ValidateCustom ReadINIStr ${TEMP} "$PLUGINSDIR\Tasks.ini" "Field 3" "State" StrCmp ${TEMP} 1 selAVI unselAVI ReadINIStr ${TEMP} "$PLUGINSDIR\Tasks.ini" "Field 4" "State" StrCmp ${TEMP} 1 selDivX unselDivX ReadINIStr ${TEMP} "$PLUGINSDIR\Tasks.ini" "Field 5" "State" StrCmp ${TEMP} 1 selXviD unselXviD selAVI: ReadRegStr $1 HKCR ".avi" "" StrCmp $1 "" LabelAVI StrCmp $1 "avifile" LabelAVI WriteRegStr HKCR ".avi" "backup_val" $1 LabelAVI: WriteRegStr HKCR ".avi" "" "avifile" ReadRegStr $0 HKCR "avifile" "" StrCmp $0 "" 0 skipAVIAssoc WriteRegStr HKCR "avifile" "" "video clip" WriteRegStr HKCR "avifile\shell" "" "open" WriteRegStr HKCR "avifile\DefaultIcon" "" "$INSTDIR\Media Player Classic\AVI.ico" skipAVIAssoc: WriteRegStr HKCR "avifile\shell\open\command" "" '"$PROGRAMFILES\Windows Media Player\MPlayer2.exe" "%1"' selDivX: ReadRegStr $1 HKCR ".divx" "" StrCmp $1 "" LabelDivX StrCmp $1 "divx_auto_file" LabelDivX WriteRegStr HKCR ".divx" "backup_val" $1 LabelDivX: WriteRegStr HKCR ".divx" "" "divx_auto_file" ReadRegStr $0 HKCR "divx_auto_file" "" StrCmp $0 "" 0 skipDivXAssoc WriteRegStr HKCR "divx_auto_file" "" "DIVX File" WriteRegStr HKCR "divx_auto_file\shell" "" "open" WriteRegStr HKCR "divx_auto_file\DefaultIcon" "" "$INSTDIR\Media Player Classic\DivX.ico" skipDivXAssoc: WriteRegStr HKCR "divx_auto_file\shell\open\command" "" '"$PROGRAMFILES\Windows Media Player\MPlayer2.exe" "%1"' selXviD: ReadRegStr $1 HKCR ".xvid" "" StrCmp $1 "" LabelXviD StrCmp $1 "xvid_auto_file" LabelXviD WriteRegStr HKCR ".xvid" "backup_val" $1 LabelXviD: WriteRegStr HKCR ".xvid" "" "xvid_auto_file" ReadRegStr $0 HKCR "xvid_auto_file" "" StrCmp $0 "" 0 skipXviDAssoc WriteRegStr HKCR "xvid_auto_file" "" "XVID File" WriteRegStr HKCR "xvid_auto_file\shell" "" "open" WriteRegStr HKCR "xvid_auto_file\DefaultIcon" "" "$INSTDIR\Media Player Classic\XviD.ico" skipXviDAssoc: WriteRegStr HKCR "xvid_auto_file\shell\open\command" "" '"$PROGRAMFILES\Windows Media Player\MPlayer2.exe" "%1"' unselAVI: unselDivX: unselXviD: FunctionEnd Section -post SetOutPath $INSTDIR File "install.ini" SectionGetFlags ${SecDivX} $0 IntOp $0 $0 & ${SF_SELECTED} WriteIniStr install.ini uninstallSection section1 $0 SetOutPath $INSTDIR WriteRegStr HKCU "Software\${MUI_PRODUCT}" "" $INSTDIR WriteRegStr HKCU "Software\${MUI_PRODUCT}" "Installer Language" $LANGUAGE WriteUninstaller "$INSTDIR\Uninstall.exe" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\X Codec Pack" "DisplayName" "X Codec Pack (remove only)" WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\X Codec Pack" "UninstallString" "$INSTDIR\Uninstall.exe" SectionEnd !insertmacro MUI_FUNCTIONS_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SecDivX} $(DESC_SecDivX) !insertmacro MUI_DESCRIPTION_TEXT ${SecXviD} $(DESC_SecXviD) !insertmacro MUI_DESCRIPTION_TEXT ${SecAC3} $(DESC_SecAC3) !insertmacro MUI_DESCRIPTION_TEXT ${SecAF} $(DESC_SecAF) !insertmacro MUI_DESCRIPTION_TEXT ${SecG400} $(DESC_SecG400) !insertmacro MUI_DESCRIPTION_TEXT ${SecMP} $(DESC_SecMP) !insertmacro MUI_FUNCTIONS_DESCRIPTION_END Section "Uninstall" Delete "$INSTDIR\DivX 5.0.5\config.exe" Delete "$INSTDIR\DivX 5.0.5\license.txt" Delete "$INSTDIR\DivX 5.0.5\readme.txt" RMDir "$INSTDIR\DivX 5.0.5" Delete $SYSDIR\divx.dll Push $SYSDIR\divxdec.ax Call un.RemoveSharedDLL Delete SYSDIR\divxdec.ax Delete "$INSTDIR\XviD 0.91\AviC.exe" Delete "$INSTDIR\XviD 0.91\StatsReader.exe" Delete "$INSTDIR\XviD 0.91\MiniCalc.exe" Delete "$INSTDIR\XviD 0.91\MiniCalc.txt" Delete "$INSTDIR\XviD 0.91\ReadMe.txt" Delete "$INSTDIR\XviD 0.91\XviD_Help.chm" RMDir "$INSTDIR\XviD 0.91" Delete $SYSDIR\xvid.dll UnRegDLL $SYSDIR\xvid.ax Delete $SYSDIR\xvid.ax Delete "$INSTDIR\AC3 Filter 0.68b\pic\equalizer.gif" Delete "$INSTDIR\AC3 Filter 0.68b\pic\filters.gif" Delete "$INSTDIR\AC3 Filter 0.68b\pic\main.gif" Delete "$INSTDIR\AC3 Filter 0.68b\pic\mixer.gif" Delete "$INSTDIR\AC3 Filter 0.68b\pic\preset.gif" Delete "$INSTDIR\AC3 Filter 0.68b\pic\system.gif" RMDir "$INSTDIR\AC3 Filter 0.68b\pic" Delete "$INSTDIR\AC3 Filter 0.68b\dialog_patch.exe" Delete "$INSTDIR\AC3 Filter 0.68b\ac3filter_eng.html" Delete "$INSTDIR\AC3 Filter 0.68b\_readme.txt" Delete "$INSTDIR\AC3 Filter 0.68b\GPL_eng.txt" Push "$INSTDIR\AC3 Filter 0.68b\ac3filter.ax" Call un.RemoveSharedDLL Delete "$INSTDIR\AC3 Filter 0.68b\ac3filter.ax" RMDir "$INSTDIR\AC3 Filter 0.68b" Delete $SYSDIR\ac3filter.cpl Delete "$INSTDIR\Matrix Mixer 0.21a\matrix_mixer_eng.html" Delete "$INSTDIR\Matrix Mixer 0.21a\pic\filters.gif" Delete "$INSTDIR\Matrix Mixer 0.21a\pic\main.gif" RMDir "$INSTDIR\Matrix Mixer 0.21a\pic" UnRegDLL "$INSTDIR\Matrix Mixer 0.21a\matrix_mixer.ax" Delete "$INSTDIR\Matrix Mixer 0.21a\matrix_mixer.ax" RMDir "$INSTDIR\Matrix Mixer 0.21a" Delete "$INSTDIR\PRR Utilities\divxg400.htm" UnRegDLL $SYSDIR\DivXG400.ax Delete $SYSDIR\DivXG400.ax Push $SYSDIR\DivXAF.ax Call un.RemoveSharedDLL Delete $SYSDIR\DivXAF.ax RMDir "$INSTDIR\PRR Utilities" Delete "$INSTDIR\Media Player Classic\Windows Media Player 6.4.exe" Delete "$INSTDIR\Media Player Classic\avi.ico" Delete "$INSTDIR\Media Player Classic\DivX.ico" Delete "$INSTDIR\Media Player Classic\XviD.ico" RMDir "$INSTDIR\Media Player Classic" Delete $INSTDIR\install.ini Delete $INSTDIR\Uninstall.exe RMDir $INSTDIR DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\${MUI_PRODUCT}" DeleteRegKey HKEY_LOCAL_MACHINE "SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\X Codec Pack" DeleteRegValue HKCU "Software\${MUI_PRODUCT}" "Installer Language" DeleteRegKey /ifempty HKCU "Software\${MUI_PRODUCT}" SectionEnd Function un.onInit ReadRegStr $LANGUAGE HKCU "Software\${MUI_PRODUCT}" "Installer Language" FunctionEnd