From 02d935fb32b2baa5feb90e6880569c3aa9a2b473 Mon Sep 17 00:00:00 2001 From: "royqh1979@gmail.com" Date: Fri, 5 Nov 2021 10:44:23 +0800 Subject: [PATCH] - change: turn on gcc compiler's "-pipe" option by default, to use pipe instead of temp files in compiliation (and make the life of SSD longer) - fix: correctly save input histories for the find combo box in the Find dialog - add installer scripts --- NEWS.md | 4 +- RedPandaIDE/RedPandaIDE.pro | 6 +- RedPandaIDE/RedPandaIDE_zh_CN.ts | 51 +- RedPandaIDE/cpprefacter.cpp | 104 +++- RedPandaIDE/cpprefacter.h | 4 + RedPandaIDE/mainwindow.cpp | 15 +- RedPandaIDE/mainwindow.h | 2 +- RedPandaIDE/mainwindow.ui | 4 +- RedPandaIDE/parser/cppparser.cpp | 29 ++ RedPandaIDE/parser/cppparser.h | 1 + RedPandaIDE/settings.cpp | 15 + RedPandaIDE/widgets/searchdialog.cpp | 16 +- RedPandaIDE/widgets/searchresultview.cpp | 28 +- RedPandaIDE/widgets/searchresultview.h | 2 + installer/devcpp-i686.nsi | 638 +++++++++++++++++++++++ installer/devcpp-x64.nsi | 516 ++++++++++++++++++ installer/devcppnocompiler.nsi | 633 ++++++++++++++++++++++ installer/lang.nsh | 620 ++++++++++++++++++++++ 18 files changed, 2615 insertions(+), 73 deletions(-) create mode 100644 installer/devcpp-i686.nsi create mode 100644 installer/devcpp-x64.nsi create mode 100644 installer/devcppnocompiler.nsi create mode 100644 installer/lang.nsh diff --git a/NEWS.md b/NEWS.md index 354302ae..098d4a68 100644 --- a/NEWS.md +++ b/NEWS.md @@ -1,9 +1,11 @@ -Version 0.7.9 +Beta Version 0.8 For Dev-C++ 7 - fix: find in the current file is not correcly saved in the search history - fix: hit info not correctly displayed in the search result view - fix: If find in files found no hits, search result view will not be shown. - fix: wront indents when paste one line content - fix: Results of "find symbol usage" in project not correctly set in the search result view + - change: turn on gcc compiler's "-pipe" option by default, to use pipe instead of temp files in compiliation (and make the life of SSD longer) + - fix: correctly save input histories for the find combo box in the Find dialog Version 0.7.8 - enhancement: In problem view's output control, indicates which line is different with the expected diff --git a/RedPandaIDE/RedPandaIDE.pro b/RedPandaIDE/RedPandaIDE.pro index 7774d172..4cb25b6f 100644 --- a/RedPandaIDE/RedPandaIDE.pro +++ b/RedPandaIDE/RedPandaIDE.pro @@ -5,8 +5,10 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets CONFIG += c++17 CONFIG += nokey -QMAKE_CXXFLAGS_RELEASE += -Werror=return-type -QMAKE_CXXFLAGS_DEBUG += -Werror=return-type +gcc { + QMAKE_CXXFLAGS_RELEASE += -Werror=return-type + QMAKE_CXXFLAGS_DEBUG += -Werror=return-type +} # You can make your code fail to compile if it uses deprecated APIs. # In order to do so, uncomment the following line. diff --git a/RedPandaIDE/RedPandaIDE_zh_CN.ts b/RedPandaIDE/RedPandaIDE_zh_CN.ts index f2c9acd2..2fc70076 100644 --- a/RedPandaIDE/RedPandaIDE_zh_CN.ts +++ b/RedPandaIDE/RedPandaIDE_zh_CN.ts @@ -813,18 +813,18 @@ Are you really want to continue? CppRefacter - - + + Rename Symbol Error 重命名符号失败 - + Can't rename symbols not defined in this file. 无法重命名不在本文件中定义的符号 - + New symbol already exists! 新符号名称已被使用! @@ -5562,33 +5562,33 @@ Are you really want to continue? 只生成汇编代码(-S) - - + + Confirm 确认 - + The following problems were found during validation of compiler set "%1": 在验证编译器设置"%1"时遇到了下列问题: - + Would you like Red Panda C++ to remove them for you and add the default paths to the valid paths? 是否让小熊猫C++删除这些配置,并尝试重新建立配置? - + Leaving those directories will lead to problems during compilation.<br /><br />Unless you know exactly what you're doing, it is recommended that you click Yes. 如果仍然保留这些设置,可能会导致编译错误。<br /><br />请选择“是”,除非您清楚的知道选择“否”的后果, - + Compiler set not configuared. 未配置编译器设置。 - + Would you like Red Panda C++ to search for compilers in the following locations: <BR />'%1'<BR />'%2'? 您需要小熊猫C++在下列位置搜索编译器吗:<br />%1<br />%2 @@ -6114,7 +6114,7 @@ Are you really want to continue? - + Replace 替换 @@ -6124,7 +6124,7 @@ Are you really want to continue? 在文件中替换 - + Replace this occurrence of ''%1''? 替换这里的"%1"? @@ -6132,30 +6132,39 @@ Are you really want to continue? SearchResultListModel - + Current File: 当前文件: - + Files In Project: 项目中的文件: - + Open Files: 打开的文件: - + + Find Usages in Current File: '%1' + 在当前文件查找符号"%1" + + + + Find Usages in Project: '%1' + 在项目中查找符号"%1" + + References to symbol '%1' at '%2':%3 - 符号'%1'出现在'%2': %3 + 符号'%1'出现在'%2': %3 SearchResultTreeModel - + Line @@ -6163,8 +6172,8 @@ Are you really want to continue? SearchResultTreeViewDelegate - - + + Line diff --git a/RedPandaIDE/cpprefacter.cpp b/RedPandaIDE/cpprefacter.cpp index 8027fdd1..37eb56e9 100644 --- a/RedPandaIDE/cpprefacter.cpp +++ b/RedPandaIDE/cpprefacter.cpp @@ -16,6 +16,8 @@ CppRefacter::CppRefacter(QObject *parent) : QObject(parent) bool CppRefacter::findOccurence(Editor *editor, const BufferCoord &pos) { + if (!editor->parser()) + return false; if (!editor->parser()->freeze()) return false; auto action = finally([&editor]{ @@ -35,38 +37,52 @@ bool CppRefacter::findOccurence(Editor *editor, const BufferCoord &pos) std::shared_ptr project = pMainWindow->project(); if (editor->inProject() && project) { - PSearchResults results = pMainWindow->searchResultModel()->addSearchResults( - statement->fullName, - SearchFileScope::wholeProject - ); - foreach (const PProjectUnit& unit, project->units()) { - if (isCfile(unit->fileName()) || isHfile(unit->fileName())) { - PSearchResultTreeItem item = findOccurenceInFile( - unit->fileName(), - statement, - editor->parser()); - if (item && !(item->results.isEmpty())) { - results->results.append(item); - } - } - } + doFindOccurenceInProject(statement,project,editor->parser()); } else { - PSearchResults results = pMainWindow->searchResultModel()->addSearchResults( - statement->fullName, - SearchFileScope::currentFile - ); - PSearchResultTreeItem item = findOccurenceInFile( - editor->filename(), - statement, - editor->parser()); - if (item && !(item->results.isEmpty())) { - results->results.append(item); - } + doFindOccurenceInEditor(statement,editor,editor->parser()); } pMainWindow->searchResultModel()->notifySearchResultsUpdated(); return true; } +bool CppRefacter::findOccurence(const QString &statementFullname, SearchFileScope scope) +{ + PCppParser parser; + Editor * editor; + std::shared_ptr project; + if (scope == SearchFileScope::currentFile) { + editor = pMainWindow->editorList()->getEditor(); + if (!editor) + return false; + parser = editor->parser(); + } else if (scope == SearchFileScope::wholeProject) { + project = pMainWindow->project(); + if (!project) + return false; + parser = project->cppParser(); + } + if (!parser) + return false; + { + parser->freeze(); + auto action = finally([&parser]{ + parser->unFreeze(); + }); + PStatement statement = parser->findStatement(statementFullname); + // definition of the symbol not found + if (!statement) + return false; + + if (scope == SearchFileScope::wholeProject) { + doFindOccurenceInProject(statement,project,parser); + } else if (scope == SearchFileScope::currentFile) { + doFindOccurenceInEditor(statement, editor,parser); + } + pMainWindow->searchResultModel()->notifySearchResultsUpdated(); + return true; + } +} + static QString fullParentName(PStatement statement) { PStatement parent = statement->parentScope.lock(); if (parent) { @@ -117,6 +133,42 @@ void CppRefacter::renameSymbol(Editor *editor, const BufferCoord &pos, const QSt renameSymbolInFile(editor->filename(),oldStatement,newWord, editor->parser()); } +void CppRefacter::doFindOccurenceInEditor(PStatement statement , Editor *editor, const PCppParser &parser) +{ + PSearchResults results = pMainWindow->searchResultModel()->addSearchResults( + statement->command, + statement->fullName, + SearchFileScope::currentFile + ); + PSearchResultTreeItem item = findOccurenceInFile( + editor->filename(), + statement, + parser); + if (item && !(item->results.isEmpty())) { + results->results.append(item); + } +} + +void CppRefacter::doFindOccurenceInProject(PStatement statement, std::shared_ptr project, const PCppParser &parser) +{ + PSearchResults results = pMainWindow->searchResultModel()->addSearchResults( + statement->command, + statement->fullName, + SearchFileScope::wholeProject + ); + foreach (const PProjectUnit& unit, project->units()) { + if (isCfile(unit->fileName()) || isHfile(unit->fileName())) { + PSearchResultTreeItem item = findOccurenceInFile( + unit->fileName(), + statement, + parser); + if (item && !(item->results.isEmpty())) { + results->results.append(item); + } + } + } +} + PSearchResultTreeItem CppRefacter::findOccurenceInFile( const QString &filename, const PStatement &statement, diff --git a/RedPandaIDE/cpprefacter.h b/RedPandaIDE/cpprefacter.h index 9073f27b..ca9cab6f 100644 --- a/RedPandaIDE/cpprefacter.h +++ b/RedPandaIDE/cpprefacter.h @@ -8,6 +8,7 @@ class Editor; class BufferCoord; +class Project; class CppRefacter : public QObject { Q_OBJECT @@ -15,10 +16,13 @@ public: explicit CppRefacter(QObject *parent = nullptr); bool findOccurence(Editor * editor, const BufferCoord& pos); + bool findOccurence(const QString& statementFullname, SearchFileScope scope); void renameSymbol(Editor* editor, const BufferCoord& pos, const QString& word, const QString& newWord); signals: private: + void doFindOccurenceInEditor(PStatement statement, Editor* editor, const PCppParser& parser); + void doFindOccurenceInProject(PStatement statement, std::shared_ptr project, const PCppParser& parser); PSearchResultTreeItem findOccurenceInFile( const QString& filename, const PStatement& statement, diff --git a/RedPandaIDE/mainwindow.cpp b/RedPandaIDE/mainwindow.cpp index fc06b8bc..b1a90f24 100644 --- a/RedPandaIDE/mainwindow.cpp +++ b/RedPandaIDE/mainwindow.cpp @@ -4087,23 +4087,28 @@ void MainWindow::on_cbSearchHistory_currentIndexChanged(int index) { mSearchResultModel.setCurrentIndex(index); PSearchResults results = mSearchResultModel.results(index); - if (results && results->searchType == SearchType::Search) { - ui->btnSearchAgin->setEnabled(true); + if (results) { + ui->btnSearchAgain->setEnabled(true); } else { - ui->btnSearchAgin->setEnabled(false); + ui->btnSearchAgain->setEnabled(false); } } -void MainWindow::on_btnSearchAgin_clicked() +void MainWindow::on_btnSearchAgain_clicked() { if (mSearchDialog==nullptr) { mSearchDialog = new SearchDialog(this); } PSearchResults results=mSearchResultModel.currentResults(); - if (results){ + if (!results) + return; + if (results->searchType == SearchType::Search){ mSearchDialog->findInFiles(results->keyword, results->scope, results->options); + } else if (results->searchType == SearchType::FindOccurences) { + CppRefacter refactor; + refactor.findOccurence(results->statementFullname,results->scope); } } diff --git a/RedPandaIDE/mainwindow.h b/RedPandaIDE/mainwindow.h index ea0fc399..b896f0e2 100644 --- a/RedPandaIDE/mainwindow.h +++ b/RedPandaIDE/mainwindow.h @@ -332,7 +332,7 @@ private slots: void on_cbSearchHistory_currentIndexChanged(int index); - void on_btnSearchAgin_clicked(); + void on_btnSearchAgain_clicked(); void on_actionRemove_Watch_triggered(); void on_actionRemove_All_Watches_triggered(); diff --git a/RedPandaIDE/mainwindow.ui b/RedPandaIDE/mainwindow.ui index 6fea2a37..b82a4f2f 100644 --- a/RedPandaIDE/mainwindow.ui +++ b/RedPandaIDE/mainwindow.ui @@ -497,7 +497,7 @@ QTabWidget::South - 6 + 3 @@ -932,7 +932,7 @@ - + false diff --git a/RedPandaIDE/parser/cppparser.cpp b/RedPandaIDE/parser/cppparser.cpp index 3fe1039a..23a2194c 100644 --- a/RedPandaIDE/parser/cppparser.cpp +++ b/RedPandaIDE/parser/cppparser.cpp @@ -213,8 +213,37 @@ PStatementList CppParser::findNamespace(const QString &name) return mNamespaces.value(name,PStatementList()); } +PStatement CppParser::findStatement(const QString &fullname) +{ + QMutexLocker locker(&mMutex); + if (fullname.isEmpty()) + return PStatement(); + QStringList phrases = fullname.split("::"); + if (phrases.isEmpty()) + return PStatement(); + PStatement parentStatement; + PStatement statement; + foreach (const QString& phrase, phrases) { + if (parentStatement && parentStatement->kind == StatementKind::skNamespace) { + PStatementList lst = findNamespace(parentStatement->fullName); + foreach (const PStatement& namespaceStatement, *lst) { + statement = findMemberOfStatement(phrase,namespaceStatement); + if (statement) + break; + } + } else { + statement = findMemberOfStatement(phrase,parentStatement); + } + if (!statement) + return PStatement(); + parentStatement = statement; + } + return statement; +} + PStatement CppParser::findStatementOf(const QString &fileName, const QString &phrase, int line) { + QMutexLocker locker(&mMutex); return findStatementOf(fileName,phrase,findAndScanBlockAt(fileName,line)); } diff --git a/RedPandaIDE/parser/cppparser.h b/RedPandaIDE/parser/cppparser.h index 8cb4bd6c..4e062440 100644 --- a/RedPandaIDE/parser/cppparser.h +++ b/RedPandaIDE/parser/cppparser.h @@ -36,6 +36,7 @@ public: int line); int findLastOperator(const QString& phrase) const; PStatementList findNamespace(const QString& name); // return a list of PSTATEMENTS (of the namespace) + PStatement findStatement(const QString& fullname); PStatement findStatementOf(const QString& fileName, const QString& phrase, int line); diff --git a/RedPandaIDE/settings.cpp b/RedPandaIDE/settings.cpp index ac9d1bbf..88da683f 100644 --- a/RedPandaIDE/settings.cpp +++ b/RedPandaIDE/settings.cpp @@ -2259,6 +2259,11 @@ static void setReleaseOptions(Settings::PCompilerSet pSet) { pSet->setOption(pOption,'1'); } + pOption = pSet->findOption("-pipe"); + if (pOption) { + pSet->setOption(pOption,'1'); + } + // pOption = pSet->findOption("-static"); // if (pOption) { // pSet->setOption(pOption,'1'); @@ -2279,6 +2284,11 @@ static void setDebugOptions(Settings::PCompilerSet pSet) { if (pOption) { pSet->setOption(pOption,'1'); } + pOption = pSet->findOption("-pipe"); + if (pOption) { + pSet->setOption(pOption,'1'); + } + // pOption = pSet->findOption("-static"); // if (pOption) { // pSet->setOption(pOption,'1'); @@ -2292,6 +2302,11 @@ static void setProfileOptions(Settings::PCompilerSet pSet) { pSet->setOption(pOption,'1'); } + pOption = pSet->findOption("-pipe"); + if (pOption) { + pSet->setOption(pOption,'1'); + } + // pOption = pSet->findOption("-static"); // if (pOption) { // pSet->setOption(pOption,'1'); diff --git a/RedPandaIDE/widgets/searchdialog.cpp b/RedPandaIDE/widgets/searchdialog.cpp index b4a6d20f..b5fdd458 100644 --- a/RedPandaIDE/widgets/searchdialog.cpp +++ b/RedPandaIDE/widgets/searchdialog.cpp @@ -148,11 +148,23 @@ void SearchDialog::on_btnCancel_clicked() this->close(); } +static void saveComboHistory(QComboBox* cb,const QString& text) { + QString s = text.trimmed(); + if (s.isEmpty()) + return; + int i = cb->findText(s); + if (i>=0) { + cb->removeItem(i); + } + cb->insertItem(0,s); + cb->setCurrentText(s); +} + void SearchDialog::on_btnExecute_clicked() { int findCount = 0; - ui->cbFind->addItem(ui->cbFind->currentText()); - ui->cbReplace->addItem(ui->cbReplace->currentText()); + saveComboHistory(ui->cbFind,ui->cbFind->currentText()); + saveComboHistory(ui->cbReplace,ui->cbReplace->currentText()); SearchAction actionType; switch (mTabBar->currentIndex()) { diff --git a/RedPandaIDE/widgets/searchresultview.cpp b/RedPandaIDE/widgets/searchresultview.cpp index 4f99dd06..f7975ad2 100644 --- a/RedPandaIDE/widgets/searchresultview.cpp +++ b/RedPandaIDE/widgets/searchresultview.cpp @@ -32,6 +32,7 @@ PSearchResults SearchResultModel::addSearchResults(const QString &keyword, SynSe } PSearchResults SearchResultModel::addSearchResults( + const QString& keyword, const QString& symbolFullname, SearchFileScope scope) { @@ -40,7 +41,7 @@ PSearchResults SearchResultModel::addSearchResults( PSearchResults results = mSearchResults[i]; if (results->searchType == SearchType::FindOccurences && results->scope == scope - && results->keyword == symbolFullname + && results->statementFullname == symbolFullname ) { index=i; break; @@ -53,7 +54,8 @@ PSearchResults SearchResultModel::addSearchResults( mSearchResults.pop_back(); } PSearchResults results = std::make_shared(); - results->keyword = symbolFullname; + results->keyword = keyword; + results->statementFullname = symbolFullname; results->filename = ""; results->searchType = SearchType::FindOccurences; results->scope = scope; @@ -320,22 +322,22 @@ bool SearchResultTreeModel::selectable() const void SearchResultTreeModel::setSelectable(bool newSelectable) { if (newSelectable!=mSelectable) { - beginResetModel(); mSelectable = newSelectable; - if (mSelectable) { - //select all items by default - PSearchResults results = mSearchResultModel->currentResults(); - if (results) { - foreach (const PSearchResultTreeItem& file, results->results) { - file->selected = false; - foreach (const PSearchResultTreeItem& item, file->results) { - item->selected = true; - } + } + beginResetModel(); + if (mSelectable) { + //select all items by default + PSearchResults results = mSearchResultModel->currentResults(); + if (results) { + foreach (const PSearchResultTreeItem& file, results->results) { + file->selected = false; + foreach (const PSearchResultTreeItem& item, file->results) { + item->selected = true; } } } - endResetModel(); } + endResetModel(); } SearchResultListModel::SearchResultListModel(SearchResultModel *model, QObject *parent): diff --git a/RedPandaIDE/widgets/searchresultview.h b/RedPandaIDE/widgets/searchresultview.h index 026c1645..1dfe2481 100644 --- a/RedPandaIDE/widgets/searchresultview.h +++ b/RedPandaIDE/widgets/searchresultview.h @@ -32,6 +32,7 @@ struct SearchResultTreeItem { struct SearchResults{ SynSearchOptions options; QString keyword; + QString statementFullname; SearchFileScope scope; SearchType searchType; QString filename; @@ -47,6 +48,7 @@ public: PSearchResults addSearchResults(const QString& keyword,SynSearchOptions options, SearchFileScope scope); PSearchResults addSearchResults( + const QString& keyword, const QString& symbolFullname, SearchFileScope scope); PSearchResults results(int index); diff --git a/installer/devcpp-i686.nsi b/installer/devcpp-i686.nsi new file mode 100644 index 00000000..d80fc832 --- /dev/null +++ b/installer/devcpp-i686.nsi @@ -0,0 +1,638 @@ +#################################################################### +# Startup + +!define COMPILERNAME "MinGW-w64 GCC 10.3 " +!define COMPILERFOLDER "MinGW32" +!define DEVCPP_VERSION "6.7.5" +!define FINALNAME "Dev-Cpp.${DEVCPP_VERSION}.${COMPILERNAME}.Setup.exe" +!define DISPLAY_NAME "Red Panda Dev-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 $PROGRAMFILES\Dev-Cpp +#################################################################### +# Interface Settings + +ShowInstDetails show +AutoCloseWindow false +SilentInstall normal +CRCCheck on +SetCompressor /SOLID /FINAL lzma +SetCompressorDictSize 64 +SetDatablockOptimize on +SetOverwrite try +XPStyle on + +InstType "Full";1 +InstType "Minimal";2 +InstType "Safe";3 + +## Remember the installer language +!define MUI_LANGDLL_REGISTRY_ROOT "HKCU" +!define MUI_LANGDLL_REGISTRY_KEY "Software\Dev-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\devcpp.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" +!insertmacro MUI_LANGUAGE "TradChinese" +!insertmacro MUI_LANGUAGE "Bulgarian" +!insertmacro MUI_LANGUAGE "Catalan" +!insertmacro MUI_LANGUAGE "Croatian" +!insertmacro MUI_LANGUAGE "Czech" +!insertmacro MUI_LANGUAGE "Danish" +!insertmacro MUI_LANGUAGE "Dutch" +!insertmacro MUI_LANGUAGE "Estonian" +!insertmacro MUI_LANGUAGE "French" +!insertmacro MUI_LANGUAGE "German" +!insertmacro MUI_LANGUAGE "Greek" +!insertmacro MUI_LANGUAGE "Hungarian" +!insertmacro MUI_LANGUAGE "Italian" +!insertmacro MUI_LANGUAGE "Korean" +!insertmacro MUI_LANGUAGE "Latvian" +!insertmacro MUI_LANGUAGE "Polish" +!insertmacro MUI_LANGUAGE "Portuguese" +!insertmacro MUI_LANGUAGE "Romanian" +!insertmacro MUI_LANGUAGE "Russian" +!insertmacro MUI_LANGUAGE "Slovak" +!insertmacro MUI_LANGUAGE "Slovenian" +!insertmacro MUI_LANGUAGE "Spanish" +!insertmacro MUI_LANGUAGE "Swedish" +!insertmacro MUI_LANGUAGE "Turkish" +!insertmacro MUI_LANGUAGE "Ukrainian" + +#################################################################### +# Files, by option section + +Section "$(SectionMainName)" SectionMain + SectionIn 1 2 3 RO + + SetOutPath $INSTDIR + + ; Allways create an uninstaller + WriteUninstaller "$INSTDIR\uninstall.exe" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Dev-C++" "DisplayName" "Dev-C++" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Dev-C++" "UninstallString" "$INSTDIR\uninstall.exe" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Dev-C++" "DisplayVersion" "${DEVCPP_VERSION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Dev-C++" "DisplayIcon" "$INSTDIR\devcpp.exe" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Dev-C++" "Publisher" "Roy Qu(royqh1979@gmail.com)" + + ; HDPI Fix + WriteRegStr HKCU "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\devcpp.exe" "~ HIGHDPIAWARE" + + ; Write required files + File "devcpp.exe" + File "packman.exe" + File "PackMaker.exe" + File "ConsolePauser.exe" + File "devcpp.exe.manifest" + File "LICENSE" + File "NEWS.txt" + File "README.MD" + + ; Write required paths + SetOutPath $INSTDIR\Lang + File /nonfatal /r "Lang\English.*" + SetOutPath $INSTDIR\Templates + File /nonfatal /r "Templates\*" + SetOutPath $INSTDIR\Help + File /nonfatal /r "Help\*" + SetOutPath $INSTDIR\AStyle + File /nonfatal /r "AStyle\*" + SetOutPath $INSTDIR\ResEd + File /nonfatal /r "ResEd\*" + SetOutPath $INSTDIR\Contributes + File /nonfatal /r "contributes\*" +SectionEnd + +Section "$(SectionMinGWName)" SectionMinGW + SectionIn 1 3 + SetOutPath $INSTDIR\MinGW32 + + File /nonfatal /r "${COMPILERFOLDER}\*" +SectionEnd + +Section "$(SectionIconsName)" SectionIcons + SectionIn 1 3 + + SetOutPath $INSTDIR\Icons + File /nonfatal /r "Icons\*.*" +SectionEnd + +Section "$(SectionLangsName)" SectionLangs + SectionIn 1 3 + + SetOutPath $INSTDIR\Lang + File /nonfatal /r "Lang\*" +SectionEnd + + + +#################################################################### +# File association +SubSection "$(SectionAssocsName)" SectionAssocs +Section "$(SectionAssocExtNameBegin) .dev $(SectionAssocExtNameEnd)" + SectionIn 1 3 + + StrCpy $0 ".dev" + Call BackupAssoc + + StrCpy $0 $INSTDIR\DevCpp.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\DevCpp.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\DevCpp.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\DevCpp.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\DevCpp.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\DevCpp.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\DevCpp.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\DevCpp.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 + +Section "$(SectionAssocExtNameBegin) .rc $(SectionAssocExtNameEnd)" + SectionIn 1 3 + + StrCpy $0 ".rc" + Call BackupAssoc + + StrCpy $0 $INSTDIR\DevCpp.exe + WriteRegStr HKCR ".rc" "" "DevCpp.rc" + WriteRegStr HKCR "DevCpp.rc" "" "Resource Source File" + WriteRegStr HKCR "DevCpp.rc\DefaultIcon" "" '$0,8' + WriteRegStr HKCR "DevCpp.rc\Shell\Open\Command" "" '$0 "%1"' + Call RefreshShellIcons +SectionEnd + +Section "$(SectionAssocExtNameBegin) .devpak $(SectionAssocExtNameEnd)" + SectionIn 1 3 + + StrCpy $0 ".devpak" + Call BackupAssoc + + StrCpy $0 $INSTDIR\DevCpp.exe + StrCpy $1 $INSTDIR\PackMan.exe + WriteRegStr HKCR ".devpak" "" "DevCpp.devpak" + WriteRegStr HKCR "DevCpp.devpak" "" "Dev-C++ Package File" + WriteRegStr HKCR "DevCpp.devpak\DefaultIcon" "" '$0,9' + WriteRegStr HKCR "DevCpp.devpak\Shell\Open\Command" "" '$1 "%1"' + Call RefreshShellIcons +SectionEnd + +Section "$(SectionAssocExtNameBegin) .devpackage $(SectionAssocExtNameEnd)" + SectionIn 1 3 + + StrCpy $0 ".devpackage" + Call BackupAssoc + + StrCpy $0 $INSTDIR\DevCpp.exe + StrCpy $1 $INSTDIR\PackMan.exe + WriteRegStr HKCR ".devpackage" "" "DevCpp.devpackage" + WriteRegStr HKCR "DevCpp.devpackage" "" "Dev-C++ Package File" + WriteRegStr HKCR "DevCpp.devpackage\DefaultIcon" "" '$0,10' + WriteRegStr HKCR "DevCpp.devpackage\Shell\Open\Command" "" '$1 "%1"' + Call RefreshShellIcons +SectionEnd + +Section "$(SectionAssocExtNameBegin) .template $(SectionAssocExtNameEnd)" + SectionIn 1 3 + + StrCpy $0 ".template" + Call BackupAssoc + + StrCpy $0 $INSTDIR\DevCpp.exe + WriteRegStr HKCR ".template" "" "DevCpp.template" + WriteRegStr HKCR "DevCpp.template" "" "Dev-C++ Template File" + WriteRegStr HKCR "DevCpp.template\DefaultIcon" "" '$0,1' + WriteRegStr HKCR "DevCpp.template\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\Dev-C++" + CreateShortCut "$0\Dev-C++\Red Panda Dev-C++.lnk" "$INSTDIR\devcpp.exe" + CreateShortCut "$0\Dev-C++\License.lnk" "$INSTDIR\LICENSE" + CreateShortCut "$0\Dev-C++\Uninstall Red Panda Dev-C++.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\Red Panda Dev-C++.lnk" "$INSTDIR\devcpp.exe" +SectionEnd + +SubSectionEnd + +Section "$(SectionConfigName)" SectionConfig + SectionIn 3 + + RMDir /r "$APPDATA\Dev-Cpp" + + Delete "$INSTDIR\devcpp.ini" + Delete "$INSTDIR\devcpp.cfg" + Delete "$INSTDIR\cache.ccc" + Delete "$INSTDIR\defaultcode.cfg" + Delete "$INSTDIR\devshortcuts.cfg" + Delete "$INSTDIR\classfolders.dcf" + Delete "$INSTDIR\mirrors.cfg" + Delete "$INSTDIR\tools.ini" + Delete "$INSTDIR\devcpp.ci" +SectionEnd + +#################################################################### + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN +!insertmacro MUI_DESCRIPTION_TEXT ${SectionMain} "$(MessageSectionMain)" +!insertmacro MUI_DESCRIPTION_TEXT ${SectionMinGW} "$(MessageSectionMinGW)" +!insertmacro MUI_DESCRIPTION_TEXT ${SectionIcons} "$(MessageSectionIcons)" +!insertmacro MUI_DESCRIPTION_TEXT ${SectionLangs} "$(MessageSectionLangs)" +!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 + 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\Dev-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\Dev-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\Dev-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\Dev-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\Dev-C++\Red Panda Dev-C++.lnk" + Delete "$SMPROGRAMS\Dev-C++\License.lnk" + Delete "$SMPROGRAMS\Dev-C++\Uninstall Red Panda Dev-C++.lnk" + RMDir "$SMPROGRAMS\Dev-C++" + + ; Remove desktop stuff, located in current user folder + SetShellVarContext current + Delete "$QUICKLAUNCH\Red Panda Dev-C++.lnk" + Delete "$DESKTOP\Red Panda Dev-C++.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 + StrCpy $0 ".rc" + Call un.RestoreAssoc + StrCpy $0 ".devpak" + Call un.RestoreAssoc + StrCpy $0 ".devpackage" + Call un.RestoreAssoc + StrCpy $0 ".template" + 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" + DeleteRegKey HKCR "DevCpp.rc" + DeleteRegKey HKCR "DevCpp.devpak" + DeleteRegKey HKCR "DevCpp.devpackage" + DeleteRegKey HKCR "DevCpp.template" + + + Delete "$INSTDIR\Packman.map" + Delete "$INSTDIR\Packman.exe" + Delete "$INSTDIR\PackMaker.exe" + Delete "$INSTDIR\NEWS.txt" + Delete "$INSTDIR\devcpp.map" + Delete "$INSTDIR\devcpp.exe" + Delete "$INSTDIR\devcpp.exe.manifest" + Delete "$INSTDIR\devcppPortable.exe" + Delete "$INSTDIR\ConsolePauser.exe" + Delete "$INSTDIR\LICENSE" + Delete "$INSTDIR\README.MD" + + RMDir /r "$INSTDIR\Lang" + RMDir /r "$INSTDIR\Examples" + RMDir /r "$INSTDIR\Help" + RMDir /r "$INSTDIR\Icons" + RMDir /r "$INSTDIR\Packages" + RMDir /r "$INSTDIR\Templates" + RMDir /r "$INSTDIR\Astyle" + RMDir /r "$INSTDIR\ResEd" + RMDir /r "$INSTDIR\Contributes" + RMDir /r "$INSTDIR\MinGW32" + RMDir /r "$INSTDIR\MinGW64" + + StrCpy $0 "$INSTDIR" + Call un.DeleteDirIfEmpty + + ; Remove registry keys + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Dev-C++" + DeleteRegKey HKCU "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\$INSTDIR\devcpp.exe" + DeleteRegKey HKCU "Software\Dev-C++" + + IfSilent +2 ; Don't ask when running in silent mode + MessageBox MB_YESNO "$(MessageRemoveConfig)" IDNO Done + + RMDir /r "$APPDATA\Dev-Cpp" + + Delete "$INSTDIR\devcpp.ini" + Delete "$INSTDIR\devcpp.cfg" + Delete "$INSTDIR\cache.ccc" + Delete "$INSTDIR\defaultcode.cfg" + Delete "$INSTDIR\devshortcuts.cfg" + Delete "$INSTDIR\classfolders.dcf" + Delete "$INSTDIR\mirrors.cfg" + Delete "$INSTDIR\tools.ini" + Delete "$INSTDIR\devcpp.ci" + +Done: +SectionEnd \ No newline at end of file diff --git a/installer/devcpp-x64.nsi b/installer/devcpp-x64.nsi new file mode 100644 index 00000000..0b37bae3 --- /dev/null +++ b/installer/devcpp-x64.nsi @@ -0,0 +1,516 @@ +#################################################################### +# Startup + +!define COMPILERNAME "MinGW-w64 X86_64 GCC 11.2" +!define COMPILERFOLDER "MinGW64" +!define DEVCPP_VERSION "0.8.0.beta" +!define FINALNAME "RedPanda-Cpp.7.${DEVCPP_VERSION}.${COMPILERNAME}.Setup.exe" +!define DISPLAY_NAME "Red Panda Dev-C++ 7 ${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 + +InstType "Full";1 +InstType "Minimal";2 +InstType "Safe";3 + +## Remember the installer language +!define MUI_LANGDLL_REGISTRY_ROOT "HKCU" +!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" +!insertmacro MUI_LANGUAGE "TradChinese" +!insertmacro MUI_LANGUAGE "Bulgarian" +!insertmacro MUI_LANGUAGE "Catalan" +!insertmacro MUI_LANGUAGE "Croatian" +!insertmacro MUI_LANGUAGE "Czech" +!insertmacro MUI_LANGUAGE "Danish" +!insertmacro MUI_LANGUAGE "Dutch" +!insertmacro MUI_LANGUAGE "Estonian" +!insertmacro MUI_LANGUAGE "French" +!insertmacro MUI_LANGUAGE "German" +!insertmacro MUI_LANGUAGE "Greek" +!insertmacro MUI_LANGUAGE "Hungarian" +!insertmacro MUI_LANGUAGE "Italian" +!insertmacro MUI_LANGUAGE "Korean" +!insertmacro MUI_LANGUAGE "Latvian" +!insertmacro MUI_LANGUAGE "Polish" +!insertmacro MUI_LANGUAGE "Portuguese" +!insertmacro MUI_LANGUAGE "Romanian" +!insertmacro MUI_LANGUAGE "Russian" +!insertmacro MUI_LANGUAGE "Slovak" +!insertmacro MUI_LANGUAGE "Slovenian" +!insertmacro MUI_LANGUAGE "Spanish" +!insertmacro MUI_LANGUAGE "Swedish" +!insertmacro MUI_LANGUAGE "Turkish" +!insertmacro MUI_LANGUAGE "Ukrainian" + +#################################################################### +# Files, by option section + +Section "$(SectionMainName)" SectionMain + SectionIn 1 2 3 RO + + SetOutPath $INSTDIR + + ; 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 "astyle.exe" + File "LICENSE" + File "NEWS.md" + File "README.md" + + ; Write required paths + SetOutPath $INSTDIR\Templates + File /nonfatal /r "Templates\*" + + SetOutPath $INSTDIR\Icons + File /nonfatal /r "Icons\*" +SectionEnd + +Section "$(SectionMinGWName)" SectionMinGW + SectionIn 1 3 + SetOutPath $INSTDIR\MinGW64 + + File /nonfatal /r "${COMPILERFOLDER}\*" +SectionEnd + +Section "$(SectionIconsName)" SectionIcons + SectionIn 1 3 + + SetOutPath $INSTDIR\Icons + File /nonfatal /r "Icons\*.*" +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\Dev-C++" + CreateShortCut "$0\Dev-C++\Red Panda Dev-C++.lnk" "$INSTDIR\RedPandaIDE.exe" + CreateShortCut "$0\Dev-C++\License.lnk" "$INSTDIR\LICENSE" + CreateShortCut "$0\Dev-C++\Uninstall Red Panda Dev-C++.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\Red Panda Dev-C++.lnk" "$INSTDIR\RedPandaIDE.exe" +SectionEnd + +SubSectionEnd + +Section "$(SectionConfigName)" SectionConfig + SectionIn 3 + + RMDir /r "$APPDATA\RedPanda-C++" + +SectionEnd + +#################################################################### + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN +!insertmacro MUI_DESCRIPTION_TEXT ${SectionMain} "$(MessageSectionMain)" +!insertmacro MUI_DESCRIPTION_TEXT ${SectionMinGW} "$(MessageSectionMinGW)" +!insertmacro MUI_DESCRIPTION_TEXT ${SectionIcons} "$(MessageSectionIcons)" +!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 + 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\Dev-C++\Red Panda Dev-C++.lnk" + Delete "$SMPROGRAMS\Dev-C++\License.lnk" + Delete "$SMPROGRAMS\Dev-C++\Uninstall Red Panda Dev-C++.lnk" + RMDir "$SMPROGRAMS\Dev-C++" + + ; Remove desktop stuff, located in current user folder + SetShellVarContext current + Delete "$QUICKLAUNCH\Red Panda Dev-C++.lnk" + Delete "$DESKTOP\Red Panda Dev-C++.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\astyle.exe" + Delete "$INSTDIR\LICENSE" + Delete "$INSTDIR\README.md" + + RMDir /r "$INSTDIR\Lang" + RMDir /r "$INSTDIR\Icons" + RMDir /r "$INSTDIR\Templates" + RMDir /r "$INSTDIR\MinGW32" + RMDir /r "$INSTDIR\MinGW64" + + 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\RedPanda-C++" + +Done: +SectionEnd \ No newline at end of file diff --git a/installer/devcppnocompiler.nsi b/installer/devcppnocompiler.nsi new file mode 100644 index 00000000..c07e3dd1 --- /dev/null +++ b/installer/devcppnocompiler.nsi @@ -0,0 +1,633 @@ +#################################################################### +# Startup + +!define COMPILERNAME "No.Compiler" +!define COMPILERFOLDER "" +!define DEVCPP_VERSION "6.7.5" +!define FINALNAME "Dev-Cpp.${DEVCPP_VERSION}.${COMPILERNAME}.Setup.exe" +!define DISPLAY_NAME "Red Panda Dev-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 $PROGRAMFILES\Dev-Cpp + +#################################################################### +# Interface Settings + +ShowInstDetails show +AutoCloseWindow false +SilentInstall normal +CRCCheck on +SetCompressor /SOLID /FINAL lzma +SetCompressorDictSize 64 +SetDatablockOptimize on +SetOverwrite try +XPStyle on + +InstType "Full";1 +InstType "Minimal";2 +InstType "Safe";3 + +## Remember the installer language +!define MUI_LANGDLL_REGISTRY_ROOT "HKCU" +!define MUI_LANGDLL_REGISTRY_KEY "Software\Dev-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\devcpp.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" +!insertmacro MUI_LANGUAGE "TradChinese" +!insertmacro MUI_LANGUAGE "Bulgarian" +!insertmacro MUI_LANGUAGE "Catalan" +!insertmacro MUI_LANGUAGE "Croatian" +!insertmacro MUI_LANGUAGE "Czech" +!insertmacro MUI_LANGUAGE "Danish" +!insertmacro MUI_LANGUAGE "Dutch" +!insertmacro MUI_LANGUAGE "Estonian" +!insertmacro MUI_LANGUAGE "French" +!insertmacro MUI_LANGUAGE "German" +!insertmacro MUI_LANGUAGE "Greek" +!insertmacro MUI_LANGUAGE "Hungarian" +!insertmacro MUI_LANGUAGE "Italian" +!insertmacro MUI_LANGUAGE "Korean" +!insertmacro MUI_LANGUAGE "Latvian" +!insertmacro MUI_LANGUAGE "Polish" +!insertmacro MUI_LANGUAGE "Portuguese" +!insertmacro MUI_LANGUAGE "Romanian" +!insertmacro MUI_LANGUAGE "Russian" +!insertmacro MUI_LANGUAGE "Slovak" +!insertmacro MUI_LANGUAGE "Slovenian" +!insertmacro MUI_LANGUAGE "Spanish" +!insertmacro MUI_LANGUAGE "Swedish" +!insertmacro MUI_LANGUAGE "Turkish" +!insertmacro MUI_LANGUAGE "Ukrainian" + + +#################################################################### +# Files, by option section + +Section "$(SectionMainName)" SectionMain + SectionIn 1 2 3 RO + + SetOutPath $INSTDIR + + ; Allways create an uninstaller + WriteUninstaller "$INSTDIR\uninstall.exe" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Dev-C++" "DisplayName" "Dev-C++" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Dev-C++" "UninstallString" "$INSTDIR\uninstall.exe" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Dev-C++" "DisplayVersion" "${DEVCPP_VERSION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Dev-C++" "DisplayIcon" "$INSTDIR\devcpp.exe" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Dev-C++" "Publisher" "Bloodshed Software" + + ; HDPI Fix + WriteRegStr HKCU "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers" "$INSTDIR\devcpp.exe" "~ HIGHDPIAWARE" + + ; Write required files + File "devcpp.exe" + File "packman.exe" + File "PackMaker.exe" + File "ConsolePauser.exe" + File "devcpp.exe.manifest" + File "LICENSE" + File "NEWS.txt" + File "README.MD" + + ; Write required paths + SetOutPath $INSTDIR\Lang + File /nonfatal /r "Lang\English.*" + SetOutPath $INSTDIR\Templates + File /nonfatal /r "Templates\*" + SetOutPath $INSTDIR\Help + File /nonfatal /r "Help\*" + SetOutPath $INSTDIR\AStyle + File /nonfatal /r "AStyle\*" + SetOutPath $INSTDIR\ResEd + File /nonfatal /r "ResEd\*" + SetOutPath $INSTDIR\Contributes + File /nonfatal /r "contributes\*" +SectionEnd + +Section "$(SectionIconsName)" SectionIcons + SectionIn 1 3 + + SetOutPath $INSTDIR\Icons + File /nonfatal /r "Icons\*.*" +SectionEnd + +Section "$(SectionLangsName)" SectionLangs + SectionIn 1 3 + + SetOutPath $INSTDIR\Lang + File /nonfatal /r "Lang\*" +SectionEnd + +#################################################################### +# File association +SubSection "$(SectionAssocsName)" SectionAssocs +Section "$(SectionAssocExtNameBegin) .dev $(SectionAssocExtNameEnd)" + SectionIn 1 3 + + StrCpy $0 ".dev" + Call BackupAssoc + + StrCpy $0 $INSTDIR\DevCpp.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\DevCpp.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\DevCpp.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\DevCpp.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\DevCpp.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\DevCpp.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\DevCpp.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\DevCpp.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 + +Section "$(SectionAssocExtNameBegin) .rc $(SectionAssocExtNameEnd)" + SectionIn 1 3 + + StrCpy $0 ".rc" + Call BackupAssoc + + StrCpy $0 $INSTDIR\DevCpp.exe + WriteRegStr HKCR ".rc" "" "DevCpp.rc" + WriteRegStr HKCR "DevCpp.rc" "" "Resource Source File" + WriteRegStr HKCR "DevCpp.rc\DefaultIcon" "" '$0,8' + WriteRegStr HKCR "DevCpp.rc\Shell\Open\Command" "" '$0 "%1"' + Call RefreshShellIcons +SectionEnd + +Section "$(SectionAssocExtNameBegin) .devpak $(SectionAssocExtNameEnd)" + SectionIn 1 3 + + StrCpy $0 ".devpak" + Call BackupAssoc + + StrCpy $0 $INSTDIR\DevCpp.exe + StrCpy $1 $INSTDIR\PackMan.exe + WriteRegStr HKCR ".devpak" "" "DevCpp.devpak" + WriteRegStr HKCR "DevCpp.devpak" "" "Dev-C++ Package File" + WriteRegStr HKCR "DevCpp.devpak\DefaultIcon" "" '$0,9' + WriteRegStr HKCR "DevCpp.devpak\Shell\Open\Command" "" '$1 "%1"' + Call RefreshShellIcons +SectionEnd + +Section "$(SectionAssocExtNameBegin) .devpackage $(SectionAssocExtNameEnd)" + SectionIn 1 3 + + StrCpy $0 ".devpackage" + Call BackupAssoc + + StrCpy $0 $INSTDIR\DevCpp.exe + StrCpy $1 $INSTDIR\PackMan.exe + WriteRegStr HKCR ".devpackage" "" "DevCpp.devpackage" + WriteRegStr HKCR "DevCpp.devpackage" "" "Dev-C++ Package File" + WriteRegStr HKCR "DevCpp.devpackage\DefaultIcon" "" '$0,10' + WriteRegStr HKCR "DevCpp.devpackage\Shell\Open\Command" "" '$1 "%1"' + Call RefreshShellIcons +SectionEnd + +Section "$(SectionAssocExtNameBegin) .template $(SectionAssocExtNameEnd)" + SectionIn 1 3 + + StrCpy $0 ".template" + Call BackupAssoc + + StrCpy $0 $INSTDIR\DevCpp.exe + WriteRegStr HKCR ".template" "" "DevCpp.template" + WriteRegStr HKCR "DevCpp.template" "" "Dev-C++ Template File" + WriteRegStr HKCR "DevCpp.template\DefaultIcon" "" '$0,1' + WriteRegStr HKCR "DevCpp.template\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\Dev-C++" + CreateShortCut "$0\Dev-C++\Red Panda Dev-C++.lnk" "$INSTDIR\devcpp.exe" + CreateShortCut "$0\Dev-C++\License.lnk" "$INSTDIR\LICENSE" + CreateShortCut "$0\Dev-C++\Uninstall Red Panda Dev-C++.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\Red Panda Dev-C++.lnk" "$INSTDIR\devcpp.exe" +SectionEnd + +SubSectionEnd + +Section "$(SectionConfigName)" SectionConfig + SectionIn 3 + + RMDir /r "$APPDATA\Dev-Cpp" + + Delete "$INSTDIR\devcpp.ini" + Delete "$INSTDIR\devcpp.cfg" + Delete "$INSTDIR\cache.ccc" + Delete "$INSTDIR\defaultcode.cfg" + Delete "$INSTDIR\devshortcuts.cfg" + Delete "$INSTDIR\classfolders.dcf" + Delete "$INSTDIR\mirrors.cfg" + Delete "$INSTDIR\tools.ini" + Delete "$INSTDIR\devcpp.ci" +SectionEnd + +#################################################################### +# TODO: Create language tables that describe installation components using LangString + +!insertmacro MUI_FUNCTION_DESCRIPTION_BEGIN +!insertmacro MUI_DESCRIPTION_TEXT ${SectionMain} "$(MessageSectionMain)" +!insertmacro MUI_DESCRIPTION_TEXT ${SectionIcons} "$(MessageSectionIcons)" +#!insertmacro MUI_DESCRIPTION_TEXT ${SectionMinGW} "$(MessageSectionMinGW}" +!insertmacro MUI_DESCRIPTION_TEXT ${SectionLangs} "$(MessageSectionLangs)" +!insertmacro MUI_DESCRIPTION_TEXT ${SectionAssocs} "$(MessageSectionAssocs)" +!insertmacro MUI_DESCRIPTION_TEXT ${SectionShortcuts} "$(MessageSectionShortcuts)" +!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 + 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\Dev-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\Dev-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\Dev-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\Dev-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\Dev-C++\Red Panda Dev-C++.lnk" + Delete "$SMPROGRAMS\Dev-C++\License.lnk" + Delete "$SMPROGRAMS\Dev-C++\Uninstall Red Panda Dev-C++.lnk" + RMDir "$SMPROGRAMS\Dev-C++" + + ; Remove desktop stuff, located in current user folder + SetShellVarContext current + Delete "$QUICKLAUNCH\Red Panda Dev-C++.lnk" + Delete "$DESKTOP\Red Panda Dev-C++.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 + StrCpy $0 ".rc" + Call un.RestoreAssoc + StrCpy $0 ".devpak" + Call un.RestoreAssoc + StrCpy $0 ".devpackage" + Call un.RestoreAssoc + StrCpy $0 ".template" + 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" + DeleteRegKey HKCR "DevCpp.rc" + DeleteRegKey HKCR "DevCpp.devpak" + DeleteRegKey HKCR "DevCpp.devpackage" + DeleteRegKey HKCR "DevCpp.template" + + Delete "$INSTDIR\Packman.map" + Delete "$INSTDIR\Packman.exe" + Delete "$INSTDIR\PackMaker.exe" + Delete "$INSTDIR\NEWS.txt" + Delete "$INSTDIR\devcpp.map" + Delete "$INSTDIR\devcpp.exe" + Delete "$INSTDIR\devcpp.exe.manifest" + Delete "$INSTDIR\devcppPortable.exe" + Delete "$INSTDIR\ConsolePauser.exe" + Delete "$INSTDIR\LICENSE" + Delete "$INSTDIR\README.MD" + + RMDir /r "$INSTDIR\Lang" + RMDir /r "$INSTDIR\Examples" + RMDir /r "$INSTDIR\Help" + RMDir /r "$INSTDIR\Icons" + RMDir /r "$INSTDIR\Packages" + RMDir /r "$INSTDIR\Templates" + RMDir /r "$INSTDIR\Astyle" + RMDir /r "$INSTDIR\ResEd" + RMDir /r "$INSTDIR\Contributes" + RMDir /r "$INSTDIR\MinGW32" + RMDir /r "$INSTDIR\MinGW64" + + StrCpy $0 "$INSTDIR" + Call un.DeleteDirIfEmpty + + ; Remove registry keys + DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\Dev-C++" + DeleteRegKey HKCU "Software\Microsoft\Windows NT\CurrentVersion\AppCompatFlags\Layers\$INSTDIR\devcpp.exe" + DeleteRegKey HKCU "Software\Dev-C++" + + IfSilent +2 ; Don't ask when running in silent mode + MessageBox MB_YESNO "$(MessageRemoveConfig)" IDNO Done + + RMDir /r "$APPDATA\Dev-Cpp" + + Delete "$INSTDIR\devcpp.ini" + Delete "$INSTDIR\devcpp.cfg" + Delete "$INSTDIR\cache.ccc" + Delete "$INSTDIR\defaultcode.cfg" + Delete "$INSTDIR\devshortcuts.cfg" + Delete "$INSTDIR\classfolders.dcf" + Delete "$INSTDIR\mirrors.cfg" + Delete "$INSTDIR\tools.ini" + Delete "$INSTDIR\devcpp.ci" + +Done: +SectionEnd \ No newline at end of file diff --git a/installer/lang.nsh b/installer/lang.nsh new file mode 100644 index 00000000..927a4965 --- /dev/null +++ b/installer/lang.nsh @@ -0,0 +1,620 @@ +/* English 1033 */ +LangString MessageSectionMain 1033 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1033 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1033 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1033 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1033 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1033 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1033 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1033 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1033 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1033 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1033 "Program files (required)" +LangString SectionIconsName 1033 "Icon files" +LangString SectionLangsName 1033 "Language files" +LangString SectionMinGWName 1033 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1033 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1033 "Associate" +LangString SectionAssocExtNameEnd 1033 "files to Dev-C++" +LangString SectionShortcutsName 1033 "Shortcuts" +LangString SectionMenuLaunchName 1033 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1033 "Create Desktop shortcut" +LangString SectionConfigName 1033 "Remove old configuration files" + +/* Simplified Chinese 2052 */ +LangString MessageSectionMain 2052 "小熊猫Dev-C++ IDE (集成开发环境), 包管理器和项目模板" +LangString MessageSectionIcons 2052 "项目模板使用的图标文件" +LangString MessageSectionMinGW 2052 "${COMPILERNAME} 编译器和相关的工具、头文件和库" +LangString MessageSectionLangs 2052 "Dev-C++翻译文件" +LangString MessageSectionAssocs 2052 "使用Dev-C++打开这些文件" +LangString MessageSectionShortcuts 2052 "开始菜单和快捷方式" +LangString MessageSectionConfig 2052 "删除之前安装遗留的所有配置文件" +LangString MessageUninstallText 2052 "将要删除小熊猫Dev-C++, 是否继续?" +LangString MessageUninstallExisting 2052 "本机上已经安装了旧版本Dev-C++. $\n$\n点击'确定'以将其删除并继续,或者'取消'中止安装。" +LangString MessageRemoveConfig 2052 "你想要删除所有的配置文件吗?" +LangString SectionMainName 2052 "程序文件 (必须)" +LangString SectionIconsName 2052 "图标文件" +LangString SectionLangsName 2052 "语言文件" +LangString SectionMinGWName 2052 "${COMPILERNAME}编译器" +LangString SectionAssocsName 2052 "关联文件到Dev-C++" +LangString SectionAssocExtNameBegin 2052 "将" +LangString SectionAssocExtNameEnd 2052 "文件关联到Dev-C++" +LangString SectionShortcutsName 2052 "快捷方式" +LangString SectionMenuLaunchName 2052 "创建开始菜单程序项" +LangString SectionDesktopLaunchName 2052 "创建桌面快捷方式" +LangString SectionConfigName 2052 "删除原有配置文件" + +/* Traditional Chinese 1028 */ +LangString MessageSectionMain 1028 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1028 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1028 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1028 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1028 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1028 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1028 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1028 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1028 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1028 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1028 "Dev-C++ program files (required)" +LangString SectionIconsName 1028 "Icon files" +LangString SectionLangsName 1028 "Language files" +LangString SectionMinGWName 1028 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1028 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1028 "Associate" +LangString SectionAssocExtNameEnd 1028 "files to Dev-C++" +LangString SectionShortcutsName 1028 "Shortcuts" +LangString SectionMenuLaunchName 1028 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1028 "Create Desktop shortcut" +LangString SectionConfigName 1028 "Remove old configuration files" + +/* Bulgarian 1026 */ +LangString MessageSectionMain 1026 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1026 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1026 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1026 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1026 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1026 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1026 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1026 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1026 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1026 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1026 "Dev-C++ program files (required)" +LangString SectionIconsName 1026 "Icon files" +LangString SectionLangsName 1026 "Language files" +LangString SectionMinGWName 1026 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1026 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1026 "Associate" +LangString SectionAssocExtNameEnd 1026 "files to Dev-C++" +LangString SectionShortcutsName 1026 "Shortcuts" +LangString SectionMenuLaunchName 1026 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1026 "Create Desktop shortcut" +LangString SectionConfigName 1026 "Remove old configuration files" + +/* Catalan 1027 */ +LangString MessageSectionMain 1027 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1027 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1027 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1027 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1027 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1027 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1027 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1027 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1027 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1027 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1027 "Dev-C++ program files (required)" +LangString SectionIconsName 1027 "Icon files" +LangString SectionLangsName 1027 "Language files" +LangString SectionMinGWName 1027 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1027 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1027 "Associate" +LangString SectionAssocExtNameEnd 1027 "files to Dev-C++" +LangString SectionShortcutsName 1027 "Shortcuts" +LangString SectionMenuLaunchName 1027 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1027 "Create Desktop shortcut" +LangString SectionConfigName 1027 "Remove old configuration files" + +/* Croatian 1050 */ +LangString MessageSectionMain 1050 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1050 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1050 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1050 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1050 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1050 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1050 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1050 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1050 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1050 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1050 "Dev-C++ program files (required)" +LangString SectionIconsName 1050 "Icon files" +LangString SectionLangsName 1050 "Language files" +LangString SectionMinGWName 1050 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1050 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1050 "Associate" +LangString SectionAssocExtNameEnd 1050 "files to Dev-C++" +LangString SectionShortcutsName 1050 "Shortcuts" +LangString SectionMenuLaunchName 1050 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1050 "Create Desktop shortcut" +LangString SectionConfigName 1050 "Remove old configuration files" + +/* Czech 1029 */ +LangString MessageSectionMain 1029 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1029 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1029 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1029 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1029 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1029 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1029 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1029 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1029 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1029 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1029 "Dev-C++ program files (required)" +LangString SectionIconsName 1029 "Icon files" +LangString SectionLangsName 1029 "Language files" +LangString SectionMinGWName 1029 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1029 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1029 "Associate" +LangString SectionAssocExtNameEnd 1029 "files to Dev-C++" +LangString SectionShortcutsName 1029 "Shortcuts" +LangString SectionMenuLaunchName 1029 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1029 "Create Desktop shortcut" +LangString SectionConfigName 1029 "Remove old configuration files" + +/* Danish 1030 */ +LangString MessageSectionMain 1030 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1030 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1030 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1030 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1030 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1030 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1030 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1030 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1030 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1030 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1030 "Dev-C++ program files (required)" +LangString SectionIconsName 1030 "Icon files" +LangString SectionLangsName 1030 "Language files" +LangString SectionMinGWName 1030 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1030 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1030 "Associate" +LangString SectionAssocExtNameEnd 1030 "files to Dev-C++" +LangString SectionShortcutsName 1030 "Shortcuts" +LangString SectionMenuLaunchName 1030 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1030 "Create Desktop shortcut" +LangString SectionConfigName 1030 "Remove old configuration files" + +/* Dutch 1043 */ +LangString MessageSectionMain 1043 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1043 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1043 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1043 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1043 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1043 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1043 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1043 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1043 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1043 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1043 "Dev-C++ program files (required)" +LangString SectionIconsName 1043 "Icon files" +LangString SectionLangsName 1043 "Language files" +LangString SectionMinGWName 1043 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1043 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1043 "Associate" +LangString SectionAssocExtNameEnd 1043 "files to Dev-C++" +LangString SectionShortcutsName 1043 "Shortcuts" +LangString SectionMenuLaunchName 1043 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1043 "Create Desktop shortcut" +LangString SectionConfigName 1043 "Remove old configuration files" + +/* Estonian 1061 */ +LangString MessageSectionMain 1061 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1061 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1061 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1061 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1061 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1061 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1061 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1061 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1061 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1061 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1061 "Dev-C++ program files (required)" +LangString SectionIconsName 1061 "Icon files" +LangString SectionLangsName 1061 "Language files" +LangString SectionMinGWName 1061 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1061 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1061 "Associate" +LangString SectionAssocExtNameEnd 1061 "files to Dev-C++" +LangString SectionShortcutsName 1061 "Shortcuts" +LangString SectionMenuLaunchName 1061 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1061 "Create Desktop shortcut" +LangString SectionConfigName 1061 "Remove old configuration files" + +/* French 1036 */ +LangString MessageSectionMain 1036 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1036 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1036 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1036 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1036 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1036 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1036 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1036 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1036 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1036 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1036 "Dev-C++ program files (required)" +LangString SectionIconsName 1036 "Icon files" +LangString SectionLangsName 1036 "Language files" +LangString SectionMinGWName 1036 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1036 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1036 "Associate" +LangString SectionAssocExtNameEnd 1036 "files to Dev-C++" +LangString SectionShortcutsName 1036 "Shortcuts" +LangString SectionMenuLaunchName 1036 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1036 "Create Desktop shortcut" +LangString SectionConfigName 1036 "Remove old configuration files" + +/* German 1031 */ +LangString MessageSectionMain 1031 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1031 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1031 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1031 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1031 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1031 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1031 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1031 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1031 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1031 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1031 "Dev-C++ program files (required)" +LangString SectionIconsName 1031 "Icon files" +LangString SectionLangsName 1031 "Language files" +LangString SectionMinGWName 1031 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1031 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1031 "Associate" +LangString SectionAssocExtNameEnd 1031 "files to Dev-C++" +LangString SectionShortcutsName 1031 "Shortcuts" +LangString SectionMenuLaunchName 1031 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1031 "Create Desktop shortcut" +LangString SectionConfigName 1031 "Remove old configuration files" + +/* Greek 1032 */ +LangString MessageSectionMain 1032 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1032 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1032 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1032 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1032 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1032 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1032 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1032 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1032 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1032 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1032 "Dev-C++ program files (required)" +LangString SectionIconsName 1032 "Icon files" +LangString SectionLangsName 1032 "Language files" +LangString SectionMinGWName 1032 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1032 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1032 "Associate" +LangString SectionAssocExtNameEnd 1032 "files to Dev-C++" +LangString SectionShortcutsName 1032 "Shortcuts" +LangString SectionMenuLaunchName 1032 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1032 "Create Desktop shortcut" +LangString SectionConfigName 1032 "Remove old configuration files" + +/* Hungarian 1038 */ +LangString MessageSectionMain 1038 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1038 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1038 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1038 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1038 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1038 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1038 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1038 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1038 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1038 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1038 "Dev-C++ program files (required)" +LangString SectionIconsName 1038 "Icon files" +LangString SectionLangsName 1038 "Language files" +LangString SectionMinGWName 1038 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1038 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1038 "Associate" +LangString SectionAssocExtNameEnd 1038 "files to Dev-C++" +LangString SectionShortcutsName 1038 "Shortcuts" +LangString SectionMenuLaunchName 1038 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1038 "Create Desktop shortcut" +LangString SectionConfigName 1038 "Remove old configuration files" + +/* Italian 1040 */ +LangString MessageSectionMain 1040 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1040 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1040 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1040 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1040 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1040 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1040 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1040 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1040 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1040 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1040 "Dev-C++ program files (required)" +LangString SectionIconsName 1040 "Icon files" +LangString SectionLangsName 1040 "Language files" +LangString SectionMinGWName 1040 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1040 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1040 "Associate" +LangString SectionAssocExtNameEnd 1040 "files to Dev-C++" +LangString SectionShortcutsName 1040 "Shortcuts" +LangString SectionMenuLaunchName 1040 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1040 "Create Desktop shortcut" +LangString SectionConfigName 1040 "Remove old configuration files" + +/* Korean 1042 */ +LangString MessageSectionMain 1042 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1042 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1042 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1042 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1042 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1042 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1042 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1042 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1042 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1042 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1042 "Dev-C++ program files (required)" +LangString SectionIconsName 1042 "Icon files" +LangString SectionLangsName 1042 "Language files" +LangString SectionMinGWName 1042 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1042 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1042 "Associate" +LangString SectionAssocExtNameEnd 1042 "files to Dev-C++" +LangString SectionShortcutsName 1042 "Shortcuts" +LangString SectionMenuLaunchName 1042 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1042 "Create Desktop shortcut" +LangString SectionConfigName 1042 "Remove old configuration files" + +/* Latvian (1062) */ +LangString MessageSectionMain 1062 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1062 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1062 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1062 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1062 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1062 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1062 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1062 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1062 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1062 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1062 "Dev-C++ program files (required)" +LangString SectionIconsName 1062 "Icon files" +LangString SectionLangsName 1062 "Language files" +LangString SectionMinGWName 1062 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1062 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1062 "Associate" +LangString SectionAssocExtNameEnd 1062 "files to Dev-C++" +LangString SectionShortcutsName 1062 "Shortcuts" +LangString SectionMenuLaunchName 1062 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1062 "Create Desktop shortcut" +LangString SectionConfigName 1062 "Remove old configuration files" + +/* Polish (1045) */ +LangString MessageSectionMain 1045 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1045 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1045 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1045 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1045 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1045 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1045 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1045 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1045 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1045 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1045 "Dev-C++ program files (required)" +LangString SectionIconsName 1045 "Icon files" +LangString SectionLangsName 1045 "Language files" +LangString SectionMinGWName 1045 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1045 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1045 "Associate" +LangString SectionAssocExtNameEnd 1045 "files to Dev-C++" +LangString SectionShortcutsName 1045 "Shortcuts" +LangString SectionMenuLaunchName 1045 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1045 "Create Desktop shortcut" +LangString SectionConfigName 1045 "Remove old configuration files" + +/* Portuguese (2070) */ +LangString MessageSectionMain 2070 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 2070 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 2070 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 2070 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 2070 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 2070 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 2070 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 2070 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 2070 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 2070 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 2070 "Dev-C++ program files (required)" +LangString SectionIconsName 2070 "Icon files" +LangString SectionLangsName 2070 "Language files" +LangString SectionMinGWName 2070 "${COMPILERNAME} compiler" +LangString SectionAssocsName 2070 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 2070 "Associate" +LangString SectionAssocExtNameEnd 2070 "files to Dev-C++" +LangString SectionShortcutsName 2070 "Shortcuts" +LangString SectionMenuLaunchName 2070 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 2070 "Create Desktop shortcut" +LangString SectionConfigName 2070 "Remove old configuration files" + +/* Romanian (1048) */ +LangString MessageSectionMain 1048 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1048 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1048 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1048 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1048 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1048 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1048 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1048 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1048 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1048 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1048 "Dev-C++ program files (required)" +LangString SectionIconsName 1048 "Icon files" +LangString SectionLangsName 1048 "Language files" +LangString SectionMinGWName 1048 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1048 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1048 "Associate" +LangString SectionAssocExtNameEnd 1048 "files to Dev-C++" +LangString SectionShortcutsName 1048 "Shortcuts" +LangString SectionMenuLaunchName 1048 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1048 "Create Desktop shortcut" +LangString SectionConfigName 1048 "Remove old configuration files" + +/* Russian (1049) */ +LangString MessageSectionMain 1049 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1049 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1049 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1049 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1049 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1049 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1049 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1049 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1049 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1049 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1049 "Dev-C++ program files (required)" +LangString SectionIconsName 1049 "Icon files" +LangString SectionLangsName 1049 "Language files" +LangString SectionMinGWName 1049 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1049 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1049 "Associate" +LangString SectionAssocExtNameEnd 1049 "files to Dev-C++" +LangString SectionShortcutsName 1049 "Shortcuts" +LangString SectionMenuLaunchName 1049 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1049 "Create Desktop shortcut" +LangString SectionConfigName 1049 "Remove old configuration files" + +/* Slovak (1051) */ +LangString MessageSectionMain 1051 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1051 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1051 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1051 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1051 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1051 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1051 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1051 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1051 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1051 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1051 "Dev-C++ program files (required)" +LangString SectionIconsName 1051 "Icon files" +LangString SectionLangsName 1051 "Language files" +LangString SectionMinGWName 1051 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1051 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1051 "Associate" +LangString SectionAssocExtNameEnd 1051 "files to Dev-C++" +LangString SectionShortcutsName 1051 "Shortcuts" +LangString SectionMenuLaunchName 1051 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1051 "Create Desktop shortcut" +LangString SectionConfigName 1051 "Remove old configuration files" + +/* Slovenian (1060) */ +LangString MessageSectionMain 1060 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1060 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1060 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1060 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1060 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1060 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1060 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1060 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1060 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1060 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1060 "Dev-C++ program files (required)" +LangString SectionIconsName 1060 "Icon files" +LangString SectionLangsName 1060 "Language files" +LangString SectionMinGWName 1060 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1060 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1060 "Associate" +LangString SectionAssocExtNameEnd 1060 "files to Dev-C++" +LangString SectionShortcutsName 1060 "Shortcuts" +LangString SectionMenuLaunchName 1060 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1060 "Create Desktop shortcut" +LangString SectionConfigName 1060 "Remove old configuration files" + +/* Spanish (1034) */ +LangString MessageSectionMain 1034 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1034 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1034 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1034 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1034 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1034 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1034 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1034 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1034 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1034 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1034 "Dev-C++ program files (required)" +LangString SectionIconsName 1034 "Icon files" +LangString SectionLangsName 1034 "Language files" +LangString SectionMinGWName 1034 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1034 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1034 "Associate" +LangString SectionAssocExtNameEnd 1034 "files to Dev-C++" +LangString SectionShortcutsName 1034 "Shortcuts" +LangString SectionMenuLaunchName 1034 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1034 "Create Desktop shortcut" +LangString SectionConfigName 1034 "Remove old configuration files" + +/* Swedish (1053) */ +LangString MessageSectionMain 1053 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1053 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1053 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1053 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1053 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1053 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1053 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1053 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1053 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1053 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1053 "Dev-C++ program files (required)" +LangString SectionIconsName 1053 "Icon files" +LangString SectionLangsName 1053 "Language files" +LangString SectionMinGWName 1053 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1053 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1053 "Associate" +LangString SectionAssocExtNameEnd 1053 "files to Dev-C++" +LangString SectionShortcutsName 1053 "Shortcuts" +LangString SectionMenuLaunchName 1053 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1053 "Create Desktop shortcut" +LangString SectionConfigName 1053 "Remove old configuration files" + +/* Turkish (1055) */ +LangString MessageSectionMain 1055 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1055 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1055 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1055 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1055 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1055 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1055 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1055 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1055 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1055 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1055 "Dev-C++ program files (required)" +LangString SectionIconsName 1055 "Icon files" +LangString SectionLangsName 1055 "Language files" +LangString SectionMinGWName 1055 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1055 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1055 "Associate" +LangString SectionAssocExtNameEnd 1055 "files to Dev-C++" +LangString SectionShortcutsName 1055 "Shortcuts" +LangString SectionMenuLaunchName 1055 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1055 "Create Desktop shortcut" +LangString SectionConfigName 1055 "Remove old configuration files" + +/* Ukrainian (1058) */ +LangString MessageSectionMain 1058 "The Dev-C++ IDE (Integrated Development Environment), package manager and templates" +LangString MessageSectionIcons 1058 "Various icons that you can use in your programs" +LangString MessageSectionMinGW 1058 "The ${COMPILERNAME} compiler and associated tools, headers and libraries" +LangString MessageSectionLangs 1058 "The Dev-C++ interface translated to different languages (other than English which is built-in)" +LangString MessageSectionAssocs 1058 "Use Dev-C++ as the default application for opening these types of files" +LangString MessageSectionShortcuts 1058 "Create shortcuts to Dev-C++ in various folders" +LangString MessageSectionConfig 1058 "Remove all leftover configuration files from previous installs" +LangString MessageUninstallText 1058 "This program will uninstall Red Panda Dev-C++, continue?" +LangString MessageUninstallExisting 1058 "Red Panda Dev-C++ is already installed. $\n$\nClick OK to remove the previous version or Cancel to cancel the installation." +LangString MessageRemoveConfig 1058 "Do you want to remove all the remaining configuration files?" +LangString SectionMainName 1058 "Dev-C++ program files (required)" +LangString SectionIconsName 1058 "Icon files" +LangString SectionLangsName 1058 "Language files" +LangString SectionMinGWName 1058 "${COMPILERNAME} compiler" +LangString SectionAssocsName 1058 "Associate files to Dev-C++" +LangString SectionAssocExtNameBegin 1058 "Associate" +LangString SectionAssocExtNameEnd 1058 "files to Dev-C++" +LangString SectionShortcutsName 1058 "Shortcuts" +LangString SectionMenuLaunchName 1058 "Create Start Menu shortcuts" +LangString SectionDesktopLaunchName 1058 "Create Desktop shortcut" +LangString SectionConfigName 1058 "Remove old configuration files"