diff --git a/Red_Panda_CPP.pro b/Red_Panda_CPP.pro index a2cd4e50..9f98cd5b 100644 --- a/Red_Panda_CPP.pro +++ b/Red_Panda_CPP.pro @@ -76,16 +76,10 @@ unix:!macos: { win32: { !isEmpty(PREFIX) { target.path = $${PREFIX} - QMAKE_SUBSTITUTES += platform/windows/installer-scripts/config.nsh.in - QMAKE_SUBSTITUTES += platform/windows/installer-scripts/config32.nsh.in - QMAKE_SUBSTITUTES += platform/windows/installer-scripts/config-clang.nsh.in resources.path = $${PREFIX} resources.files += platform/windows/templates - resources.files += platform/windows/installer-scripts/config.nsh - resources.files += platform/windows/installer-scripts/config32.nsh - resources.files += platform/windows/installer-scripts/config-clang.nsh resources.files += platform/windows/qt.conf resources.files += README.md resources.files += NEWS.md diff --git a/packages/msys/build-clang.sh b/packages/msys/build-clang.sh deleted file mode 100644 index 8a6f510f..00000000 --- a/packages/msys/build-clang.sh +++ /dev/null @@ -1,82 +0,0 @@ -#!/bin/bash - -BUILD_DIR="${TEMP}/redpandacpp-build" -PACKAGE_DIR="${TEMP}/RedPanda-CPP" -GCC_DIR="/mingw64" -PATH="${GCC_DIR}/bin:${PATH}" -QMAKE="${GCC_DIR}/qt5-static/bin/qmake" -NSIS="/d/Program Files (x86)/NSIS/bin/makensis.exe" -SOURCE_DIR=`pwd` -MINGW="/e/Workspaces/contributes/MinGW/Clang64" -MINGW_NAME="Clang64" - -rm -rf "${BUILD_DIR}" -test -z "${BUILD_DIR}" | mkdir "${BUILD_DIR}" -rm -rf "${PACKAGE_DIR}" -mkdir "${PACKAGE_DIR}" - -echo "Building..." -pushd . -cd "${BUILD_DIR}" -make distclean -"$QMAKE" PREFIX="${PACKAGE_DIR}" -o Makefile "${SOURCE_DIR}\Red_Panda_Cpp.pro" -r -spec win32-g++ -make -j16 -make install -popd - -#echo "Making no-compiler installer ..." -#pushd . -#cd "${PACKAGE_DIR}" - -#cp "${SOURCE_DIR}/windows/installer-scripts/lang.nsh" . -#cp "${SOURCE_DIR}/windows/installer-scripts/redpanda-nocompiler.nsi" . - -#"${NSIS}" redpanda-nocompiler.nsi -#rm -f lang.nsh -#rm -f config.nsh -#rm -f config32.nsh -#rm -f redpanda-nocompiler.nsi - -#SETUP_NAME=`ls *.Setup.exe` -#PORTABLE_NAME=`echo $SETUP_NAME | sed 's/Setup.exe/Portable.7z/'` -#mv "$SETUP_NAME" "${SOURCE_DIR}" -#popd - -#echo "Making no-compiler Portable Package..." -#7z a -mmt8 -mx9 "${PORTABLE_NAME}" "${PACKAGE_DIR}" - -# we need reinstall config.nsh -#pushd . -#cd "${BUILD_DIR}" -#make install -#popd - -echo "Making installer..." - -pushd . -cd "${PACKAGE_DIR}" -ln -s "${MINGW}" $MinGW_NAME - -cp "${SOURCE_DIR}/platform/windows/qt.conf" . - -cp "${SOURCE_DIR}/windows/installer-scripts/lang.nsh" . -cp "${SOURCE_DIR}/windows/installer-scripts/redpanda-clang.nsi" . - -"${NSIS}" redpanda-clang.nsi -rm -f lang.nsh -rm -f config.nsh -rm -f config32.nsh -rm -f redpanda-clang.nsi - -SETUP_NAME=`ls *.Setup.exe` -PORTABLE_NAME=`echo $SETUP_NAME | sed 's/Setup.exe/Portable.7z/'` -mv "$SETUP_NAME" "${SOURCE_DIR}" - -popd - -echo "Making Portable Package..." -7z a -mmt8 -mx9 "${PORTABLE_NAME}" "${PACKAGE_DIR}" - -echo "Clean up..." -rm -rf "${PACKAGE_DIR}" - diff --git a/packages/msys/build-i686.sh b/packages/msys/build-i686.sh deleted file mode 100644 index 1a146f9a..00000000 --- a/packages/msys/build-i686.sh +++ /dev/null @@ -1,138 +0,0 @@ -#!/bin/bash - -set -euxo pipefail - -# Usage: -# packages/msys/build-i686.sh [-c|--clean] [-nd|--no-deps] [-t|--target-dir ] - -if [[ ! -v MSYSTEM || ${MSYSTEM} != "MINGW32" ]]; then - echo "This script must be run in a MinGW32 shell" - exit 1 -fi - -CLEAN=0 -CHECK_DEPS=1 -TARGET_DIR="$(pwd)/dist" -while [[ $# -gt 0 ]]; do - case $1 in - -c|--clean) - CLEAN=1 - shift - ;; - -nd|--no-deps) - CHECK_DEPS=0 - shift - ;; - -t|--target-dir) - TARGET_DIR="$2" - shift 2 - ;; - *) - echo "Unknown argument: $1" - exit 1 - ;; - esac -done - -BUILD_DIR="${TEMP}/redpanda-mingw-${MSYSTEM}-build" -PACKAGE_DIR="${TEMP}/redpanda-mingw-${MSYSTEM}-pkg" -QMAKE="${MINGW_PREFIX}/qt5-static/bin/qmake" -NSIS="/mingw32/bin/makensis" -SOURCE_DIR="$(pwd)" -MINGW_ARCHIVE="mingw32.7z" - -function fn_print_progress() { - echo -e "\e[1;32;44m$1\e[0m" -} - -## check deps - -if [[ ${CHECK_DEPS} -eq 1 ]]; then - deps=( - ${MINGW_PACKAGE_PREFIX}-{gcc,make,qt5-static,7zip} - mingw-w64-i686-nsis - git - ) - for dep in ${deps[@]}; do - pacman -Q ${dep} &>/dev/null || { - echo "Missing dependency: ${dep}" - exit 1 - } - done -fi - -if [[ ! -f "${SOURCE_DIR}/assets/${MINGW_ARCHIVE}" ]]; then - echo "Missing ${MINGW_ARCHIVE}" - exit 1 -fi - -## prepare dirs - -if [[ ${CLEAN} -eq 1 ]]; then - rm -rf "${BUILD_DIR}" - rm -rf "${PACKAGE_DIR}" -fi -mkdir -p "${BUILD_DIR}" "${PACKAGE_DIR}" "${TARGET_DIR}" - -## build - -fn_print_progress "Building..." -pushd . -cd "${BUILD_DIR}" -"$QMAKE" PREFIX="${PACKAGE_DIR}" -o Makefile "${SOURCE_DIR}\Red_Panda_Cpp.pro" -r -spec win32-g++ -mingw32-make -j$(nproc) -mingw32-make install -popd - -## prepare packaging resources - -echo "Making no-compiler installer ..." -pushd . -cd "${PACKAGE_DIR}" - -cp "${SOURCE_DIR}/platform/windows/qt.conf" . - -cp "${SOURCE_DIR}/platform/windows/installer-scripts/lang.nsh" . -cp "${SOURCE_DIR}/platform/windows/installer-scripts/redpanda-i686-nocompiler.nsi" . -cp "${SOURCE_DIR}/platform/windows/installer-scripts/redpanda-i686.nsi" . -popd - -## make no-compiler package - -pushd . -cd "${PACKAGE_DIR}" -fn_print_progress "Making no-compiler installer ..." -"${NSIS}" redpanda-i686-nocompiler.nsi - -SETUP_NAME="$(ls *.Setup.exe)" -PORTABLE_NAME="$(echo $SETUP_NAME | sed 's/Setup.exe/Portable.7z/')" - -fn_print_progress "Making no-compiler Portable Package..." -7z x "${SETUP_NAME}" -o"RedPanda-CPP" -xr'!$PLUGINSDIR' -x"!uninstall.exe" -7z a -mmt -mx9 -ms=on -mqs=on -mf=BCJ2 "${PORTABLE_NAME}" "RedPanda-CPP" -rm -rf "RedPanda-CPP" - -mv "${SETUP_NAME}" "${TARGET_DIR}" -mv "${PORTABLE_NAME}" "${TARGET_DIR}" -popd - -## make mingw package - -pushd . -cd "${PACKAGE_DIR}" -fn_print_progress "Making installer..." -[[ ! -d mingw32 ]] && 7z x "${SOURCE_DIR}/assets/${MINGW_ARCHIVE}" -o"${PACKAGE_DIR}" - -"${NSIS}" redpanda-i686.nsi - -SETUP_NAME="$(ls *.Setup.exe)" -PORTABLE_NAME="$(echo $SETUP_NAME | sed 's/Setup.exe/Portable.7z/')" - -fn_print_progress "Making Portable Package..." -7z x "${SETUP_NAME}" -o"RedPanda-CPP" -xr'!$PLUGINSDIR' -x"!uninstall.exe" -7z a -mmt -mx9 -ms=on -mqs=on -mf=BCJ2 "${PORTABLE_NAME}" "RedPanda-CPP" -rm -rf "RedPanda-CPP" - -mv "${SETUP_NAME}" "${TARGET_DIR}" -mv "${PORTABLE_NAME}" "${TARGET_DIR}" -popd diff --git a/packages/msys/build-x64.sh b/packages/msys/build-mingw.sh similarity index 53% rename from packages/msys/build-x64.sh rename to packages/msys/build-mingw.sh index e0649098..0990dcff 100644 --- a/packages/msys/build-x64.sh +++ b/packages/msys/build-mingw.sh @@ -5,11 +5,37 @@ set -euxo pipefail # Usage: # packages/msys/build-x64.sh [-c|--clean] [-nd|--no-deps] [-t|--target-dir ] -if [[ ! -v MSYSTEM || ( ${MSYSTEM} != "MINGW64" && ${MSYSTEM} != "UCRT64" ) ]]; then - echo "This script must be run in a MinGW64 or UCRT64 shell" +source version.inc +[[ -n "${APP_VERSION_SUFFIX}" ]] && APP_VERSION="${APP_VERSION}${APP_VERSION_SUFFIX}" + +if [[ ! -v MSYSTEM ]]; then + echo "This script must be run in MSYS2 shell" exit 1 fi +case "${MSYSTEM}" in + MINGW32|CLANG32) # there is no UCRT32 + NSIS_ARCH=x86 + BITNESS=32 + COMPILER_NAME="MinGW-w64 i686 GCC 8.1" + ARCHIVE_MINGW_COMPILER_BASENAME="RedPanda.C++.${APP_VERSION}.win32.${COMPILER_NAME}" + ARCHIVE_NO_COMPILER_BASENAME="RedPanda.C++.${APP_VERSION}.win32.No.Compiler" + ;; + MINGW64|UCRT64|CLANG64) + NSIS_ARCH=x64 + BITNESS=64 + COMPILER_NAME="MinGW-w64 X86_64 GCC 11.4" + ARCHIVE_MINGW_COMPILER_BASENAME="RedPanda.C++.${APP_VERSION}.win64.${COMPILER_NAME}" + ARCHIVE_NO_COMPILER_BASENAME="RedPanda.C++.${APP_VERSION}.win64.No.Compiler" + ;; + *) + echo "This script must be run in one of the following MSYS2 shells:" + echo " - MINGW32 / CLANG32" + echo " - MINGW64 / UCRT64 / CLANG64" + exit 1 + ;; +esac + CLEAN=0 CHECK_DEPS=1 TARGET_DIR="$(pwd)/dist" @@ -39,7 +65,7 @@ PACKAGE_DIR="${TEMP}/redpanda-mingw-${MSYSTEM}-pkg" QMAKE="${MINGW_PREFIX}/qt5-static/bin/qmake" NSIS="/mingw32/bin/makensis" SOURCE_DIR="$(pwd)" -MINGW_ARCHIVE="mingw64.7z" +MINGW_ARCHIVE="mingw${BITNESS}.7z" function fn_print_progress() { echo -e "\e[1;32;44m$1\e[0m" @@ -48,8 +74,16 @@ function fn_print_progress() { ## check deps if [[ ${CHECK_DEPS} -eq 1 ]]; then + case "${MSYSTEM}" in + MINGW32|MINGW64|UCRT64) + compiler=gcc + ;; + CLANG32|CLANG64) + compiler=clang + ;; + esac deps=( - ${MINGW_PACKAGE_PREFIX}-{gcc,make,qt5-static,7zip} + ${MINGW_PACKAGE_PREFIX}-{$compiler,make,qt5-static,7zip} mingw-w64-i686-nsis git ) @@ -79,7 +113,9 @@ mkdir -p "${BUILD_DIR}" "${PACKAGE_DIR}" "${TARGET_DIR}" fn_print_progress "Building..." pushd . cd "${BUILD_DIR}" -"$QMAKE" PREFIX="${PACKAGE_DIR}" X86_64=ON -o Makefile "${SOURCE_DIR}/Red_Panda_Cpp.pro" -r -spec win32-g++ +qmake_flags=() +[[ NSIS_ARCH == x64 ]] && qmake_flags+=("X86_64=ON") +"$QMAKE" PREFIX="${PACKAGE_DIR}" ${qmake_flags[@]} -o Makefile "${SOURCE_DIR}/Red_Panda_Cpp.pro" -r mingw32-make -j$(nproc) mingw32-make install popd @@ -92,19 +128,22 @@ cd "${PACKAGE_DIR}" cp "${SOURCE_DIR}/platform/windows/qt.conf" . cp "${SOURCE_DIR}/platform/windows/installer-scripts/lang.nsh" . -cp "${SOURCE_DIR}/platform/windows/installer-scripts/redpanda-nocompiler.nsi" . -cp "${SOURCE_DIR}/platform/windows/installer-scripts/redpanda-x64.nsi" . +cp "${SOURCE_DIR}/platform/windows/installer-scripts/redpanda.nsi" . popd ## make no-compiler package pushd . cd "${PACKAGE_DIR}" -fn_print_progress "Making no-compiler installer ..." -"${NSIS}" redpanda-nocompiler.nsi +SETUP_NAME="${ARCHIVE_NO_COMPILER_BASENAME}.Setup.exe" +PORTABLE_NAME="${ARCHIVE_NO_COMPILER_BASENAME}.Portable.7z" -SETUP_NAME="$(ls *.Setup.exe)" -PORTABLE_NAME="$(echo $SETUP_NAME | sed 's/Setup.exe/Portable.7z/')" +fn_print_progress "Making no-compiler installer ..." +"${NSIS}" \ + -DAPP_VERSION="${APP_VERSION}" \ + -DARCH="${NSIS_ARCH}" \ + -DFINALNAME="${SETUP_NAME}" \ + redpanda.nsi fn_print_progress "Making no-compiler Portable Package..." 7z x "${SETUP_NAME}" -o"RedPanda-CPP" -xr'!$PLUGINSDIR' -x"!uninstall.exe" @@ -119,13 +158,18 @@ popd pushd . cd "${PACKAGE_DIR}" +SETUP_NAME="${ARCHIVE_MINGW_COMPILER_BASENAME}.Setup.exe" +PORTABLE_NAME="${ARCHIVE_MINGW_COMPILER_BASENAME}.Portable.7z" + fn_print_progress "Making installer..." -[[ ! -d mingw64 ]] && 7z x "${SOURCE_DIR}/assets/${MINGW_ARCHIVE}" -o"${PACKAGE_DIR}" +[[ ! -d "mingw${BITNESS}" ]] && 7z x "${SOURCE_DIR}/assets/${MINGW_ARCHIVE}" -o"${PACKAGE_DIR}" -"${NSIS}" redpanda-x64.nsi - -SETUP_NAME="$(ls *.Setup.exe)" -PORTABLE_NAME="$(echo $SETUP_NAME | sed 's/Setup.exe/Portable.7z/')" +"${NSIS}" \ + -DAPP_VERSION="${APP_VERSION}" \ + -DARCH="${NSIS_ARCH}" \ + -DFINALNAME="${SETUP_NAME}" \ + -DHAVE_MINGW -DCOMPILERNAME="${COMPILER_NAME}" -DCOMPILERFOLDER="mingw${BITNESS}" \ + redpanda.nsi fn_print_progress "Making Portable Package..." 7z x "${SETUP_NAME}" -o"RedPanda-CPP" -xr'!$PLUGINSDIR' -x"!uninstall.exe" diff --git a/platform/windows/installer-scripts/config-clang.nsh.in b/platform/windows/installer-scripts/config-clang.nsh.in deleted file mode 100644 index 278b88df..00000000 --- a/platform/windows/installer-scripts/config-clang.nsh.in +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# Startup - -!define COMPILERNAME \"Clang 14.0.0\" -!define DEVCPP_VERSION \"$${APP_VERSION}\" - diff --git a/platform/windows/installer-scripts/config.nsh.in b/platform/windows/installer-scripts/config.nsh.in deleted file mode 100644 index ec053f88..00000000 --- a/platform/windows/installer-scripts/config.nsh.in +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# Startup - -!define COMPILERNAME \"MinGW-w64 X86_64 GCC 11.4\" -!define DEVCPP_VERSION \"$${APP_VERSION}\" - diff --git a/platform/windows/installer-scripts/config32.nsh.in b/platform/windows/installer-scripts/config32.nsh.in deleted file mode 100644 index a441badb..00000000 --- a/platform/windows/installer-scripts/config32.nsh.in +++ /dev/null @@ -1,6 +0,0 @@ -#################################################################### -# Startup - -!define COMPILERNAME \"MinGW-w64 i686 GCC 8.1\" -!define DEVCPP_VERSION \"$${APP_VERSION}\" - diff --git a/platform/windows/installer-scripts/redpanda-clang.nsi b/platform/windows/installer-scripts/redpanda-clang.nsi deleted file mode 100644 index f33bf932..00000000 --- a/platform/windows/installer-scripts/redpanda-clang.nsi +++ /dev/null @@ -1,491 +0,0 @@ -#################################################################### -# Startup -SetFont "Segoe UI" 11 -!include "config-clang.nsh" -!define COMPILERFOLDER "Clang64" -!define FINALNAME "RedPanda.C++.${DEVCPP_VERSION}.win64.${COMPILERNAME}.Setup.exe" -!define DISPLAY_NAME "Red Panda C++ ${DEVCPP_VERSION}" - -!include "MUI2.nsh" -!include "lang.nsh" - -!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit - -#################################################################### -# Installer Attributes - -Name "${DISPLAY_NAME}" -OutFile "${FINALNAME}" -Caption "${DISPLAY_NAME}" - -LicenseData "LICENSE" -InstallDir $PROGRAMFILES64\RedPanda-Cpp -#################################################################### -# Interface Settings - -ShowInstDetails show -AutoCloseWindow false -SilentInstall normal -CRCCheck on -SetCompressor /SOLID /FINAL lzma -SetCompressorDictSize 64 -SetDatablockOptimize on -SetOverwrite try -XPStyle on - -ManifestDPIAware true - -InstType "Full";1 -InstType "Minimal";2 -InstType "Safe";3 - -## Remember the installer language -!define MUI_LANGDLL_REGISTRY_ROOT "HKLM" -!define MUI_LANGDLL_REGISTRY_KEY "Software\RedPanda-C++" -!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" - -#################################################################### -# Pages - -!define MUI_ICON "devcpp.ico" -!define MUI_UNICON "devcpp.ico" -!define MUI_ABORTWARNING -!define MUI_LANGDLL_ALLLANGUAGES -!define MUI_FINISHPAGE_RUN "$INSTDIR\RedPandaIDE.exe" -!define MUI_FINISHPAGE_NOREBOOTSUPPORT -!define MUI_COMPONENTSPAGE_SMALLDESC - -!insertmacro MUI_PAGE_LICENSE "LICENSE" -!insertmacro MUI_PAGE_COMPONENTS -!insertmacro MUI_PAGE_DIRECTORY -!insertmacro MUI_PAGE_INSTFILES -!insertmacro MUI_PAGE_FINISH -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_INSTFILES - -#################################################################### -# Languages - -!insertmacro MUI_LANGUAGE "English" -!insertmacro MUI_LANGUAGE "SimpChinese" - -#################################################################### -# Files, by option section - -Section "$(SectionMainName)" SectionMain - SectionIn 1 2 3 RO - - SetOutPath $INSTDIR - - SetRegView 64 - ; Allways create an uninstaller - WriteUninstaller "$INSTDIR\uninstall.exe" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayName" "Redpanda-C++" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "UninstallString" "$INSTDIR\uninstall.exe" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayVersion" "${DEVCPP_VERSION}" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayIcon" "$INSTDIR\RedPandaIDE.exe" - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "Publisher" "Roy Qu(royqh1979@gmail.com)" - - - ; Write required files - File "RedPandaIDE.exe" - File "ConsolePauser.exe" - File "redpanda-win-git-askpass.exe" - File "astyle.exe" - File "LICENSE" - File "NEWS.md" - File "README.md" - File "qt.conf" - - ; Write required paths - SetOutPath $INSTDIR\Templates - File /nonfatal /r "Templates\*" - -SectionEnd - -Section "$(SectionMinGWName)" SectionMinGW - SectionIn 1 3 - SetOutPath $INSTDIR\Clang64 - - File /nonfatal /r "${COMPILERFOLDER}\*" -SectionEnd - -#################################################################### -# File association -SubSection "$(SectionAssocsName)" SectionAssocs -Section "$(SectionAssocExtNameBegin) .dev $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".dev" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".dev" "" "DevCpp.dev" - WriteRegStr HKCR "DevCpp.dev" "" "Dev-C++ Project File" - WriteRegStr HKCR "DevCpp.dev\DefaultIcon" "" '$0,3' - WriteRegStr HKCR "DevCpp.dev\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .c $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".c" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".c" "" "DevCpp.c" - WriteRegStr HKCR "DevCpp.c" "" "C Source File" - WriteRegStr HKCR "DevCpp.c\DefaultIcon" "" '$0,4' - WriteRegStr HKCR "DevCpp.c\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .cpp $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".cpp" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".cpp" "" "DevCpp.cpp" - WriteRegStr HKCR "DevCpp.cpp" "" "C++ Source File" - WriteRegStr HKCR "DevCpp.cpp\DefaultIcon" "" '$0,5' - WriteRegStr HKCR "DevCpp.cpp\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .cxx $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".cxx" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".cxx" "" "DevCpp.cxx" - WriteRegStr HKCR "DevCpp.cxx" "" "C++ Source File" - WriteRegStr HKCR "DevCpp.cxx\DefaultIcon" "" '$0,5' - WriteRegStr HKCR "DevCpp.cxx\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .cc $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".cc" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".cc" "" "DevCpp.cc" - WriteRegStr HKCR "DevCpp.cc" "" "C++ Source File" - WriteRegStr HKCR "DevCpp.cc\DefaultIcon" "" '$0,5' - WriteRegStr HKCR "DevCpp.cc\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .hxx $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".hxx" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".hxx" "" "DevCpp.hxx" - WriteRegStr HKCR "DevCpp.hxx" "" "C++ Header File" - WriteRegStr HKCR "DevCpp.hxx\DefaultIcon" "" '$0,7' - WriteRegStr HKCR "DevCpp.hxx\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .h $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".h" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".h" "" "DevCpp.h" - WriteRegStr HKCR "DevCpp.h" "" "C Header File" - WriteRegStr HKCR "DevCpp.h\DefaultIcon" "" '$0,6' - WriteRegStr HKCR "DevCpp.h\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .hpp $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".hpp" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".hpp" "" "DevCpp.hpp" - WriteRegStr HKCR "DevCpp.hpp" "" "C++ Header File" - WriteRegStr HKCR "DevCpp.hpp\DefaultIcon" "" '$0,7' - WriteRegStr HKCR "DevCpp.hpp\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -SubSectionEnd - -#################################################################### -# Shortcuts -SubSection "$(SectionShortcutsName)" SectionShortcuts - -Section "$(SectionMenuLaunchName)" SectionMenuLaunch - SectionIn 1 3 - - ; always use all user start menu, normal users can delete these - SetShellVarContext all - StrCpy $0 $SMPROGRAMS ; start menu Programs folder - CreateDirectory "$0\$(MessageAppName)" - CreateShortCut "$0\$(MessageAppName)\$(MessageAppName).lnk" "$INSTDIR\RedPandaIDE.exe" - CreateShortCut "$0\$(MessageAppName)\License.lnk" "$INSTDIR\LICENSE" - CreateShortCut "$0\$(MessageAppName)\Uninstall $(MessageAppName).lnk" "$INSTDIR\uninstall.exe" -SectionEnd - -Section "$(SectionDesktopLaunchName)" SectionDesktopLaunch - SectionIn 1 3 - - ; always use current user desktop, normal users can't delete all users' shortcuts - SetShellVarContext current - CreateShortCut "$DESKTOP\$(MessageAppName).lnk" "$INSTDIR\RedPandaIDE.exe" -SectionEnd - -SubSectionEnd - -Section "$(SectionConfigName)" SectionConfig - SectionIn 3 - - RMDir /r "$APPDATA\RedPandaIDE" - -SectionEnd - -#################################################################### - -!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN -!insertmacro MUI_DESCRIPTION_TEXT ${SectionMain} "$(MessageSectionMain)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionMinGW} "$(MessageSectionMinGW)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionShortcuts} "$(MessageSectionShortcuts)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionAssocs} "$(MessageSectionAssocs)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionConfig} "$(MessageSectionConfig)" -!insertmacro MUI_FUNCTION_DESCRIPTION_END - -#################################################################### -# Functions, utilities - -Function .onInit - !insertmacro MUI_LANGDLL_DISPLAY - - IfFileExists "C:\Dev-Cpp\devcpp.exe" 0 +2 - SectionSetFlags ${SectionConfig} ${SF_SELECTED} # Remove old Dev-Cpp config files - - IfFileExists "$APPDATA\Dev-Cpp\devcpp.cfg" 0 +2 # deprecated config file - SectionSetFlags ${SectionConfig} ${SF_SELECTED} - -FunctionEnd - -Function myGuiInit - - ; uninstall existing - SetRegView 32 - Call UninstallExisting - SetRegView 64 - Call UninstallExisting - -FunctionEnd - -;backup file association -Function BackupAssoc - ;$0 is an extension - for example ".dev" - - ;check if backup already exists - ReadRegStr $1 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++\Backup" "$0" - ;don't backup if backup exists in registry - StrCmp $1 "" 0 no_assoc - - ReadRegStr $1 HKCR "$0" "" - ;don't backup dev-cpp associations - StrCmp $1 "DevCpp$0" no_assoc - - StrCmp $1 "" no_assoc - WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++\Backup" "$0" "$1" - no_assoc: - -FunctionEnd - -Function un.onInit - !insertmacro MUI_UNGETLANGUAGE -FunctionEnd - -;restore file association -Function un.RestoreAssoc - ;$0 is an extension - for example ".dev" - - DeleteRegKey HKCR "$0" - ReadRegStr $1 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++\Backup" "$0" - StrCmp $1 "" no_backup - WriteRegStr HKCR "$0" "" "$1" - Call un.RefreshShellIcons - no_backup: - -FunctionEnd - -;http://nsis.sourceforge.net/archive/viewpage.php?pageid=202 -;After changing file associations, you can call this macro to refresh the shell immediatly. -;It calls the shell32 function SHChangeNotify. This will force windows to reload your changes from the registry. -!define SHCNE_ASSOCCHANGED 0x08000000 -!define SHCNF_IDLIST 0 - -Function RefreshShellIcons - ; By jerome tremblay - april 2003 - System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \ - (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' -FunctionEnd - -Function un.RefreshShellIcons - ; By jerome tremblay - april 2003 - System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \ - (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' -FunctionEnd - -Function un.DeleteDirIfEmpty - FindFirst $R0 $R1 "$0\*.*" - strcmp $R1 "." 0 NoDelete - FindNext $R0 $R1 - strcmp $R1 ".." 0 NoDelete - ClearErrors - FindNext $R0 $R1 - IfErrors 0 NoDelete - FindClose $R0 - Sleep 1000 - RMDir "$0" - NoDelete: - FindClose $R0 -FunctionEnd - -Function GetParent - - Exch $R0 - Push $R1 - Push $R2 - Push $R3 - - StrCpy $R1 0 - StrLen $R2 $R0 - - loop: - IntOp $R1 $R1 + 1 - IntCmp $R1 $R2 get 0 get - StrCpy $R3 $R0 1 -$R1 - StrCmp $R3 "\" get - Goto loop - - get: - StrCpy $R0 $R0 -$R1 - - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 - -FunctionEnd - -Function UninstallExisting - ReadRegStr $R0 HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "UninstallString" - - StrCmp $R0 "" done - - Push $R0 - Call GetParent - Pop $R1 - - MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ - "$(MessageUninstallExisting)" \ - IDOK uninst - Abort - - ;Run the uninstaller - uninst: - ClearErrors - HideWindow - ClearErrors - ExecWait '"$R0" _?=$R1' - BringToFront - - done: -FunctionEnd - -#################################################################### -# uninstall - -UninstallText "$(MessageUninstallText)" -ShowUninstDetails show - -Section "Uninstall" - - ; Remove uninstaller - Delete "$INSTDIR\uninstall.exe" - - ; Remove start menu stuff, located in all users folder - SetShellVarContext all - Delete "$SMPROGRAMS\$(MessageAppName)\$(MessageAppName).lnk" - Delete "$SMPROGRAMS\$(MessageAppName)\License.lnk" - Delete "$SMPROGRAMS\$(MessageAppName)\Uninstall $(MessageAppName).lnk" - RMDir "$SMPROGRAMS\$(MessageAppName)" - - ; Remove desktop stuff, located in current user folder - SetShellVarContext current - Delete "$QUICKLAUNCH\$(MessageAppName).lnk" - Delete "$DESKTOP\$(MessageAppName).lnk" - - ; Restore file associations - StrCpy $0 ".dev" - Call un.RestoreAssoc - StrCpy $0 ".c" - Call un.RestoreAssoc - StrCpy $0 ".cpp" - Call un.RestoreAssoc - StrCpy $0 ".h" - Call un.RestoreAssoc - StrCpy $0 ".hpp" - Call un.RestoreAssoc - - DeleteRegKey HKCR "DevCpp.dev" - DeleteRegKey HKCR "DevCpp.c" - DeleteRegKey HKCR "DevCpp.cpp" - DeleteRegKey HKCR "DevCpp.cxx" - DeleteRegKey HKCR "DevCpp.cc" - DeleteRegKey HKCR "DevCpp.h" - DeleteRegKey HKCR "DevCpp.hpp" - DeleteRegKey HKCR "DevCpp.hxx" - - - Delete "$INSTDIR\NEWS.md" - Delete "$INSTDIR\RedPandaIDE.exe" - Delete "$INSTDIR\ConsolePauser.exe" - Delete "$INSTDIR\redpanda-win-git-askpass.exe" - Delete "$INSTDIR\astyle.exe" - Delete "$INSTDIR\LICENSE" - Delete "$INSTDIR\README.md" - Delete "$INSTDIR\qt.conf" - - RMDir /r "$INSTDIR\Lang" - RMDir /r "$INSTDIR\Templates" - RMDir /r "$INSTDIR\MinGW32" - RMDir /r "$INSTDIR\MinGW64" - RMDir /r "$INSTDIR\Clang64" - - StrCpy $0 "$INSTDIR" - Call un.DeleteDirIfEmpty - - ; Remove registry keys - DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" - DeleteRegKey HKCU "Software\RedPanda-C++" - - IfSilent +2 ; Don't ask when running in silent mode - MessageBox MB_YESNO "$(MessageRemoveConfig)" IDNO Done - - RMDir /r "$APPDATA\RedPandaIDE" - -Done: -SectionEnd \ No newline at end of file diff --git a/platform/windows/installer-scripts/redpanda-i686-nocompiler.nsi b/platform/windows/installer-scripts/redpanda-i686-nocompiler.nsi deleted file mode 100644 index e9510624..00000000 --- a/platform/windows/installer-scripts/redpanda-i686-nocompiler.nsi +++ /dev/null @@ -1,482 +0,0 @@ -#################################################################### -# Startup -SetFont "Segoe UI" 11 -Unicode True -!include "config32.nsh" -!define FINALNAME "RedPanda.C++.${DEVCPP_VERSION}.win32.No.Compiler.Setup.exe" -!define DISPLAY_NAME "Red Panda C++ 32bit ${DEVCPP_VERSION}" - -!include "MUI2.nsh" -!include "lang.nsh" - -!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit - -#################################################################### -# Installer Attributes - -Name "${DISPLAY_NAME}" -OutFile "${FINALNAME}" -Caption "${DISPLAY_NAME}" - -LicenseData "LICENSE" -InstallDir $PROGRAMFILES64\RedPanda-Cpp -#################################################################### -# Interface Settings - -ShowInstDetails show -AutoCloseWindow false -SilentInstall normal -CRCCheck on -SetCompressor /SOLID /FINAL lzma -SetCompressorDictSize 64 -SetDatablockOptimize on -SetOverwrite try -XPStyle on - -ManifestDPIAware true - -InstType "Full";1 -InstType "Minimal";2 -InstType "Safe";3 - -## Remember the installer language -!define MUI_LANGDLL_REGISTRY_ROOT "ShCtx" -!define MUI_LANGDLL_REGISTRY_KEY "Software\RedPanda-C++" -!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" - -#################################################################### -# Pages - -!define MUI_ICON "devcpp.ico" -!define MUI_UNICON "devcpp.ico" -!define MUI_ABORTWARNING -!define MUI_LANGDLL_ALLLANGUAGES -!define MUI_FINISHPAGE_RUN "$INSTDIR\RedPandaIDE.exe" -!define MUI_FINISHPAGE_NOREBOOTSUPPORT -!define MUI_COMPONENTSPAGE_SMALLDESC - -!insertmacro MUI_PAGE_LICENSE "LICENSE" -!insertmacro MUI_PAGE_COMPONENTS -!insertmacro MUI_PAGE_DIRECTORY -!insertmacro MUI_PAGE_INSTFILES -!insertmacro MUI_PAGE_FINISH -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_INSTFILES - -#################################################################### -# Languages - -!insertmacro MUI_LANGUAGE "English" -!insertmacro MUI_LANGUAGE "SimpChinese" - -#################################################################### -# Files, by option section - -Section "$(SectionMainName)" SectionMain - SectionIn 1 2 3 RO - - SetOutPath $INSTDIR - - ; Allways create an uninstaller - WriteUninstaller "$INSTDIR\uninstall.exe" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayName" "Redpanda-C++" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "UninstallString" "$INSTDIR\uninstall.exe" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayVersion" "${DEVCPP_VERSION}" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayIcon" "$INSTDIR\RedPandaIDE.exe" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "Publisher" "Roy Qu(royqh1979@gmail.com)" - - - ; Write required files - File "RedPandaIDE.exe" - File "ConsolePauser.exe" - File "redpanda-win-git-askpass.exe" - File "astyle.exe" - File "LICENSE" - File "NEWS.md" - File "README.md" - File "qt.conf" - - ; Write required paths - SetOutPath $INSTDIR\Templates - File /nonfatal /r "Templates\*" - -SectionEnd - -#################################################################### -# File association -SubSection "$(SectionAssocsName)" SectionAssocs -Section "$(SectionAssocExtNameBegin) .dev $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".dev" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".dev" "" "DevCpp.dev" - WriteRegStr HKCR "DevCpp.dev" "" "Dev-C++ Project File" - WriteRegStr HKCR "DevCpp.dev\DefaultIcon" "" '$0,3' - WriteRegStr HKCR "DevCpp.dev\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .c $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".c" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".c" "" "DevCpp.c" - WriteRegStr HKCR "DevCpp.c" "" "C Source File" - WriteRegStr HKCR "DevCpp.c\DefaultIcon" "" '$0,4' - WriteRegStr HKCR "DevCpp.c\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .cpp $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".cpp" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".cpp" "" "DevCpp.cpp" - WriteRegStr HKCR "DevCpp.cpp" "" "C++ Source File" - WriteRegStr HKCR "DevCpp.cpp\DefaultIcon" "" '$0,5' - WriteRegStr HKCR "DevCpp.cpp\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .cxx $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".cxx" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".cxx" "" "DevCpp.cxx" - WriteRegStr HKCR "DevCpp.cxx" "" "C++ Source File" - WriteRegStr HKCR "DevCpp.cxx\DefaultIcon" "" '$0,5' - WriteRegStr HKCR "DevCpp.cxx\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .cc $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".cc" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".cc" "" "DevCpp.cc" - WriteRegStr HKCR "DevCpp.cc" "" "C++ Source File" - WriteRegStr HKCR "DevCpp.cc\DefaultIcon" "" '$0,5' - WriteRegStr HKCR "DevCpp.cc\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .hxx $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".hxx" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".hxx" "" "DevCpp.hxx" - WriteRegStr HKCR "DevCpp.hxx" "" "C++ Header File" - WriteRegStr HKCR "DevCpp.hxx\DefaultIcon" "" '$0,7' - WriteRegStr HKCR "DevCpp.hxx\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .h $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".h" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".h" "" "DevCpp.h" - WriteRegStr HKCR "DevCpp.h" "" "C Header File" - WriteRegStr HKCR "DevCpp.h\DefaultIcon" "" '$0,6' - WriteRegStr HKCR "DevCpp.h\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .hpp $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".hpp" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".hpp" "" "DevCpp.hpp" - WriteRegStr HKCR "DevCpp.hpp" "" "C++ Header File" - WriteRegStr HKCR "DevCpp.hpp\DefaultIcon" "" '$0,7' - WriteRegStr HKCR "DevCpp.hpp\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -SubSectionEnd - -#################################################################### -# Shortcuts -SubSection "$(SectionShortcutsName)" SectionShortcuts - -Section "$(SectionMenuLaunchName)" SectionMenuLaunch - SectionIn 1 3 - - StrCpy $0 $SMPROGRAMS ; start menu Programs folder - CreateDirectory "$0\$(MessageAppName)" - CreateShortCut "$0\$(MessageAppName)\$(MessageAppName).lnk" "$INSTDIR\RedPandaIDE.exe" - CreateShortCut "$0\$(MessageAppName)\License.lnk" "$INSTDIR\LICENSE" - CreateShortCut "$0\$(MessageAppName)\Uninstall $(MessageAppName).lnk" "$INSTDIR\uninstall.exe" -SectionEnd - -Section "$(SectionDesktopLaunchName)" SectionDesktopLaunch - SectionIn 1 3 - - CreateShortCut "$DESKTOP\$(MessageAppName).lnk" "$INSTDIR\RedPandaIDE.exe" -SectionEnd - -SubSectionEnd - -Section "$(SectionConfigName)" SectionConfig - SectionIn 3 - - RMDir /r "$APPDATA\RedPandaIDE" - -SectionEnd - -#################################################################### - -!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN -!insertmacro MUI_DESCRIPTION_TEXT ${SectionMain} "$(MessageSectionMain)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionShortcuts} "$(MessageSectionShortcuts)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionAssocs} "$(MessageSectionAssocs)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionConfig} "$(MessageSectionConfig)" -!insertmacro MUI_FUNCTION_DESCRIPTION_END - -#################################################################### -# Functions, utilities - -Function .onInit - !insertmacro MUI_LANGDLL_DISPLAY - - IfFileExists "C:\Dev-Cpp\devcpp.exe" 0 +2 - SectionSetFlags ${SectionConfig} ${SF_SELECTED} # Remove old Dev-Cpp config files - - IfFileExists "$APPDATA\Dev-Cpp\devcpp.cfg" 0 +2 # deprecated config file - SectionSetFlags ${SectionConfig} ${SF_SELECTED} - - SetShellVarContext all - SetRegView 32 -FunctionEnd - -Function myGuiInit - - ; uninstall existing - SetRegView 32 - Call UninstallExisting - SetRegView 64 - Call UninstallExisting - SetRegView 32 - -FunctionEnd - -;backup file association -Function BackupAssoc - ;$0 is an extension - for example ".dev" - - ;check if backup already exists - ReadRegStr $1 ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++\Backup" "$0" - ;don't backup if backup exists in registry - StrCmp $1 "" 0 no_assoc - - ReadRegStr $1 HKCR "$0" "" - ;don't backup dev-cpp associations - StrCmp $1 "DevCpp$0" no_assoc - - StrCmp $1 "" no_assoc - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++\Backup" "$0" "$1" - no_assoc: - -FunctionEnd - -Function un.onInit - !insertmacro MUI_UNGETLANGUAGE - - SetShellVarContext all - SetRegView 32 -FunctionEnd - -;restore file association -Function un.RestoreAssoc - ;$0 is an extension - for example ".dev" - - DeleteRegKey HKCR "$0" - ReadRegStr $1 ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++\Backup" "$0" - StrCmp $1 "" no_backup - WriteRegStr HKCR "$0" "" "$1" - Call un.RefreshShellIcons - no_backup: - -FunctionEnd - -;http://nsis.sourceforge.net/archive/viewpage.php?pageid=202 -;After changing file associations, you can call this macro to refresh the shell immediatly. -;It calls the shell32 function SHChangeNotify. This will force windows to reload your changes from the registry. -!define SHCNE_ASSOCCHANGED 0x08000000 -!define SHCNF_IDLIST 0 - -Function RefreshShellIcons - ; By jerome tremblay - april 2003 - System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \ - (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' -FunctionEnd - -Function un.RefreshShellIcons - ; By jerome tremblay - april 2003 - System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \ - (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' -FunctionEnd - -Function un.DeleteDirIfEmpty - FindFirst $R0 $R1 "$0\*.*" - strcmp $R1 "." 0 NoDelete - FindNext $R0 $R1 - strcmp $R1 ".." 0 NoDelete - ClearErrors - FindNext $R0 $R1 - IfErrors 0 NoDelete - FindClose $R0 - Sleep 1000 - RMDir "$0" - NoDelete: - FindClose $R0 -FunctionEnd - -Function GetParent - - Exch $R0 - Push $R1 - Push $R2 - Push $R3 - - StrCpy $R1 0 - StrLen $R2 $R0 - - loop: - IntOp $R1 $R1 + 1 - IntCmp $R1 $R2 get 0 get - StrCpy $R3 $R0 1 -$R1 - StrCmp $R3 "\" get - Goto loop - - get: - StrCpy $R0 $R0 -$R1 - - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 - -FunctionEnd - -Function UninstallExisting - ReadRegStr $R0 ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "UninstallString" - - StrCmp $R0 "" done - - Push $R0 - Call GetParent - Pop $R1 - - MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ - "$(MessageUninstallExisting)" \ - IDOK uninst - Abort - - ;Run the uninstaller - uninst: - ClearErrors - HideWindow - ClearErrors - ExecWait '"$R0" _?=$R1' - BringToFront - - done: -FunctionEnd - -#################################################################### -# uninstall - -UninstallText "$(MessageUninstallText)" -ShowUninstDetails show - -Section "Uninstall" - - ; Remove uninstaller - Delete "$INSTDIR\uninstall.exe" - - ; Remove start menu stuff - Delete "$SMPROGRAMS\$(MessageAppName)\$(MessageAppName).lnk" - Delete "$SMPROGRAMS\$(MessageAppName)\License.lnk" - Delete "$SMPROGRAMS\$(MessageAppName)\Uninstall $(MessageAppName).lnk" - RMDir "$SMPROGRAMS\$(MessageAppName)" - - ; Remove desktop stuff - Delete "$QUICKLAUNCH\$(MessageAppName).lnk" - Delete "$DESKTOP\$(MessageAppName).lnk" - - ; Restore file associations - StrCpy $0 ".dev" - Call un.RestoreAssoc - StrCpy $0 ".c" - Call un.RestoreAssoc - StrCpy $0 ".cpp" - Call un.RestoreAssoc - StrCpy $0 ".h" - Call un.RestoreAssoc - StrCpy $0 ".hpp" - Call un.RestoreAssoc - - DeleteRegKey HKCR "DevCpp.dev" - DeleteRegKey HKCR "DevCpp.c" - DeleteRegKey HKCR "DevCpp.cpp" - DeleteRegKey HKCR "DevCpp.cxx" - DeleteRegKey HKCR "DevCpp.cc" - DeleteRegKey HKCR "DevCpp.h" - DeleteRegKey HKCR "DevCpp.hpp" - DeleteRegKey HKCR "DevCpp.hxx" - - - Delete "$INSTDIR\NEWS.md" - Delete "$INSTDIR\RedPandaIDE.exe" - Delete "$INSTDIR\ConsolePauser.exe" - Delete "$INSTDIR\redpanda-win-git-askpass.exe" - Delete "$INSTDIR\astyle.exe" - Delete "$INSTDIR\LICENSE" - Delete "$INSTDIR\README.md" - Delete "$INSTDIR\qt.conf" - - RMDir /r "$INSTDIR\Lang" - RMDir /r "$INSTDIR\Templates" - RMDir /r "$INSTDIR\MinGW32" - RMDir /r "$INSTDIR\MinGW64" - RMDir /r "$INSTDIR\Clang64" - - StrCpy $0 "$INSTDIR" - Call un.DeleteDirIfEmpty - - ; Remove registry keys - DeleteRegKey ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" - DeleteRegKey ShCtx "Software\RedPanda-C++" - - IfSilent +2 ; Don't ask when running in silent mode - MessageBox MB_YESNO "$(MessageRemoveConfig)" IDNO Done - - RMDir /r "$APPDATA\RedPandaIDE" - -Done: -SectionEnd diff --git a/platform/windows/installer-scripts/redpanda-i686.nsi b/platform/windows/installer-scripts/redpanda-i686.nsi deleted file mode 100644 index ef2e04ba..00000000 --- a/platform/windows/installer-scripts/redpanda-i686.nsi +++ /dev/null @@ -1,492 +0,0 @@ -#################################################################### -# Startup -SetFont "Segoe UI" 11 -Unicode True -!include "config32.nsh" -!define COMPILERFOLDER "MinGW32" -!define FINALNAME "RedPanda.C++.${DEVCPP_VERSION}.win32.${COMPILERNAME}.Setup.exe" -!define DISPLAY_NAME "Red Panda C++ 32 bit ${DEVCPP_VERSION}" - -!include "MUI2.nsh" -!include "lang.nsh" - -!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit - -#################################################################### -# Installer Attributes - -Name "${DISPLAY_NAME}" -OutFile "${FINALNAME}" -Caption "${DISPLAY_NAME}" - -LicenseData "LICENSE" -InstallDir $PROGRAMFILES\RedPanda-Cpp -#################################################################### -# Interface Settings - -ShowInstDetails show -AutoCloseWindow false -SilentInstall normal -CRCCheck on -SetCompressor /SOLID /FINAL lzma -SetCompressorDictSize 64 -SetDatablockOptimize on -SetOverwrite try -XPStyle on - -ManifestDPIAware true - -InstType "Full";1 -InstType "Minimal";2 -InstType "Safe";3 - -## Remember the installer language -!define MUI_LANGDLL_REGISTRY_ROOT "ShCtx" -!define MUI_LANGDLL_REGISTRY_KEY "Software\RedPanda-C++" -!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" - -#################################################################### -# Pages - -!define MUI_ICON "devcpp.ico" -!define MUI_UNICON "devcpp.ico" -!define MUI_ABORTWARNING -!define MUI_LANGDLL_ALLLANGUAGES -!define MUI_FINISHPAGE_RUN "$INSTDIR\RedPandaIDE.exe" -!define MUI_FINISHPAGE_NOREBOOTSUPPORT -!define MUI_COMPONENTSPAGE_SMALLDESC - -!insertmacro MUI_PAGE_LICENSE "LICENSE" -!insertmacro MUI_PAGE_COMPONENTS -!insertmacro MUI_PAGE_DIRECTORY -!insertmacro MUI_PAGE_INSTFILES -!insertmacro MUI_PAGE_FINISH -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_INSTFILES - -#################################################################### -# Languages - -!insertmacro MUI_LANGUAGE "English" -!insertmacro MUI_LANGUAGE "SimpChinese" - -#################################################################### -# Files, by option section - -Section "$(SectionMainName)" SectionMain - SectionIn 1 2 3 RO - - SetOutPath $INSTDIR - - ; Allways create an uninstaller - WriteUninstaller "$INSTDIR\uninstall.exe" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayName" "Redpanda-C++" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "UninstallString" "$INSTDIR\uninstall.exe" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayVersion" "${DEVCPP_VERSION}" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayIcon" "$INSTDIR\RedPandaIDE.exe" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "Publisher" "Roy Qu(royqh1979@gmail.com)" - - - ; Write required files - File "RedPandaIDE.exe" - File "ConsolePauser.exe" - File "redpanda-win-git-askpass.exe" - File "astyle.exe" - File "LICENSE" - File "NEWS.md" - File "README.md" - File "qt.conf" - - ; Write required paths - SetOutPath $INSTDIR\Templates - File /nonfatal /r "Templates\*" - -SectionEnd - -Section "$(SectionMinGWName)" SectionMinGW - SectionIn 1 3 - SetOutPath $INSTDIR\MinGW32 - - File /nonfatal /r "${COMPILERFOLDER}\*" -SectionEnd - -#################################################################### -# File association -SubSection "$(SectionAssocsName)" SectionAssocs -Section "$(SectionAssocExtNameBegin) .dev $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".dev" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".dev" "" "DevCpp.dev" - WriteRegStr HKCR "DevCpp.dev" "" "Dev-C++ Project File" - WriteRegStr HKCR "DevCpp.dev\DefaultIcon" "" '$0,3' - WriteRegStr HKCR "DevCpp.dev\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .c $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".c" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".c" "" "DevCpp.c" - WriteRegStr HKCR "DevCpp.c" "" "C Source File" - WriteRegStr HKCR "DevCpp.c\DefaultIcon" "" '$0,4' - WriteRegStr HKCR "DevCpp.c\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .cpp $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".cpp" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".cpp" "" "DevCpp.cpp" - WriteRegStr HKCR "DevCpp.cpp" "" "C++ Source File" - WriteRegStr HKCR "DevCpp.cpp\DefaultIcon" "" '$0,5' - WriteRegStr HKCR "DevCpp.cpp\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .cxx $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".cxx" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".cxx" "" "DevCpp.cxx" - WriteRegStr HKCR "DevCpp.cxx" "" "C++ Source File" - WriteRegStr HKCR "DevCpp.cxx\DefaultIcon" "" '$0,5' - WriteRegStr HKCR "DevCpp.cxx\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .cc $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".cc" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".cc" "" "DevCpp.cc" - WriteRegStr HKCR "DevCpp.cc" "" "C++ Source File" - WriteRegStr HKCR "DevCpp.cc\DefaultIcon" "" '$0,5' - WriteRegStr HKCR "DevCpp.cc\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .hxx $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".hxx" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".hxx" "" "DevCpp.hxx" - WriteRegStr HKCR "DevCpp.hxx" "" "C++ Header File" - WriteRegStr HKCR "DevCpp.hxx\DefaultIcon" "" '$0,7' - WriteRegStr HKCR "DevCpp.hxx\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .h $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".h" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".h" "" "DevCpp.h" - WriteRegStr HKCR "DevCpp.h" "" "C Header File" - WriteRegStr HKCR "DevCpp.h\DefaultIcon" "" '$0,6' - WriteRegStr HKCR "DevCpp.h\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .hpp $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".hpp" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".hpp" "" "DevCpp.hpp" - WriteRegStr HKCR "DevCpp.hpp" "" "C++ Header File" - WriteRegStr HKCR "DevCpp.hpp\DefaultIcon" "" '$0,7' - WriteRegStr HKCR "DevCpp.hpp\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -SubSectionEnd - -#################################################################### -# Shortcuts -SubSection "$(SectionShortcutsName)" SectionShortcuts - -Section "$(SectionMenuLaunchName)" SectionMenuLaunch - SectionIn 1 3 - - StrCpy $0 $SMPROGRAMS ; start menu Programs folder - CreateDirectory "$0\$(MessageAppName)" - CreateShortCut "$0\$(MessageAppName)\$(MessageAppName).lnk" "$INSTDIR\RedPandaIDE.exe" - CreateShortCut "$0\$(MessageAppName)\License.lnk" "$INSTDIR\LICENSE" - CreateShortCut "$0\$(MessageAppName)\Uninstall $(MessageAppName).lnk" "$INSTDIR\uninstall.exe" -SectionEnd - -Section "$(SectionDesktopLaunchName)" SectionDesktopLaunch - SectionIn 1 3 - - CreateShortCut "$DESKTOP\$(MessageAppName).lnk" "$INSTDIR\RedPandaIDE.exe" -SectionEnd - -SubSectionEnd - -Section "$(SectionConfigName)" SectionConfig - SectionIn 3 - - RMDir /r "$APPDATA\RedPandaIDE" - -SectionEnd - -#################################################################### - -!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN -!insertmacro MUI_DESCRIPTION_TEXT ${SectionMain} "$(MessageSectionMain)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionMinGW} "$(MessageSectionMinGW)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionShortcuts} "$(MessageSectionShortcuts)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionAssocs} "$(MessageSectionAssocs)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionConfig} "$(MessageSectionConfig)" -!insertmacro MUI_FUNCTION_DESCRIPTION_END - -#################################################################### -# Functions, utilities - -Function .onInit - !insertmacro MUI_LANGDLL_DISPLAY - - IfFileExists "C:\Dev-Cpp\devcpp.exe" 0 +2 - SectionSetFlags ${SectionConfig} ${SF_SELECTED} # Remove old Dev-Cpp config files - - IfFileExists "$APPDATA\Dev-Cpp\devcpp.cfg" 0 +2 # deprecated config file - SectionSetFlags ${SectionConfig} ${SF_SELECTED} - - SetShellVarContext all - SetRegView 32 -FunctionEnd - -Function myGuiInit - - ; uninstall existing - SetRegView 32 - Call UninstallExisting - SetRegView 64 - Call UninstallExisting - SetRegView 32 - -FunctionEnd - -;backup file association -Function BackupAssoc - ;$0 is an extension - for example ".dev" - - ;check if backup already exists - ReadRegStr $1 ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++\Backup" "$0" - ;don't backup if backup exists in registry - StrCmp $1 "" 0 no_assoc - - ReadRegStr $1 HKCR "$0" "" - ;don't backup dev-cpp associations - StrCmp $1 "DevCpp$0" no_assoc - - StrCmp $1 "" no_assoc - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++\Backup" "$0" "$1" - no_assoc: - -FunctionEnd - -Function un.onInit - !insertmacro MUI_UNGETLANGUAGE - - SetShellVarContext all - SetRegView 32 -FunctionEnd - -;restore file association -Function un.RestoreAssoc - ;$0 is an extension - for example ".dev" - - DeleteRegKey HKCR "$0" - ReadRegStr $1 ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++\Backup" "$0" - StrCmp $1 "" no_backup - WriteRegStr HKCR "$0" "" "$1" - Call un.RefreshShellIcons - no_backup: - -FunctionEnd - -;http://nsis.sourceforge.net/archive/viewpage.php?pageid=202 -;After changing file associations, you can call this macro to refresh the shell immediatly. -;It calls the shell32 function SHChangeNotify. This will force windows to reload your changes from the registry. -!define SHCNE_ASSOCCHANGED 0x08000000 -!define SHCNF_IDLIST 0 - -Function RefreshShellIcons - ; By jerome tremblay - april 2003 - System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \ - (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' -FunctionEnd - -Function un.RefreshShellIcons - ; By jerome tremblay - april 2003 - System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \ - (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' -FunctionEnd - -Function un.DeleteDirIfEmpty - FindFirst $R0 $R1 "$0\*.*" - strcmp $R1 "." 0 NoDelete - FindNext $R0 $R1 - strcmp $R1 ".." 0 NoDelete - ClearErrors - FindNext $R0 $R1 - IfErrors 0 NoDelete - FindClose $R0 - Sleep 1000 - RMDir "$0" - NoDelete: - FindClose $R0 -FunctionEnd - -Function GetParent - - Exch $R0 - Push $R1 - Push $R2 - Push $R3 - - StrCpy $R1 0 - StrLen $R2 $R0 - - loop: - IntOp $R1 $R1 + 1 - IntCmp $R1 $R2 get 0 get - StrCpy $R3 $R0 1 -$R1 - StrCmp $R3 "\" get - Goto loop - - get: - StrCpy $R0 $R0 -$R1 - - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 - -FunctionEnd - -Function UninstallExisting - ReadRegStr $R0 ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "UninstallString" - - StrCmp $R0 "" done - - Push $R0 - Call GetParent - Pop $R1 - - MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ - "$(MessageUninstallExisting)" \ - IDOK uninst - Abort - - ;Run the uninstaller - uninst: - ClearErrors - HideWindow - ClearErrors - ExecWait '"$R0" _?=$R1' - BringToFront - - done: -FunctionEnd - -#################################################################### -# uninstall - -UninstallText "$(MessageUninstallText)" -ShowUninstDetails show - -Section "Uninstall" - - ; Remove uninstaller - Delete "$INSTDIR\uninstall.exe" - - ; Remove start menu stuff - Delete "$SMPROGRAMS\$(MessageAppName)\$(MessageAppName).lnk" - Delete "$SMPROGRAMS\$(MessageAppName)\License.lnk" - Delete "$SMPROGRAMS\$(MessageAppName)\Uninstall $(MessageAppName).lnk" - RMDir "$SMPROGRAMS\$(MessageAppName)" - - ; Remove desktop stuff - Delete "$QUICKLAUNCH\$(MessageAppName).lnk" - Delete "$DESKTOP\$(MessageAppName).lnk" - - ; Restore file associations - StrCpy $0 ".dev" - Call un.RestoreAssoc - StrCpy $0 ".c" - Call un.RestoreAssoc - StrCpy $0 ".cpp" - Call un.RestoreAssoc - StrCpy $0 ".h" - Call un.RestoreAssoc - StrCpy $0 ".hpp" - Call un.RestoreAssoc - - DeleteRegKey HKCR "DevCpp.dev" - DeleteRegKey HKCR "DevCpp.c" - DeleteRegKey HKCR "DevCpp.cpp" - DeleteRegKey HKCR "DevCpp.cxx" - DeleteRegKey HKCR "DevCpp.cc" - DeleteRegKey HKCR "DevCpp.h" - DeleteRegKey HKCR "DevCpp.hpp" - DeleteRegKey HKCR "DevCpp.hxx" - - - Delete "$INSTDIR\NEWS.md" - Delete "$INSTDIR\RedPandaIDE.exe" - Delete "$INSTDIR\ConsolePauser.exe" - Delete "$INSTDIR\redpanda-win-git-askpass.exe" - Delete "$INSTDIR\astyle.exe" - Delete "$INSTDIR\LICENSE" - Delete "$INSTDIR\README.md" - Delete "$INSTDIR\qt.conf" - - - RMDir /r "$INSTDIR\Lang" - RMDir /r "$INSTDIR\Templates" - RMDir /r "$INSTDIR\MinGW32" - RMDir /r "$INSTDIR\MinGW64" - RMDir /r "$INSTDIR\Clang64" - - StrCpy $0 "$INSTDIR" - Call un.DeleteDirIfEmpty - - ; Remove registry keys - DeleteRegKey ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" - DeleteRegKey ShCtx "Software\RedPanda-C++" - - IfSilent +2 ; Don't ask when running in silent mode - MessageBox MB_YESNO "$(MessageRemoveConfig)" IDNO Done - - RMDir /r "$APPDATA\RedPandaIDE" - -Done: -SectionEnd diff --git a/platform/windows/installer-scripts/redpanda-nocompiler.nsi b/platform/windows/installer-scripts/redpanda-nocompiler.nsi deleted file mode 100644 index 46a4e797..00000000 --- a/platform/windows/installer-scripts/redpanda-nocompiler.nsi +++ /dev/null @@ -1,481 +0,0 @@ -#################################################################### -# Startup -SetFont "Segoe UI" 11 -Unicode True -!include "config.nsh" -!define FINALNAME "RedPanda.C++.${DEVCPP_VERSION}.win64.No.Compiler.Setup.exe" -!define DISPLAY_NAME "Red Panda C++ ${DEVCPP_VERSION}" - -!include "MUI2.nsh" -!include "lang.nsh" - -!define MUI_CUSTOMFUNCTION_GUIINIT myGuiInit - -#################################################################### -# Installer Attributes - -Name "${DISPLAY_NAME}" -OutFile "${FINALNAME}" -Caption "${DISPLAY_NAME}" - -LicenseData "LICENSE" -InstallDir $PROGRAMFILES64\RedPanda-Cpp -#################################################################### -# Interface Settings - -ShowInstDetails show -AutoCloseWindow false -SilentInstall normal -CRCCheck on -SetCompressor /SOLID /FINAL lzma -SetCompressorDictSize 64 -SetDatablockOptimize on -SetOverwrite try -XPStyle on - -ManifestDPIAware true - -InstType "Full";1 -InstType "Minimal";2 -InstType "Safe";3 - -## Remember the installer language -!define MUI_LANGDLL_REGISTRY_ROOT "ShCtx" -!define MUI_LANGDLL_REGISTRY_KEY "Software\RedPanda-C++" -!define MUI_LANGDLL_REGISTRY_VALUENAME "Installer Language" - -#################################################################### -# Pages - -!define MUI_ICON "devcpp.ico" -!define MUI_UNICON "devcpp.ico" -!define MUI_ABORTWARNING -!define MUI_LANGDLL_ALLLANGUAGES -!define MUI_FINISHPAGE_RUN "$INSTDIR\RedPandaIDE.exe" -!define MUI_FINISHPAGE_NOREBOOTSUPPORT -!define MUI_COMPONENTSPAGE_SMALLDESC - -!insertmacro MUI_PAGE_LICENSE "LICENSE" -!insertmacro MUI_PAGE_COMPONENTS -!insertmacro MUI_PAGE_DIRECTORY -!insertmacro MUI_PAGE_INSTFILES -!insertmacro MUI_PAGE_FINISH -!insertmacro MUI_UNPAGE_CONFIRM -!insertmacro MUI_UNPAGE_INSTFILES - -#################################################################### -# Languages - -!insertmacro MUI_LANGUAGE "English" -!insertmacro MUI_LANGUAGE "SimpChinese" - -#################################################################### -# Files, by option section - -Section "$(SectionMainName)" SectionMain - SectionIn 1 2 3 RO - - SetOutPath $INSTDIR - - ; Allways create an uninstaller - WriteUninstaller "$INSTDIR\uninstall.exe" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayName" "Redpanda-C++" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "UninstallString" "$INSTDIR\uninstall.exe" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayVersion" "${DEVCPP_VERSION}" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayIcon" "$INSTDIR\RedPandaIDE.exe" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "Publisher" "Roy Qu(royqh1979@gmail.com)" - - - ; Write required files - File "RedPandaIDE.exe" - File "ConsolePauser.exe" - File "redpanda-win-git-askpass.exe" - File "astyle.exe" - File "LICENSE" - File "NEWS.md" - File "README.md" - File "qt.conf" - - ; Write required paths - SetOutPath $INSTDIR\Templates - File /nonfatal /r "Templates\*" - -SectionEnd - -#################################################################### -# File association -SubSection "$(SectionAssocsName)" SectionAssocs -Section "$(SectionAssocExtNameBegin) .dev $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".dev" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".dev" "" "DevCpp.dev" - WriteRegStr HKCR "DevCpp.dev" "" "Dev-C++ Project File" - WriteRegStr HKCR "DevCpp.dev\DefaultIcon" "" '$0,3' - WriteRegStr HKCR "DevCpp.dev\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .c $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".c" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".c" "" "DevCpp.c" - WriteRegStr HKCR "DevCpp.c" "" "C Source File" - WriteRegStr HKCR "DevCpp.c\DefaultIcon" "" '$0,4' - WriteRegStr HKCR "DevCpp.c\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .cpp $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".cpp" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".cpp" "" "DevCpp.cpp" - WriteRegStr HKCR "DevCpp.cpp" "" "C++ Source File" - WriteRegStr HKCR "DevCpp.cpp\DefaultIcon" "" '$0,5' - WriteRegStr HKCR "DevCpp.cpp\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .cxx $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".cxx" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".cxx" "" "DevCpp.cxx" - WriteRegStr HKCR "DevCpp.cxx" "" "C++ Source File" - WriteRegStr HKCR "DevCpp.cxx\DefaultIcon" "" '$0,5' - WriteRegStr HKCR "DevCpp.cxx\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .cc $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".cc" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".cc" "" "DevCpp.cc" - WriteRegStr HKCR "DevCpp.cc" "" "C++ Source File" - WriteRegStr HKCR "DevCpp.cc\DefaultIcon" "" '$0,5' - WriteRegStr HKCR "DevCpp.cc\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .hxx $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".hxx" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".hxx" "" "DevCpp.hxx" - WriteRegStr HKCR "DevCpp.hxx" "" "C++ Header File" - WriteRegStr HKCR "DevCpp.hxx\DefaultIcon" "" '$0,7' - WriteRegStr HKCR "DevCpp.hxx\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .h $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".h" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".h" "" "DevCpp.h" - WriteRegStr HKCR "DevCpp.h" "" "C Header File" - WriteRegStr HKCR "DevCpp.h\DefaultIcon" "" '$0,6' - WriteRegStr HKCR "DevCpp.h\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -Section "$(SectionAssocExtNameBegin) .hpp $(SectionAssocExtNameEnd)" - SectionIn 1 3 - - StrCpy $0 ".hpp" - Call BackupAssoc - - StrCpy $0 $INSTDIR\RedPandaIDE.exe - WriteRegStr HKCR ".hpp" "" "DevCpp.hpp" - WriteRegStr HKCR "DevCpp.hpp" "" "C++ Header File" - WriteRegStr HKCR "DevCpp.hpp\DefaultIcon" "" '$0,7' - WriteRegStr HKCR "DevCpp.hpp\Shell\Open\Command" "" '$0 "%1"' - Call RefreshShellIcons -SectionEnd - -SubSectionEnd - -#################################################################### -# Shortcuts -SubSection "$(SectionShortcutsName)" SectionShortcuts - -Section "$(SectionMenuLaunchName)" SectionMenuLaunch - SectionIn 1 3 - - StrCpy $0 $SMPROGRAMS ; start menu Programs folder - CreateDirectory "$0\$(MessageAppName)" - CreateShortCut "$0\$(MessageAppName)\$(MessageAppName).lnk" "$INSTDIR\RedPandaIDE.exe" - CreateShortCut "$0\$(MessageAppName)\License.lnk" "$INSTDIR\LICENSE" - CreateShortCut "$0\$(MessageAppName)\Uninstall $(MessageAppName).lnk" "$INSTDIR\uninstall.exe" -SectionEnd - -Section "$(SectionDesktopLaunchName)" SectionDesktopLaunch - SectionIn 1 3 - - CreateShortCut "$DESKTOP\$(MessageAppName).lnk" "$INSTDIR\RedPandaIDE.exe" -SectionEnd - -SubSectionEnd - -Section "$(SectionConfigName)" SectionConfig - SectionIn 3 - - RMDir /r "$APPDATA\RedPandaIDE" - -SectionEnd - -#################################################################### - -!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN -!insertmacro MUI_DESCRIPTION_TEXT ${SectionMain} "$(MessageSectionMain)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionShortcuts} "$(MessageSectionShortcuts)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionAssocs} "$(MessageSectionAssocs)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionConfig} "$(MessageSectionConfig)" -!insertmacro MUI_FUNCTION_DESCRIPTION_END - -#################################################################### -# Functions, utilities - -Function .onInit - !insertmacro MUI_LANGDLL_DISPLAY - - IfFileExists "C:\Dev-Cpp\devcpp.exe" 0 +2 - SectionSetFlags ${SectionConfig} ${SF_SELECTED} # Remove old Dev-Cpp config files - - IfFileExists "$APPDATA\Dev-Cpp\devcpp.cfg" 0 +2 # deprecated config file - SectionSetFlags ${SectionConfig} ${SF_SELECTED} - - SetShellVarContext all - SetRegView 64 -FunctionEnd - -Function myGuiInit - - ; uninstall existing - SetRegView 32 - Call UninstallExisting - SetRegView 64 - Call UninstallExisting - -FunctionEnd - -;backup file association -Function BackupAssoc - ;$0 is an extension - for example ".dev" - - ;check if backup already exists - ReadRegStr $1 ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++\Backup" "$0" - ;don't backup if backup exists in registry - StrCmp $1 "" 0 no_assoc - - ReadRegStr $1 HKCR "$0" "" - ;don't backup dev-cpp associations - StrCmp $1 "DevCpp$0" no_assoc - - StrCmp $1 "" no_assoc - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++\Backup" "$0" "$1" - no_assoc: - -FunctionEnd - -Function un.onInit - !insertmacro MUI_UNGETLANGUAGE - - SetShellVarContext all - SetRegView 64 -FunctionEnd - -;restore file association -Function un.RestoreAssoc - ;$0 is an extension - for example ".dev" - - DeleteRegKey HKCR "$0" - ReadRegStr $1 ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++\Backup" "$0" - StrCmp $1 "" no_backup - WriteRegStr HKCR "$0" "" "$1" - Call un.RefreshShellIcons - no_backup: - -FunctionEnd - -;http://nsis.sourceforge.net/archive/viewpage.php?pageid=202 -;After changing file associations, you can call this macro to refresh the shell immediatly. -;It calls the shell32 function SHChangeNotify. This will force windows to reload your changes from the registry. -!define SHCNE_ASSOCCHANGED 0x08000000 -!define SHCNF_IDLIST 0 - -Function RefreshShellIcons - ; By jerome tremblay - april 2003 - System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \ - (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' -FunctionEnd - -Function un.RefreshShellIcons - ; By jerome tremblay - april 2003 - System::Call 'shell32.dll::SHChangeNotify(i, i, i, i) v \ - (${SHCNE_ASSOCCHANGED}, ${SHCNF_IDLIST}, 0, 0)' -FunctionEnd - -Function un.DeleteDirIfEmpty - FindFirst $R0 $R1 "$0\*.*" - strcmp $R1 "." 0 NoDelete - FindNext $R0 $R1 - strcmp $R1 ".." 0 NoDelete - ClearErrors - FindNext $R0 $R1 - IfErrors 0 NoDelete - FindClose $R0 - Sleep 1000 - RMDir "$0" - NoDelete: - FindClose $R0 -FunctionEnd - -Function GetParent - - Exch $R0 - Push $R1 - Push $R2 - Push $R3 - - StrCpy $R1 0 - StrLen $R2 $R0 - - loop: - IntOp $R1 $R1 + 1 - IntCmp $R1 $R2 get 0 get - StrCpy $R3 $R0 1 -$R1 - StrCmp $R3 "\" get - Goto loop - - get: - StrCpy $R0 $R0 -$R1 - - Pop $R3 - Pop $R2 - Pop $R1 - Exch $R0 - -FunctionEnd - -Function UninstallExisting - ReadRegStr $R0 ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "UninstallString" - - StrCmp $R0 "" done - - Push $R0 - Call GetParent - Pop $R1 - - MessageBox MB_OKCANCEL|MB_ICONEXCLAMATION \ - "$(MessageUninstallExisting)" \ - IDOK uninst - Abort - - ;Run the uninstaller - uninst: - ClearErrors - HideWindow - ClearErrors - ExecWait '"$R0" _?=$R1' - BringToFront - - done: -FunctionEnd - -#################################################################### -# uninstall - -UninstallText "$(MessageUninstallText)" -ShowUninstDetails show - -Section "Uninstall" - - ; Remove uninstaller - Delete "$INSTDIR\uninstall.exe" - - ; Remove start menu stuff - Delete "$SMPROGRAMS\$(MessageAppName)\$(MessageAppName).lnk" - Delete "$SMPROGRAMS\$(MessageAppName)\License.lnk" - Delete "$SMPROGRAMS\$(MessageAppName)\Uninstall $(MessageAppName).lnk" - RMDir "$SMPROGRAMS\$(MessageAppName)" - - ; Remove desktop stuff - Delete "$QUICKLAUNCH\$(MessageAppName).lnk" - Delete "$DESKTOP\$(MessageAppName).lnk" - - ; Restore file associations - StrCpy $0 ".dev" - Call un.RestoreAssoc - StrCpy $0 ".c" - Call un.RestoreAssoc - StrCpy $0 ".cpp" - Call un.RestoreAssoc - StrCpy $0 ".h" - Call un.RestoreAssoc - StrCpy $0 ".hpp" - Call un.RestoreAssoc - - DeleteRegKey HKCR "DevCpp.dev" - DeleteRegKey HKCR "DevCpp.c" - DeleteRegKey HKCR "DevCpp.cpp" - DeleteRegKey HKCR "DevCpp.cxx" - DeleteRegKey HKCR "DevCpp.cc" - DeleteRegKey HKCR "DevCpp.h" - DeleteRegKey HKCR "DevCpp.hpp" - DeleteRegKey HKCR "DevCpp.hxx" - - - Delete "$INSTDIR\NEWS.md" - Delete "$INSTDIR\RedPandaIDE.exe" - Delete "$INSTDIR\ConsolePauser.exe" - Delete "$INSTDIR\redpanda-win-git-askpass.exe" - Delete "$INSTDIR\astyle.exe" - Delete "$INSTDIR\LICENSE" - Delete "$INSTDIR\README.md" - Delete "$INSTDIR\qt.conf" - - RMDir /r "$INSTDIR\Lang" - RMDir /r "$INSTDIR\Templates" - RMDir /r "$INSTDIR\MinGW32" - RMDir /r "$INSTDIR\MinGW64" - RMDir /r "$INSTDIR\Clang64" - - StrCpy $0 "$INSTDIR" - Call un.DeleteDirIfEmpty - - ; Remove registry keys - DeleteRegKey ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" - DeleteRegKey ShCtx "Software\RedPanda-C++" - - IfSilent +2 ; Don't ask when running in silent mode - MessageBox MB_YESNO "$(MessageRemoveConfig)" IDNO Done - - RMDir /r "$APPDATA\RedPandaIDE" - -Done: -SectionEnd diff --git a/platform/windows/installer-scripts/redpanda-x64.nsi b/platform/windows/installer-scripts/redpanda.nsi similarity index 94% rename from platform/windows/installer-scripts/redpanda-x64.nsi rename to platform/windows/installer-scripts/redpanda.nsi index 19e03b90..decc6005 100644 --- a/platform/windows/installer-scripts/redpanda-x64.nsi +++ b/platform/windows/installer-scripts/redpanda.nsi @@ -2,10 +2,7 @@ # Startup SetFont "Segoe UI" 11 Unicode True -!include "config.nsh" -!define COMPILERFOLDER "MinGW64" -!define FINALNAME "RedPanda.C++.${DEVCPP_VERSION}.win64.${COMPILERNAME}.Setup.exe" -!define DISPLAY_NAME "Red Panda C++ ${DEVCPP_VERSION}" +!define DISPLAY_NAME "Red Panda C++ ${APP_VERSION} (${ARCH})" !include "MUI2.nsh" !include "lang.nsh" @@ -20,7 +17,11 @@ OutFile "${FINALNAME}" Caption "${DISPLAY_NAME}" LicenseData "LICENSE" -InstallDir $PROGRAMFILES64\RedPanda-Cpp +!if "${ARCH}" == "x86" + InstallDir $PROGRAMFILES\RedPanda-Cpp +!else + InstallDir $PROGRAMFILES64\RedPanda-Cpp +!endif #################################################################### # Interface Settings @@ -82,7 +83,7 @@ Section "$(SectionMainName)" SectionMain WriteUninstaller "$INSTDIR\uninstall.exe" WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayName" "Redpanda-C++" WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "UninstallString" "$INSTDIR\uninstall.exe" - WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayVersion" "${DEVCPP_VERSION}" + WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayVersion" "${APP_VERSION}" WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "DisplayIcon" "$INSTDIR\RedPandaIDE.exe" WriteRegStr ShCtx "Software\Microsoft\Windows\CurrentVersion\Uninstall\RedPanda-C++" "Publisher" "Roy Qu(royqh1979@gmail.com)" @@ -103,12 +104,14 @@ Section "$(SectionMainName)" SectionMain SectionEnd -Section "$(SectionMinGWName)" SectionMinGW - SectionIn 1 3 - SetOutPath $INSTDIR\MinGW64 +!ifdef HAVE_MINGW + Section "$(SectionMinGWName)" SectionMinGW + SectionIn 1 3 + SetOutPath $INSTDIR\${COMPILERFOLDER} - File /nonfatal /r "${COMPILERFOLDER}\*" -SectionEnd + File /nonfatal /r "${COMPILERFOLDER}\*" + SectionEnd +!endif #################################################################### # File association @@ -260,7 +263,9 @@ SectionEnd !insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN !insertmacro MUI_DESCRIPTION_TEXT ${SectionMain} "$(MessageSectionMain)" -!insertmacro MUI_DESCRIPTION_TEXT ${SectionMinGW} "$(MessageSectionMinGW)" +!ifdef HAVE_MINGW + !insertmacro MUI_DESCRIPTION_TEXT ${SectionMinGW} "$(MessageSectionMinGW)" +!endif !insertmacro MUI_DESCRIPTION_TEXT ${SectionShortcuts} "$(MessageSectionShortcuts)" !insertmacro MUI_DESCRIPTION_TEXT ${SectionAssocs} "$(MessageSectionAssocs)" !insertmacro MUI_DESCRIPTION_TEXT ${SectionConfig} "$(MessageSectionConfig)" @@ -279,7 +284,11 @@ Function .onInit SectionSetFlags ${SectionConfig} ${SF_SELECTED} SetShellVarContext all - SetRegView 64 + !if "${ARCH}" == "x86" + SetRegView 32 + !else + SetRegView 64 + !endif FunctionEnd Function myGuiInit @@ -290,6 +299,11 @@ Function myGuiInit SetRegView 64 Call UninstallExisting + !if "${ARCH}" == "x86" + SetRegView 32 + !else + SetRegView 64 + !endif FunctionEnd ;backup file association @@ -315,7 +329,11 @@ Function un.onInit !insertmacro MUI_UNGETLANGUAGE SetShellVarContext all - SetRegView 64 + !if "${ARCH}" == "x86" + SetRegView 32 + !else + SetRegView 64 + !endif FunctionEnd ;restore file association