From d569ca00fc122565865b465d42b9721df7a7dca3 Mon Sep 17 00:00:00 2001 From: Pairi Daiza Date: Mon, 24 Apr 2023 18:44:11 +0200 Subject: [PATCH] MUI - Localization in INNO Setup of "Open with Notepad3" --- Build/Resources/Notepad3.ico | Bin 0 -> 134730 bytes Build/notepad3_x64_setup.iss | 647 ++++++++++++++++++++--------------- Build/notepad3_x86_setup.iss | 647 ++++++++++++++++++++--------------- 3 files changed, 744 insertions(+), 550 deletions(-) create mode 100644 Build/Resources/Notepad3.ico diff --git a/Build/Resources/Notepad3.ico b/Build/Resources/Notepad3.ico new file mode 100644 index 0000000000000000000000000000000000000000..b7b7fb91c5a09d6e8f372a75adbf125f64e7aeee GIT binary patch literal 134730 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

47q2T9dl-#<- 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 znG ''); + Var + PrevAppDir: String; + begin + PrevAppDir := WizardForm.PrevAppDir; + Result := Length( PrevAppDir ) > 0; + If Result then + Result := FileExists( AddBackslash(PrevAppDir) + '{#app_name}.exe' ); end; // Check if Notepad3's settings exist function SettingsExistCheck(): Boolean; begin - if FileExists(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\Notepad3.ini')) then begin - Log('Custom Code: Settings are present'); - Result := True; - end - else begin + Result := FileExists(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\Notepad3.ini')); + If Result Then + Log('Custom Code: Settings are present') + else Log('Custom Code: Settings are NOT present'); - Result := False; - end; end; function UninstallOldVersion(sInfFile: String): Integer; -var - iResultCode: Integer; -begin - // Return Values: - // 0 - no idea - // 1 - error executing the command - // 2 - successfully executed the command + begin + // Return Values: + // -1 - exec(...) failed! + // return value of the executing command (0 - AllOK, 1 - SysErrorMessage(1), etc.) - // default return value - Result := 0; - // TODO: use RegQueryStringValue - if not Exec('rundll32.exe', ExpandConstant('advpack.dll,LaunchINFSectionEx ' + '"{commonpf}\Notepad2\' + sInfFile +'",DefaultUninstall,,8,N'), '', SW_HIDE, ewWaitUntilTerminated, iResultCode) then begin - Result := 1; - end - else begin - Result := 2; - Sleep(200); - end; + // default return value + Result := -1; + // TODO: use RegQueryStringValue + Exec('rundll32.exe', ExpandConstant('advpack.dll,LaunchINFSectionEx ' + '"{commonpf}\Notepad2\' + sInfFile +'",DefaultUninstall,,8,N'), '', SW_HIDE, ewWaitUntilTerminated, Result); end; function ShouldSkipPage(PageID: Integer): Boolean; begin - // Hide the license page if IsUpgrade() - if IsUpgrade() and (PageID = wpLicense) then - Result := True; + // Skip the license page if IsUpgrade() + // if IsUpgrade() and (PageID = wpLicense) then + if PageID = wpLicense then + if IsUpgrade() then + begin + Result := True; + WizardForm.LicenseAcceptedRadio.Checked := Result; + end; end; procedure AddReg(); +Var + APP: String; begin + APP := ExpandConstant('{app}'); RegWriteStringValue(HKCR, 'Applications\notepad3.exe', 'AppUserModelID', 'Rizonesoft.Notepad3'); - RegWriteStringValue(HKCR, 'Applications\notepad3.exe\shell\open\command', '', ExpandConstant('"{app}\Notepad3.exe" "%1"')); + RegWriteStringValue(HKCR, 'Applications\notepad3.exe\shell\open\command', '', '"'+APP+'\Notepad3.exe" "%1"'); RegWriteStringValue(HKCR, '*\OpenWithList\notepad3.exe', '', ''); - RegWriteStringValue(HKLM, APPH, '', ExpandConstant('{app}\Notepad3.exe')); - RegWriteStringValue(HKLM, APPH, 'Path', ExpandConstant('{app}')); + RegWriteStringValue(HKLM, APPH, '', APP+'\Notepad3.exe'); + RegWriteStringValue(HKLM, APPH, 'Path', APP); end; procedure CleanUpSettings(); +Var + userappdata: String; begin - DeleteFile(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\Notepad3.ini')); - DeleteFile(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\minipath.ini')); - DeleteFile(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\grepWinNP3.ini')); - DeleteFile(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\Themes\Dark.ini')); - DeleteFile(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\Themes\Obsidian.ini')); - DeleteFile(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\Themes\Sombra.ini')); + userappdata := ExpandConstant('{userappdata}'); + DeleteFile(userappdata + '\Rizonesoft\Notepad3\Notepad3.ini'); + DeleteFile(userappdata + '\Rizonesoft\Notepad3\minipath.ini'); + DeleteFile(userappdata + '\Rizonesoft\Notepad3\grepWinNP3.ini'); + DeleteFile(userappdata + '\Rizonesoft\Notepad3\Themes\Dark.ini'); + DeleteFile(userappdata + '\Rizonesoft\Notepad3\Themes\Obsidian.ini'); + DeleteFile(userappdata + '\Rizonesoft\Notepad3\Themes\Sombra.ini'); end; procedure RemoveReg(); @@ -961,6 +1024,7 @@ begin RegDeleteKeyIncludingSubkeys(HKCR, 'Applications\notepad3.exe'); RegDeleteKeyIncludingSubkeys(HKCR, '*\OpenWithList\notepad3.exe'); RegDeleteKeyIncludingSubkeys(HKCR, '*\shell\Open with Notepad3'); + RegDeleteKeyIncludingSubkeys(HKCR, '*\shell\' + CustomMessage('reg_Open_with_NP3')); RegDeleteKeyIncludingSubkeys(HKLM, APPH); end; @@ -968,18 +1032,30 @@ procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = wpSelectTasks then WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) - else if CurPageID = wpFinished then + else + if CurPageID = wpFinished then WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish); end; procedure CurStepChanged(CurStep: TSetupStep); +Var + reg_Open_with_NP3, APP: String; begin - if CurStep = ssInstall then begin + if (CurStep = ssInstall) or (CurStep = ssPostInstall) then + begin + reg_Open_with_NP3 := CustomMessage('reg_Open_with_NP3'); + APP := ExpandConstant('{app}'); + end; + + if CurStep = ssInstall then + begin if WizardIsTaskSelected('reset_settings') then CleanUpSettings(); - if IsOldBuildInstalled('Uninstall.inf') or IsOldBuildInstalled('Notepad2.inf') then begin - if IsOldBuildInstalled('Uninstall.inf') then begin + if IsOldBuildInstalled('Uninstall.inf') or IsOldBuildInstalled('Notepad2.inf') then + begin + if IsOldBuildInstalled('Uninstall.inf') then + begin Log('Custom Code: The old build is installed, will try to uninstall it'); if UninstallOldVersion('Uninstall.inf') = 2 then Log('Custom Code: The old build was successfully uninstalled') @@ -987,7 +1063,8 @@ begin Log('Custom Code: Something went wrong when uninstalling the old build'); end; - if IsOldBuildInstalled('Notepad2.inf') then begin + if IsOldBuildInstalled('Notepad2.inf') then + begin Log('Custom Code: The official Notepad2 build is installed, will try to uninstall it'); if UninstallOldVersion('Notepad2.inf') = 2 then Log('Custom Code: The official Notepad2 build was successfully uninstalled') @@ -997,49 +1074,61 @@ begin // This is the case where the old build is installed; the DefaulNotepadCheck() returns true // and the set_default task isn't selected - if not WizardIsTaskSelected('remove_default') then begin - RegWriteStringValue(HKLM, IFEO, 'Debugger', ExpandConstant('"{app}\Notepad3.exe" /z')); + if not WizardIsTaskSelected('remove_default') then + begin + RegWriteStringValue(HKLM, IFEO, 'Debugger', '"'+app+'\Notepad3.exe" /z'); RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 0); end; end; end; - if CurStep = ssPostInstall then begin + if CurStep = ssPostInstall then + begin if WizardIsTaskSelected('set_default') then begin - RegWriteStringValue(HKLM, IFEO, 'Debugger', ExpandConstant('"{app}\Notepad3.exe" /z')); + RegWriteStringValue(HKLM, IFEO, 'Debugger', '"'+app+'\Notepad3.exe" /z'); RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 0); end; - if WizardIsTaskSelected('remove_default') then begin + if WizardIsTaskSelected('remove_default') then + begin RegDeleteValue(HKLM, IFEO, 'Debugger'); RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 1); - end else begin - If RegValueExists (HKLM, IFEO, 'Debugger') then begin - RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 0); - end else begin + end + else + begin + If RegValueExists (HKLM, IFEO, 'Debugger') then + RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 0) + else RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 1); - end; end; - if WizardIsTaskSelected('set_openwith') then begin - RegWriteStringValue(HKCR, '*\shell\Open with Notepad3', 'Icon', ExpandConstant('{app}\Notepad3.exe,0')); - RegWriteStringValue(HKCR, '*\shell\Open with Notepad3\command', '', ExpandConstant('"{app}\Notepad3.exe" "%1"')); - end; - if WizardIsTaskSelected('remove_openwith') then begin + if WizardIsTaskSelected('set_openwith') then + begin RegDeleteKeyIncludingSubkeys(HKCR, '*\shell\Open with Notepad3'); + RegDeleteKeyIncludingSubkeys(HKCR, '*\shell\' + reg_Open_with_NP3); + RegWriteStringValue(HKCR, '*\shell\' + reg_Open_with_NP3, 'Icon', app+'\Notepad3.exe,0'); + RegWriteStringValue(HKCR, '*\shell\' + reg_Open_with_NP3 + '\command', '', '"'+app+'\Notepad3.exe" "%1"'); end; + if WizardIsTaskSelected('remove_openwith') then + RegDeleteKeyIncludingSubkeys(HKCR, '*\shell\' + reg_Open_with_NP3); // Always add Notepad3's AppUserModelID and the rest registry values AddReg(); end; end; +Var + SettingsCleanUp: Boolean; + procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); begin // When uninstalling, ask the user to delete Notepad3's settings and themes - if CurUninstallStep = usUninstall then begin - if SettingsExistCheck() then begin - if SuppressibleMsgBox(CustomMessage('msg_DeleteSettings'), mbConfirmation, MB_YESNO or MB_DEFBUTTON2, IDNO) = IDYES then - CleanUpSettings(); - end; - if DefaulNotepadCheck() then begin + if CurUninstallStep = usUninstall then + if SettingsExistCheck() then + SettingsCleanUp := SuppressibleMsgBox(CustomMessage('msg_DeleteSettings'), mbConfirmation, MB_YESNO or MB_DEFBUTTON2, IDNO) = IDYES; + if CurUninstallStep = usPostUninstall then + begin + If SettingsCleanUp then + CleanUpSettings(); + if DefaulNotepadCheck() then + begin RegDeleteValue(HKLM, IFEO, 'Debugger'); RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 1); end; @@ -1049,7 +1138,15 @@ end; procedure InitializeWizard(); begin - WizardForm.SelectTasksLabel.Hide; - WizardForm.TasksList.Top := 0; - WizardForm.TasksList.Height := PageFromID(wpSelectTasks).SurfaceHeight; + With WizardForm do + begin + SelectTasksLabel.Hide; + With TasksList do + begin + Top := 0; + Height := PageFromID(wpSelectTasks).SurfaceHeight; + end; + end; end; + +// #expr SaveToFile( AddBackSlash(SourcePath) + SetupSetting("OutputBaseFilename") + ".iss") diff --git a/Build/notepad3_x86_setup.iss b/Build/notepad3_x86_setup.iss index 4c11cedf7..52a602726 100644 --- a/Build/notepad3_x86_setup.iss +++ b/Build/notepad3_x86_setup.iss @@ -6,38 +6,55 @@ ; Inno Setup: https://www.jrsoftware.org/isdl.php ; Preprocessor related stuff -#if VER < EncodeVer(6,0,5) +// if you compile a "beta, rc or rc2" version, then comment/un-comment the appropriate setting: +;#define VRSN=" beta" +;#define VRSN=" rc" +;#define VRSN=" rc2" +// but, if not a "beta, rc or rc2" version, then comment above settings and un-comment below setting :) +#define VRSN + +#define sse_required +#define sse2_required + +// 6.0.5 in hex: 0x06000500 +#if VER < 0x06000500 #error Update your Inno Setup version (6.0.5 or newer) #endif -#define bindir "..\Bin" +#define bindir "..\Bin\" +#define RLSdir "Release_x86_v143" -#ifnexist bindir + "\Release_x86_v143\Notepad3.exe" +#ifnexist bindir + RLSdir + "\Notepad3.exe" #error Compile Notepad3 x86 first #endif -#ifnexist bindir + "\Release_x86_v143\minipath.exe" +#ifnexist bindir + RLSdir + "\minipath.exe" #error Compile MiniPath x86 first #endif -#ifnexist bindir + "\Release_x86_v143\grepWinNP3.exe" +#ifnexist bindir + RLSdir + "\grepWinNP3.exe" #error Compile grepWinNP3 x86 first #endif -#ifnexist bindir + "\Release_x86_v143\np3encrypt.exe" +#ifnexist bindir + RLSdir + "\np3encrypt.exe" #error Compile np3encrypt x86 first #endif #define app_name "Notepad3" #define app_publisher "Rizonesoft" -#define app_version GetVersionNumbersString(bindir + "\Release_x86_v143\Notepad3.exe") -#define app_copyright "Copyright © 2008-2023 Rizonesoft" +// 6.2.0 in hex: 0x06020000 +#if VER < 0x06020000 + #define app_version GetFileVersion(bindir + RLSdir + "\Notepad3.exe") +#Else + #define app_version GetVersionNumbersString(bindir + RLSdir + "\Notepad3.exe") +#EndIf +#define app_copyright "Copyright © 2008-" + GetDateTimeString("yyyy", "", "") + " Rizonesoft" #define quick_launch "{userappdata}\Microsoft\Internet Explorer\Quick Launch" [Setup] AppId={#app_name} -AppName={#app_name} (x86) -AppVersion={#app_version} +AppName={#app_name} (x86){#VRSN} +AppVersion={#app_version}{#VRSN} AppVerName={#app_name} {#app_version} AppPublisher={#app_publisher} AppPublisherURL=https://rizonesoft.com @@ -47,11 +64,11 @@ AppContact=https://rizonesoft.com AppCopyright={#app_copyright} VersionInfoVersion={#app_version} UninstallDisplayIcon={app}\Notepad3.exe -UninstallDisplayName={#app_name} (x86) {#app_version} +UninstallDisplayName={#app_name} (x86) {#app_version}{#VRSN} DefaultDirName={commonpf}\Notepad3 LicenseFile="..\License.txt" OutputDir=.\Packages -OutputBaseFilename={#app_name}_{#app_version}_x86_Setup +OutputBaseFilename={#app_name}_{#app_version}{#StringChange(VRSN, " ", "_")}_x86_Setup WizardStyle=modern WizardSmallImageFile=.\Resources\WizardSmallImageFile.bmp Compression=lzma2/max @@ -65,39 +82,40 @@ DisableReadyPage=yes DisableWelcomePage=yes AllowCancelDuringInstall=yes UsedUserAreasWarning=no -MinVersion=0,6.1sp1 +MinVersion=0,6.1.7601 ArchitecturesAllowed=x86 x64 arm64 ArchitecturesInstallIn64BitMode= CloseApplications=true -SetupMutex='{#app_name}' + '_setup_mutex' +SetupMutex={#app_name}_setup_mutex,Global\{#app_name}_setup_mutex +SetupIconFile=.\Resources\Notepad3.ico [Languages] Name: "enu"; MessagesFile: "compiler:Default.isl" -Name: "afk"; MessagesFile: "compiler:Notepad3\Afrikaans.isl" -Name: "bel"; MessagesFile: "compiler:Notepad3\Belarusian.isl" -Name: "deu"; MessagesFile: "compiler:Notepad3\German.isl" -Name: "ell"; MessagesFile: "compiler:Notepad3\Greek.isl" -Name: "eng"; MessagesFile: "compiler:Notepad3\EnglishBritish.isl" -Name: "esn"; MessagesFile: "compiler:Notepad3\Spanish.isl" -Name: "esm"; MessagesFile: "compiler:Notepad3\SpanishMexican.isl" -Name: "fra"; MessagesFile: "compiler:Notepad3\French.isl" -Name: "hin"; MessagesFile: "compiler:Notepad3\Hindi.isl" -Name: "hun"; MessagesFile: "compiler:Notepad3\Hungarian.isl" -Name: "ind"; MessagesFile: "compiler:Notepad3\Indonesian.isl" -Name: "ita"; MessagesFile: "compiler:Notepad3\Italian.isl" -Name: "jpn"; MessagesFile: "compiler:Notepad3\Japanese.isl" -Name: "kor"; MessagesFile: "compiler:Notepad3\Korean.isl" -Name: "nld"; MessagesFile: "compiler:Notepad3\Dutch.isl" -Name: "plk"; MessagesFile: "compiler:Notepad3\Polish.isl" -Name: "ptb"; MessagesFile: "compiler:Notepad3\BrazilianPortuguese.isl" -Name: "ptg"; MessagesFile: "compiler:Notepad3\Portuguese.isl" -Name: "rus"; MessagesFile: "compiler:Notepad3\Russian.isl" -Name: "sky"; MessagesFile: "compiler:Notepad3\Slovak.isl" -Name: "sve"; MessagesFile: "compiler:Notepad3\Swedish.isl" -Name: "trk"; MessagesFile: "compiler:Notepad3\Turkish.isl" -Name: "vit"; MessagesFile: "compiler:Notepad3\Vietnamese.isl" -Name: "chs"; MessagesFile: "compiler:Notepad3\ChineseSimplified.isl" -Name: "cht"; MessagesFile: "compiler:Notepad3\ChineseTraditional.isl" +Name: "afk"; MessagesFile: "compiler:Languages-mod\Afrikaans.isl" +Name: "bel"; MessagesFile: "compiler:Languages-mod\Belarusian.isl" +Name: "deu"; MessagesFile: "compiler:Languages-mod\German.isl" +Name: "ell"; MessagesFile: "compiler:Languages-mod\Greek.isl" +Name: "eng"; MessagesFile: "compiler:Languages-mod\EnglishBritish.isl" +Name: "esn"; MessagesFile: "compiler:Languages-mod\Spanish.isl" +Name: "esm"; MessagesFile: "compiler:Languages-mod\SpanishMexican.isl" +Name: "fra"; MessagesFile: "compiler:Languages-mod\French.isl" +Name: "hin"; MessagesFile: "compiler:Languages-mod\Hindi.isl" +Name: "hun"; MessagesFile: "compiler:Languages-mod\Hungarian.isl" +Name: "ind"; MessagesFile: "compiler:Languages-mod\Indonesian.isl" +Name: "ita"; MessagesFile: "compiler:Languages-mod\Italian.isl" +Name: "jpn"; MessagesFile: "compiler:Languages-mod\Japanese.isl" +Name: "kor"; MessagesFile: "compiler:Languages-mod\Korean.isl" +Name: "nld"; MessagesFile: "compiler:Languages-mod\Dutch.isl" +Name: "plk"; MessagesFile: "compiler:Languages-mod\Polish.isl" +Name: "ptb"; MessagesFile: "compiler:Languages-mod\BrazilianPortuguese.isl" +Name: "ptg"; MessagesFile: "compiler:Languages-mod\Portuguese.isl" +Name: "rus"; MessagesFile: "compiler:Languages-mod\Russian.isl" +Name: "sky"; MessagesFile: "compiler:Languages-mod\Slovak.isl" +Name: "sve"; MessagesFile: "compiler:Languages-mod\Swedish.isl" +Name: "trk"; MessagesFile: "compiler:Languages-mod\Turkish.isl" +Name: "vit"; MessagesFile: "compiler:Languages-mod\Vietnamese.isl" +Name: "chs"; MessagesFile: "compiler:Languages-mod\ChineseSimplified.isl" +Name: "cht"; MessagesFile: "compiler:Languages-mod\ChineseTraditional.isl" [Messages] enu.BeveledLabel=English (US) @@ -129,9 +147,10 @@ cht.BeveledLabel=Chinese (TW) [CustomMessages] enu.msg_DeleteSettings=Do you also want to delete {#app_name}'s settings and themes?%n%nIf you plan on installing {#app_name} again then you do not have to delete them. -#if defined(sse_required) +#ifdef sse_required enu.msg_simd_sse=This build of {#app_name} requires a CPU with SSE extension support.%n%nYour CPU does not have those capabilities. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required enu.msg_simd_sse2=This build of {#app_name} requires a CPU with SSE2 extension support.%n%nYour CPU does not have those capabilities. #endif enu.tsk_AllUsers=For all users @@ -144,28 +163,32 @@ enu.tsk_StartMenuIcon=Create a Start Menu shortcut enu.tsk_LaunchWelcomePage=Important Release Information! enu.tsk_RemoveOpenWith=Remove "Open with {#app_name}" from the context menu enu.tsk_SetOpenWith=Add "Open with {#app_name}" to the context menu +enu.reg_Open_with_NP3=Open with {#app_name} afk.msg_DeleteSettings=Wil jy ook {#app_name} se instellings en temas uitvee?%n%nAs jy beplan om {#app_name} weer te installeer, hoef jy dit nie uit te vee nie. -#if defined(sse_required) +#ifdef sse_required afk.msg_simd_sse=Hierdie bou van {#app_name} vereis 'n SVE met SSE-uitbreidingsteun.%n%nJou SVE het nie daardie vermoëns nie. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required afk.msg_simd_sse2=Hierdie bou van {#app_name} vereis 'n SVE met SSE2-uitbreidingsteun.%n%nJou SVE het nie daardie vermoëns nie. #endif afk.tsk_AllUsers=Vir alle gebruikers afk.tsk_CurrentUser=Slegs vir die huidige gebruiker -afk.tsk_Other= +afk.tsk_Other=Ander take: afk.tsk_ResetSettings=Stel {#app_name} se instellings en temas terug afk.tsk_RemoveDefault=Herstel Windows Notepad afk.tsk_SetDefault=Vervang Windows Notepad met {#app_name} afk.tsk_StartMenuIcon=Skep 'n Start Menu-kortpad afk.tsk_LaunchWelcomePage=Belangrike vrystelling-inligting! -afk.tsk_RemoveOpenWith=Verwyder "Verwyder Maak oop met {#app_name}" uit die kontekskieslys -afk.tsk_SetOpenWith=Sit "Maak oop met {#app_name}" in die kontekskieslys +afk.tsk_RemoveOpenWith=Verwyder "Maak oop met {#app_name}" uit die kontekskieslys +afk.tsk_SetOpenWith=Voeg "Maak oop met {#app_name}" in die kontekskieslys +afk.reg_Open_with_NP3=Maak oop met {#app_name} bel.msg_DeleteSettings=Вы хочаце таксама выдаліць налады і тэмы {#app_name}?%n%nКалі вы плануеце ўсталяваць {#app_name} зноў, то вам не трэба іх выдаляць. -#if defined(sse_required) +#ifdef sse_required bel.msg_simd_sse=Гэтая зборка {#app_name} патрабуе працэсар з падтрымкай набору каманд SSE.%n%nВаш працэсар не мае такой падтрымкі. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required bel.msg_simd_sse2=Гэтая зборка {#app_name} патрабуе працэсар з падтрымкай набору каманд SSE2.%n%nВаш працэсар не мае такой падтрымкі. #endif bel.tsk_AllUsers=Для ўсіх карыстальнікаў @@ -178,11 +201,13 @@ bel.tsk_StartMenuIcon=Стварыць ярлык у меню Пуск bel.tsk_LaunchWelcomePage=Важная інфармацыя пра выпуск! bel.tsk_RemoveOpenWith=Выдаліць "Адкрыць з дапамогай {#app_name}" з кантэкставага меню bel.tsk_SetOpenWith=Дадаць "Адкрыць з дапамогай {#app_name}" у кантэкставае меню +bel.reg_Open_with_NP3=Адкрыць з дапамогай {#app_name} deu.msg_DeleteSettings=Wollen sie die Einstellungen und Themen von {#app_name} löschen?%n%nWenn sie planen {#app_name} erneut zu installieren, dann müssen diese Einstellungen nicht gelöscht werden. -#if defined(sse_required) +#ifdef sse_required deu.msg_simd_sse=Diese Version von {#app_name} benötigt eine CPU mit welche die SSE Erweiterung unterstützt.%n%nIhre CPU hat diese Fähigkeiten nicht. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required deu.msg_simd_sse2=Diese Version von {#app_name} benötigt eine CPU mit welche die SSE2 Erweiterung unterstützt.%n%nIhre CPU hat diese Fähigkeiten nicht. #endif deu.tsk_AllUsers=Für alle Benutzer @@ -195,11 +220,13 @@ deu.tsk_StartMenuIcon=Erstelle einen Start-Menü Eintrag deu.tsk_LaunchWelcomePage=Wichtige Release Information! deu.tsk_RemoveOpenWith=Entferne "Öffnen mit {#app_name}" aus dem Kontextmenü deu.tsk_SetOpenWith=Füge "Öffnen mit {#app_name}" zum Kontextmenü hinzu. +deu.reg_Open_with_NP3=Öffnen mit {#app_name} ell.msg_DeleteSettings=Θέλετε επίσης να διαγράψετε τις ρυθμίσεις και τα θέματα του {#app_name};%n%nΕάν σκοπεύετε να εγκαταστήσετε ξανά το {#app_name}, τότε δεν χρειάζεται να τα διαγράψετε. -#if defined(sse_required) +#ifdef sse_required ell.msg_simd_sse=Αυτή η έκδοση του {#app_name} απαιτεί CPU με υποστήριξη επέκτασης SSE.%n%nΗ CPU σας δεν έχει αυτές τις δυνατότητες. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required ell.msg_simd_sse2=Αυτή η έκδοση του {#app_name} απαιτεί CPU με υποστήριξη επέκτασης SSE2.%n%nΗ CPU σας δεν έχει αυτές τις δυνατότητες. #endif ell.tsk_AllUsers=Για όλους τους χρήστες @@ -212,11 +239,13 @@ ell.tsk_StartMenuIcon=Δημιουργία συντόμευσης στο μεν ell.tsk_LaunchWelcomePage=Σημαντικές πληροφορίες έκδοσης! ell.tsk_RemoveOpenWith=Κατάργηση της επιλογής «Άνοιγμα με {#app_name}» από το μενού περιβάλλοντος ell.tsk_SetOpenWith=Προσθήκη της επιλογής «Άνοιγμα με {#app_name}» στο μενού περιβάλλοντος +ell.reg_Open_with_NP3=Άνοιγμα με {#app_name} eng.msg_DeleteSettings=Do you also want to delete {#app_name}'s settings and themes?%n%nIf you plan on installing {#app_name} again then you do not have to delete them. -#if defined(sse_required) +#ifdef sse_required eng.msg_simd_sse=This build of {#app_name} requires a CPU with SSE extension support.%n%nYour CPU does not have those capabilities. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required eng.msg_simd_sse2=This build of {#app_name} requires a CPU with SSE2 extension support.%n%nYour CPU does not have those capabilities. #endif eng.tsk_AllUsers=For all users @@ -229,11 +258,13 @@ eng.tsk_StartMenuIcon=Create a Start Menu shortcut eng.tsk_LaunchWelcomePage=Important Release Information! eng.tsk_RemoveOpenWith=Remove "Open with {#app_name}" from the context menu eng.tsk_SetOpenWith=Add "Open with {#app_name}" to the context menu +eng.reg_Open_with_NP3=Open with {#app_name} esn.msg_DeleteSettings=¿También quieres eliminar la configuración y los temas de {#app_name}?%n%nSi planeas instalar {#app_name} nuevamente, no tienes que eliminarlos. -#if defined(sse_required) +#ifdef sse_required esn.msg_simd_sse=Esta compilación de {#app_name} requiere una CPU compatible con la extensión SSE.%n%nTu CPU no tiene esas capacidades. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required esn.msg_simd_sse2=Esta compilación de {#app_name} requiere una CPU compatible con la extensión SSE2.%n%nTu CPU no tiene esas capacidades. #endif esn.tsk_AllUsers=Para todos los usuarios @@ -246,11 +277,13 @@ esn.tsk_StartMenuIcon=Crear un acceso directo al menú de inicio esn.tsk_LaunchWelcomePage=¡Información importante de lanzamiento! esn.tsk_RemoveOpenWith=Eliminar "Abrir con {#app_name}" del menú contextual esn.tsk_SetOpenWith=Añade "Abrir con {#app_name}" al menú contextual +esn.reg_Open_with_NP3=Abrir con {#app_name} esm.msg_DeleteSettings=¿También quieres eliminar la configuración y los temas de {#app_name}?%n%nSi planeas instalar {#app_name} nuevamente, no tienes que eliminarlos. -#if defined(sse_required) +#ifdef sse_required esm.msg_simd_sse=Esta compilación de {#app_name} requiere una CPU compatible con la extensión SSE.%n%nTu CPU no tiene esas capacidades. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required esm.msg_simd_sse2=Esta compilación de {#app_name} requiere una CPU compatible con la extensión SSE2.%n%nTu CPU no tiene esas capacidades. #endif esm.tsk_AllUsers=Para todos los usuarios @@ -263,11 +296,13 @@ esm.tsk_StartMenuIcon=Crear un acceso directo al menú de inicio esm.tsk_LaunchWelcomePage=¡Información importante de lanzamiento! esm.tsk_RemoveOpenWith=Eliminar "Abrir con {#app_name}" del menú contextual esm.tsk_SetOpenWith=Añade "Abrir con {#app_name}" al menú contextual +esm.reg_Open_with_NP3=Abrir con {#app_name} fra.msg_DeleteSettings=Voulez-vous également supprimer tous les réglages et thèmes de {#app_name} ?%n%nSi vous comptez réinstaller {#app_name}, vous pouvez les garder. -#if defined(sse_required) +#ifdef sse_required fra.msg_simd_sse=Cette édition de {#app_name} nécessite un CPU supportant l'extension SSE.%n%nVotre CPU ne dispose pas de ces capacités. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required fra.msg_simd_sse2=Cette édition de {#app_name} nécessite un CPU supportant l'extension SSE2.%n%nVotre CPU ne dispose pas de ces capacités. #endif fra.tsk_AllUsers=Pour tous les utilisateurs @@ -280,11 +315,13 @@ fra.tsk_StartMenuIcon=Créer un raccourci dans le menu de démarrage fra.tsk_LaunchWelcomePage=Information importante de publication ! fra.tsk_RemoveOpenWith=Retirer "Ouvrir avec {#app_name}" du menu contextuel fra.tsk_SetOpenWith=Ajouter "Ouvrir avec {#app_name}" au menu contextuel +fra.reg_Open_with_NP3=Ouvrir avec {#app_name} hin.msg_DeleteSettings=Do you also want to delete {#app_name}'s settings and themes?%n%nIf you plan on installing {#app_name} again then you do not have to delete them. -#if defined(sse_required) +#ifdef sse_required hin.msg_simd_sse=This build of {#app_name} requires a CPU with SSE extension support.%n%nYour CPU does not have those capabilities. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required hin.msg_simd_sse2=This build of {#app_name} requires a CPU with SSE2 extension support.%n%nYour CPU does not have those capabilities. #endif hin.tsk_AllUsers=For all users @@ -297,11 +334,13 @@ hin.tsk_StartMenuIcon=Create a Start Menu shortcut hin.tsk_LaunchWelcomePage=Important Release Information! hin.tsk_RemoveOpenWith=Remove "Open with {#app_name}" from the context menu hin.tsk_SetOpenWith=Add "Open with {#app_name}" to the context menu +hin.reg_Open_with_NP3={#app_name} से खोलें hun.msg_DeleteSettings=Törölni szeretné {#app_name} beállításait is?%n%nHa újra szeretné telepíteni {#app_name}-t, akkor nem szükséges törölni. -#if defined(sse_required) +#ifdef sse_required hun.msg_simd_sse=Ahhoz, hogy {#app_name} ezen változata jól fusson, SSE kiterjesztés támogatással bíró CPU szükséges.%n%nA jelenlegi CPU nem megfelelő. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required hun.msg_simd_sse2=Ahhoz, hogy {#app_name} ezen változata jól fusson, SSE2 kiterjesztés támogatással bíró CPU szükséges.%n%nA jelenlegi CPU nem megfelelő. #endif hun.tsk_AllUsers=Minden felhasználónak @@ -314,11 +353,13 @@ hun.tsk_StartMenuIcon=Start menü ikon létrehozása hun.tsk_LaunchWelcomePage=Fontos kiadási információk! hun.tsk_RemoveOpenWith="Megnyitás ezzel: {#app_name}" bejegyzés eltávolítása a helyi menüből hun.tsk_SetOpenWith="Megnyitás ezzel: {#app_name}" bejegyzés hozzáadása a helyi menühöz +hun.reg_Open_with_NP3=Megnyitás ezzel: {#app_name} ind.msg_DeleteSettings=Apakah Anda juga ingin menghapus pengaturan dan tema {#app_name}?%n%nJika Anda berencana untuk memasang kembali {#app_name}, Anda tidak perlu menghapusnya. -#if defined(sse_required) +#ifdef sse_required ind.msg_simd_sse=Versi {#app_name} ini memerlukan CPU dengan dukungan ekstensi SSE.%n%nTampaknya CPU Anda tidak memiliki kemampuan tersebut. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required ind.msg_simd_sse2=Versi {#app_name} ini memerlukan CPU dengan dukungan ekstensi SSE2.%n%nTampaknya CPU Anda tidak memiliki kemampuan tersebut. #endif ind.tsk_AllUsers=Untuk semua pengguna @@ -329,13 +370,15 @@ ind.tsk_RemoveDefault=Pulihkan Windows Notepad ind.tsk_SetDefault=Gantikan Windows Notepad dengan {#app_name} ind.tsk_StartMenuIcon=Buat pintasan pada Start Menu ind.tsk_LaunchWelcomePage=Informasi Rilis yang Penting! -ind.tsk_RemoveOpenWith=Hapus "Open with {#app_name}" dari menu konteks -ind.tsk_SetOpenWith=Tambahkan "Open with {#app_name}" ke menu konteks +ind.tsk_RemoveOpenWith=Hapus "Buka dengan {#app_name}" dari menu konteks +ind.tsk_SetOpenWith=Tambahkan "Buka dengan {#app_name}" ke menu konteks +ind.reg_Open_with_NP3=Buka dengan {#app_name} ita.msg_DeleteSettings=Volete eliminare anche le impostazioni e i temi di {#app_name}? %n%nSe intendete installare nuovamente {#app_name}, non è necessario eliminarli. -#if defined(sse_required) +#ifdef sse_required ita.msg_simd_sse=Questa versione di {#app_name} richiede una CPU con supporto per le estensioni SSE.%n%nLa vostra CPU non ha queste capacità. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required ita.msg_simd_sse2=Questa versione di {#app_name} richiede una CPU con supporto per le estensioni SSE2.%n%nLa vostra CPU non ha queste capacità. #endif ita.tsk_AllUsers=Per tutti gli utenti @@ -348,11 +391,13 @@ ita.tsk_StartMenuIcon=Creare un collegamento al Menu Start ita.tsk_LaunchWelcomePage=Informazioni importanti sul rilascio! ita.tsk_RemoveOpenWith=Rimuovere l'opzione "Apri con {#app_name}" dal menu contestuale. ita.tsk_SetOpenWith=Aggiungete "Apri con {#app_name}" al menu contestuale +ita.reg_Open_with_NP3=Apri con {#app_name} jpn.msg_DeleteSettings={#app_name} の設定とテーマも削除しますか?%n%n{#app_name} を再度インストールする予定なら削除する必要はありません。 -#if defined(sse_required) +#ifdef sse_required jpn.msg_simd_sse={#app_name} のこのビルドには、SSE 拡張命令に対応した CPU が必要です。%n%nこの CPU は対応していません。 -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required jpn.msg_simd_sse2={#app_name} のこのビルドには、SSE2 拡張命令に対応した CPU が必要です。%n%nこの CPU は対応していません。 #endif jpn.tsk_AllUsers=すべてのユーザー @@ -365,11 +410,13 @@ jpn.tsk_StartMenuIcon=スタートメニューにショートカットを作成 jpn.tsk_LaunchWelcomePage=リリース時の重要な情報! jpn.tsk_RemoveOpenWith=右クリックメニューから「{#app_name} で開く」を削除 jpn.tsk_SetOpenWith=右クリックメニューに「{#app_name} で開く」を追加 +jpn.reg_Open_with_NP3={#app_name} で開く kor.msg_DeleteSettings={#app_name}의 설정 및 테마도 삭제하시겠습니까?%n%n{#app_name}을 다시 설치할 계획이라면 삭제할 필요가 없습니다. -#if defined(sse_required) +#ifdef sse_required kor.msg_simd_sse=이 {#app_name} 빌드에는 SSE 확장을 지원하는 CPU가 필요합니다.%n%nCPU에 이러한 기능이 없습니다. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required kor.msg_simd_sse2=이 {#app_name} 빌드에는 SSE2 확장을 지원하는 CPU가 필요합니다.%n%nCPU에 이러한 기능이 없습니다. #endif kor.tsk_AllUsers=모든 사용자용 @@ -382,11 +429,13 @@ kor.tsk_StartMenuIcon=시작 메뉴에 바로가기 만들기 kor.tsk_LaunchWelcomePage=중요한 릴리스 정보! kor.tsk_RemoveOpenWith=상황에 맞는 메뉴에서 "{#app_name}으로 열기" 제거 kor.tsk_SetOpenWith=상황에 맞는 메뉴 메뉴에 "{#app_name}으로 열기" 추가 +kor.reg_Open_with_NP3={#app_name}으로 열기 nld.msg_DeleteSettings=Wilt u ook de instellingen en thema's van {#app_name} verwijderen?%n%nAls u van plan bent {#app_name} opnieuw te installeren, hoeft u deze niet te verwijderen. -#if defined(sse_required) +#ifdef sse_required nld.msg_simd_sse=Deze versie van {#app_name} vereist een CPU met ondersteuning voor SSE-extensies.%n%nUw CPU heeft die mogelijkheden niet. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required nld.msg_simd_sse2=Deze versie van {#app_name} vereist een CPU met ondersteuning voor SSE2-extensies.%n%nUw CPU heeft die mogelijkheden niet. #endif nld.tsk_AllUsers=Voor alle gebruikers @@ -399,11 +448,13 @@ nld.tsk_StartMenuIcon=Maak een snelkoppeling naar het startmenu nld.tsk_LaunchWelcomePage=Belangrijke informatie bij deze uitgave! nld.tsk_RemoveOpenWith="Openen met {#app_name}" verwijderen van het contextmenu nld.tsk_SetOpenWith="Openen met {#app_name}" toevoegen van het contextmenu +nld.reg_Open_with_NP3=Openen met {#app_name} plk.msg_DeleteSettings=Czy chcesz również usunąć ustawienia i motywy {#app_name}? Jeśli zamierzasz zainstalować {#app_name} ponownie, to nie musisz ich usuwać. -#if defined(sse_required) +#ifdef sse_required plk.msg_simd_sse=Ta kompilacja {#app_name} wymaga procesora z rozszerzeniem wsparcia SSE. Twój procesor nie posiada takiej zdolności. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required plk.msg_simd_sse2=Ta kompilacja {#app_name} wymaga procesora z rozszerzeniem wsparcia SSE2. Twój procesor nie posiada takiej zdolności. #endif plk.tsk_AllUsers=Dla wszystkich użytkowników @@ -416,11 +467,13 @@ plk.tsk_StartMenuIcon=Utwórz skrót w Menu Start plk.tsk_LaunchWelcomePage=Ważne informacje o wydaniu! plk.tsk_RemoveOpenWith=Usuń "Otwórz z {#app_name}" z menu kontekstowego plk.tsk_SetOpenWith=Dodaj "Otwórz z {#app_name}" do menu kontekstowego +plk.reg_Open_with_NP3=Otwórz z {#app_name} ptb.msg_DeleteSettings=Você também deseja excluir as configurações e temas do {#app_name}?%n%nSe você planeja instalar o {#app_name} novamente, então você não precisa excluí-los. -#if defined(sse_required) +#ifdef sse_required ptb.msg_simd_sse=Esta versão do {#app_name} requer uma CPU com suporte à extensão SSE.%n%nSua CPU não possui este recurso. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required ptb.msg_simd_sse2=Esta versão do {#app_name} requer uma CPU com suporte à extensão SSE2.%n%nSua CPU não possui este recurso. #endif ptb.tsk_AllUsers=Para todos os usuários @@ -432,12 +485,14 @@ ptb.tsk_SetDefault=Substituir Bloco de notas do Windows pelo {#app_name} ptb.tsk_StartMenuIcon=Criar atalho no Menu Iniciar ptb.tsk_LaunchWelcomePage=Informações importantes sobre esta versão! ptb.tsk_RemoveOpenWith=Remover "Abrir com o {#app_name}" do menu de contexto -ptb.tsk_SetOpenWith=Adicionar "Abrir com {#app_name} ao menu de contexto +ptb.tsk_SetOpenWith=Adicionar "Abrir com {#app_name}" ao menu de contexto +ptb.reg_Open_with_NP3=Abrir com {#app_name} ptg.msg_DeleteSettings=Também pretende eliminar as definições e temas do {#app_name}?%n%nSe planeia instalar novamente o {#app_name} não necessita eliminá-los. -#if defined(sse_required) +#ifdef sse_required ptg.msg_simd_sse=Esta versão do {#app_name} requer um CPU com suporte de extensão SSE.%n%nO seu CPU não possui essas capacidades. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required ptg.msg_simd_sse2=Esta versão do {#app_name} requer um CPU com suporte de extensão SSE2.%n%nO seu CPU não possui essas capacidades. #endif ptg.tsk_AllUsers=Para todos os utilizadores @@ -450,11 +505,13 @@ ptg.tsk_StartMenuIcon=Criar um atalho no Menu Iniciar ptg.tsk_LaunchWelcomePage=Informações Importantes do Lançamento! ptg.tsk_RemoveOpenWith=Remover "Abrir com o {#app_name}" do menu de contexto ptg.tsk_SetOpenWith=Adicionar "Abrir com o {#app_name}" ao menu de contexto +ptg.reg_Open_with_NP3=Abrir com o {#app_name} rus.msg_DeleteSettings=Вы хотите также удалить настройки и темы {#app_name}?%n%nЕсли вы планируете установить {#app_name} снова, то вам не нужно их удалять. -#if defined(sse_required) +#ifdef sse_required rus.msg_simd_sse=Эта сборка {#app_name} требует процессор с поддержкой набора команд SSE.%n%nВаш процессор не имеет такой поддержки. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required rus.msg_simd_sse2=Эта сборка {#app_name} требует процессор с поддержкой набора команд SSE2.%n%nВаш процессор не имеет такой поддержки. #endif rus.tsk_AllUsers=Для всех пользователей @@ -467,11 +524,13 @@ rus.tsk_StartMenuIcon=Создать значок в меню Пуск rus.tsk_LaunchWelcomePage=Важная информация о выпуске! rus.tsk_RemoveOpenWith=Удалить "Открыть с помощью {#app_name}" из контекстного меню rus.tsk_SetOpenWith=Добавить "Открыть с помощью {#app_name}" в контекстное меню +rus.reg_Open_with_NP3=Открыть с помощью {#app_name} sky.msg_DeleteSettings=Chcete odstrániť aj nastavenia a témy {#app_name}?%n%nAk plánujete opätovnú inštaláciu {#app_name}, nemusíte ich odstraňovať. -#if defined(sse_required) +#ifdef sse_required sky.msg_simd_sse=Táto zostava {#app_name} vyžaduje procesor s podporou rozšírenia SSE.%n%nVáš procesor tieto možnosti nemá. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required sky.msg_simd_sse2=Táto zostava {#app_name} vyžaduje procesor s podporou rozšírenia SSE2.%n%nVáš procesor tieto možnosti nemá. #endif sky.tsk_AllUsers=Pre všetkých užívateľov @@ -482,13 +541,15 @@ sky.tsk_RemoveDefault=Obnoviť Poznámkový blok Windows sky.tsk_SetDefault=Nahradiť Poznámkový blok Windows s {#app_name} sky.tsk_StartMenuIcon=Vytvoriť odkaz v ponuke Štart sky.tsk_LaunchWelcomePage=Dôležité informácie o vydaní! -sky.tsk_RemoveOpenWith=Odstrániť z kontextového menu položku "Otvoriť v {#app_name}" +sky.tsk_RemoveOpenWith=Odstrániť z kontextového menu položku "Otvoriť v {#app_name}" sky.tsk_SetOpenWith=Pridať do kontextového menu položku "Otvoriť v {#app_name}" +sky.reg_Open_with_NP3=Otvoriť v {#app_name} sve.msg_DeleteSettings=Vill du även ta bort {#app_name} inställningar och teman?%n%nOm du tänker installera {#app_name} igen behöver du inte ta bort inställningarna. -#if defined(sse_required) +#ifdef sse_required sve.msg_simd_sse=Den här versionen av {#app_name} kräver processor med SSE stöd.%n%n din processor har inte denna funktionalitet. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required sve.msg_simd_sse2=Den här versionen av {#app_name} kräver processor med SSE2 stöd.%n%n din processor har inte denna funktionalitet. #endif sve.tsk_AllUsers=För alla användare @@ -501,11 +562,13 @@ sve.tsk_StartMenuIcon=Skapa en genväg till Startmeny sve.tsk_LaunchWelcomePage=Viktig information för denna version! sve.tsk_RemoveOpenWith=Ta bort "Öppna med {#app_name}" från snabbmenyn sve.tsk_SetOpenWith=Lägg till "Öppna med {#app_name}" från snabbmenyn +sve.reg_Open_with_NP3=Öppna med {#app_name} trk.msg_DeleteSettings={#app_name} ayarlarının ve temalarının da silinmesini ister misiniz?%n%n{#app_name} uygulamasını yeniden kurmayı düşünüyorsanız bu verileri silmeniz gerekmez. -#if defined(sse_required) +#ifdef sse_required trk.msg_simd_sse=Bu {#app_name} sürümü için SSE eklentileri desteği olan bir işlemci gereklidir.%n%nİşlemcinizde bu özellik bulunmuyor. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required trk.msg_simd_sse2=Bu {#app_name} sürümü için SSE2 eklentileri desteği olan bir işlemci gereklidir.%n%nİşlemcinizde bu özellik bulunmuyor. #endif trk.tsk_AllUsers=Tüm kullanıcılar için @@ -518,11 +581,13 @@ trk.tsk_StartMenuIcon=Başlat menüsü kısayolu oluşturulsun trk.tsk_LaunchWelcomePage=Önemli sürüm bilgileri trk.tsk_RemoveOpenWith=Sağ tık menüsünden "{#app_name} ile aç" seçeneği kaldırılsın trk.tsk_SetOpenWith=Sağ tık menüsüne "{#app_name} ile aç" seçeneği eklensin +trk.reg_Open_with_NP3={#app_name} ile aç vit.msg_DeleteSettings=Do you also want to delete {#app_name}'s settings and themes?%n%nIf you plan on installing {#app_name} again then you do not have to delete them. -#if defined(sse_required) +#ifdef sse_required vit.msg_simd_sse=This build of {#app_name} requires a CPU with SSE extension support.%n%nYour CPU does not have those capabilities. -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required vit.msg_simd_sse2=This build of {#app_name} requires a CPU with SSE2 extension support.%n%nYour CPU does not have those capabilities. #endif vit.tsk_AllUsers=For all users @@ -535,11 +600,13 @@ vit.tsk_StartMenuIcon=Create a Start Menu shortcut vit.tsk_LaunchWelcomePage=Important Release Information! vit.tsk_RemoveOpenWith=Remove "Open with {#app_name}" from the context menu vit.tsk_SetOpenWith=Add "Open with {#app_name}" to the context menu +vit.reg_Open_with_NP3=Mở bằng {#app_name} chs.msg_DeleteSettings=是否希望删除 {#app_name} 的设置和主题?%n%n如果您稍后将要重新安装 {#app_name},您不需要删除以前的配置。 -#if defined(sse_required) +#ifdef sse_required chs.msg_simd_sse=这个版本的 {#app_name} 需要支持 SSE 扩展指令集的 CPU。%n%n您的 CPU 缺少该支持。 -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required chs.msg_simd_sse2=这个版本的 {#app_name} 需要支持 SSE2 扩展指令集的 CPU。%n%n您的 CPU 缺少该支持。 #endif chs.tsk_AllUsers=为所有用户 @@ -550,13 +617,15 @@ chs.tsk_RemoveDefault=恢复 Windows 记事本 chs.tsk_SetDefault=将 Windows 记事本替换为 {#app_name} chs.tsk_StartMenuIcon=在开始菜单中创建快捷方式 chs.tsk_LaunchWelcomePage=重要更新信息! -chs.tsk_RemoveOpenWith=从上下文菜单中删除“用 {#app_name} 打开” -chs.tsk_SetOpenWith=在上下文菜单中添加“用 {#app_name} 打开” +chs.tsk_RemoveOpenWith=从上下文菜单中删除"用 {#app_name} 打开" +chs.tsk_SetOpenWith=在上下文菜单中添加"用 {#app_name} 打开" +chs.reg_Open_with_NP3=用 {#app_name} 打开 cht.msg_DeleteSettings=是否希望刪除 {#app_name} 的設定和主題?%n%n如果您稍後將要重新安裝 {#app_name},您不需要刪除以前的設定。 -#if defined(sse_required) +#ifdef sse_required cht.msg_simd_sse=這個版本的 {#app_name} 需要支援 SSE 擴充指令集的 CPU。%n%n您的 CPU 缺少該支援。 -#elif defined(sse2_required) +#EndIf +#ifdef sse2_required cht.msg_simd_sse2=這個版本的 {#app_name} 需要支援 SSE2 擴充指令集的 CPU。%n%n您的 CPU 缺少該支援。 #endif cht.tsk_AllUsers=為所有使用者 @@ -567,8 +636,9 @@ cht.tsk_RemoveDefault=恢復 Windows 記事本 cht.tsk_SetDefault=將 Windows 記事本替換為 {#app_name} cht.tsk_StartMenuIcon=於開始功能表中建立快捷方式 cht.tsk_LaunchWelcomePage=重要更新資訊! -cht.tsk_RemoveOpenWith=從上下文選單中刪除“用 {#app_name} 開啟” -cht.tsk_SetOpenWith=在上下文選單中新增“用 {#app_name} 開啟” +cht.tsk_RemoveOpenWith=從上下文選單中刪除"用 {#app_name} 開啟" +cht.tsk_SetOpenWith=在上下文選單中新增"用 {#app_name} 開啟" +cht.reg_Open_with_NP3=用 {#app_name} 開啟 [Tasks] Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked @@ -582,11 +652,12 @@ Name: "remove_default"; Description: "{cm:tsk_RemoveDefault}"; GroupDescription: Name: "set_openwith"; Description: "{cm:tsk_SetOpenWith}"; GroupDescription: "{cm:tsk_Other}"; Check: not OpenWithCheck() Name: "remove_openwith"; Description: "{cm:tsk_RemoveOpenWith}"; GroupDescription: "{cm:tsk_Other}"; Flags: checkedonce unchecked; Check: OpenWithCheck() + [Files] -Source: "{#bindir}\Release_x86_v143\Notepad3.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\minipath.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\grepWinNP3.exe"; DestDir: "{app}"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\np3encrypt.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\Notepad3.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\minipath.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\grepWinNP3.exe"; DestDir: "{app}"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\np3encrypt.exe"; DestDir: "{app}"; Flags: ignoreversion Source: "..\License.txt"; DestDir: "{app}"; Flags: ignoreversion Source: "..\Readme.txt"; DestDir: "{app}"; Flags: ignoreversion Source: "..\grepWinNP3\grepWinLicense.txt"; DestDir: "{app}"; Flags: ignoreversion @@ -595,59 +666,59 @@ Source: "minipath.ini"; DestDir: "{userappdata}\Rizonesoft\Notepad3"; Flags: onl Source: "Themes\Dark.ini"; DestDir: "{userappdata}\Rizonesoft\Notepad3\Themes"; Flags: onlyifdoesntexist uninsneveruninstall Source: "Themes\Obsidian.ini"; DestDir: "{userappdata}\Rizonesoft\Notepad3\Themes"; Flags: onlyifdoesntexist uninsneveruninstall Source: "Themes\Sombra.ini"; DestDir: "{userappdata}\Rizonesoft\Notepad3\Themes"; Flags: onlyifdoesntexist uninsneveruninstall -Source: "{#bindir}\Release_x86_v143\lng\mplng.dll"; DestDir: "{app}\lng"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\np3lng.dll"; DestDir: "{app}\lng"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\gwLng\*.lang"; DestDir: "{app}\lng\gwLng"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\af-ZA\mplng.dll.mui"; DestDir: "{app}\lng\af-ZA"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\af-ZA\np3lng.dll.mui"; DestDir: "{app}\lng\af-ZA"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\be-BY\mplng.dll.mui"; DestDir: "{app}\lng\be-BY"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\be-BY\np3lng.dll.mui"; DestDir: "{app}\lng\be-BY"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\de-DE\mplng.dll.mui"; DestDir: "{app}\lng\de-DE"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\de-DE\np3lng.dll.mui"; DestDir: "{app}\lng\de-DE"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\el-GR\mplng.dll.mui"; DestDir: "{app}\lng\el-GR"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\el-GR\np3lng.dll.mui"; DestDir: "{app}\lng\el-GR"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\en-GB\mplng.dll.mui"; DestDir: "{app}\lng\en-GB"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\en-GB\np3lng.dll.mui"; DestDir: "{app}\lng\en-GB"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\es-ES\mplng.dll.mui"; DestDir: "{app}\lng\es-ES"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\es-ES\np3lng.dll.mui"; DestDir: "{app}\lng\es-ES"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\es-MX\mplng.dll.mui"; DestDir: "{app}\lng\es-MX"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\es-MX\np3lng.dll.mui"; DestDir: "{app}\lng\es-MX"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\fr-FR\mplng.dll.mui"; DestDir: "{app}\lng\fr-FR"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\fr-FR\np3lng.dll.mui"; DestDir: "{app}\lng\fr-FR"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\hi-IN\mplng.dll.mui"; DestDir: "{app}\lng\hi-IN"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\hi-IN\np3lng.dll.mui"; DestDir: "{app}\lng\hi-IN"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\hu-HU\mplng.dll.mui"; DestDir: "{app}\lng\hu-HU"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\hu-HU\np3lng.dll.mui"; DestDir: "{app}\lng\hu-HU"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\id-ID\mplng.dll.mui"; DestDir: "{app}\lng\id-ID"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\id-ID\np3lng.dll.mui"; DestDir: "{app}\lng\id-ID"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\it-IT\mplng.dll.mui"; DestDir: "{app}\lng\it-IT"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\it-IT\np3lng.dll.mui"; DestDir: "{app}\lng\it-IT"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\ja-JP\mplng.dll.mui"; DestDir: "{app}\lng\ja-JP"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\ja-JP\np3lng.dll.mui"; DestDir: "{app}\lng\ja-JP"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\ko-KR\mplng.dll.mui"; DestDir: "{app}\lng\ko-KR"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\ko-KR\np3lng.dll.mui"; DestDir: "{app}\lng\ko-KR"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\nl-NL\mplng.dll.mui"; DestDir: "{app}\lng\nl-NL"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\nl-NL\np3lng.dll.mui"; DestDir: "{app}\lng\nl-NL"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\pl-PL\mplng.dll.mui"; DestDir: "{app}\lng\pl-PL"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\pl-PL\np3lng.dll.mui"; DestDir: "{app}\lng\pl-PL"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\pt-BR\mplng.dll.mui"; DestDir: "{app}\lng\pt-BR"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\pt-BR\np3lng.dll.mui"; DestDir: "{app}\lng\pt-BR"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\pt-PT\mplng.dll.mui"; DestDir: "{app}\lng\pt-PT"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\pt-PT\np3lng.dll.mui"; DestDir: "{app}\lng\pt-PT"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\ru-RU\mplng.dll.mui"; DestDir: "{app}\lng\ru-RU"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\ru-RU\np3lng.dll.mui"; DestDir: "{app}\lng\ru-RU"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\sk-SK\mplng.dll.mui"; DestDir: "{app}\lng\sk-SK"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\sk-SK\np3lng.dll.mui"; DestDir: "{app}\lng\sk-SK"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\sv-SE\mplng.dll.mui"; DestDir: "{app}\lng\sv-SE"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\sv-SE\np3lng.dll.mui"; DestDir: "{app}\lng\sv-SE"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\tr-TR\mplng.dll.mui"; DestDir: "{app}\lng\tr-TR"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\tr-TR\np3lng.dll.mui"; DestDir: "{app}\lng\tr-TR"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\vi-VN\mplng.dll.mui"; DestDir: "{app}\lng\vi-VN"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\vi-VN\np3lng.dll.mui"; DestDir: "{app}\lng\vi-VN"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\zh-CN\mplng.dll.mui"; DestDir: "{app}\lng\zh-CN"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\zh-CN\np3lng.dll.mui"; DestDir: "{app}\lng\zh-CN"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\zh-TW\mplng.dll.mui"; DestDir: "{app}\lng\zh-TW"; Flags: ignoreversion -Source: "{#bindir}\Release_x86_v143\lng\zh-TW\np3lng.dll.mui"; DestDir: "{app}\lng\zh-TW"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\mplng.dll"; DestDir: "{app}\lng"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\np3lng.dll"; DestDir: "{app}\lng"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\gwLng\*.lang"; DestDir: "{app}\lng\gwLng"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\af-ZA\mplng.dll.mui"; DestDir: "{app}\lng\af-ZA"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\af-ZA\np3lng.dll.mui"; DestDir: "{app}\lng\af-ZA"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\be-BY\mplng.dll.mui"; DestDir: "{app}\lng\be-BY"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\be-BY\np3lng.dll.mui"; DestDir: "{app}\lng\be-BY"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\de-DE\mplng.dll.mui"; DestDir: "{app}\lng\de-DE"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\de-DE\np3lng.dll.mui"; DestDir: "{app}\lng\de-DE"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\el-GR\mplng.dll.mui"; DestDir: "{app}\lng\el-GR"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\el-GR\np3lng.dll.mui"; DestDir: "{app}\lng\el-GR"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\en-GB\mplng.dll.mui"; DestDir: "{app}\lng\en-GB"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\en-GB\np3lng.dll.mui"; DestDir: "{app}\lng\en-GB"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\es-ES\mplng.dll.mui"; DestDir: "{app}\lng\es-ES"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\es-ES\np3lng.dll.mui"; DestDir: "{app}\lng\es-ES"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\es-MX\mplng.dll.mui"; DestDir: "{app}\lng\es-MX"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\es-MX\np3lng.dll.mui"; DestDir: "{app}\lng\es-MX"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\fr-FR\mplng.dll.mui"; DestDir: "{app}\lng\fr-FR"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\fr-FR\np3lng.dll.mui"; DestDir: "{app}\lng\fr-FR"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\hi-IN\mplng.dll.mui"; DestDir: "{app}\lng\hi-IN"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\hi-IN\np3lng.dll.mui"; DestDir: "{app}\lng\hi-IN"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\hu-HU\mplng.dll.mui"; DestDir: "{app}\lng\hu-HU"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\hu-HU\np3lng.dll.mui"; DestDir: "{app}\lng\hu-HU"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\id-ID\mplng.dll.mui"; DestDir: "{app}\lng\id-ID"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\id-ID\np3lng.dll.mui"; DestDir: "{app}\lng\id-ID"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\it-IT\mplng.dll.mui"; DestDir: "{app}\lng\it-IT"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\it-IT\np3lng.dll.mui"; DestDir: "{app}\lng\it-IT"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\ja-JP\mplng.dll.mui"; DestDir: "{app}\lng\ja-JP"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\ja-JP\np3lng.dll.mui"; DestDir: "{app}\lng\ja-JP"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\ko-KR\mplng.dll.mui"; DestDir: "{app}\lng\ko-KR"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\ko-KR\np3lng.dll.mui"; DestDir: "{app}\lng\ko-KR"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\nl-NL\mplng.dll.mui"; DestDir: "{app}\lng\nl-NL"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\nl-NL\np3lng.dll.mui"; DestDir: "{app}\lng\nl-NL"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\pl-PL\mplng.dll.mui"; DestDir: "{app}\lng\pl-PL"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\pl-PL\np3lng.dll.mui"; DestDir: "{app}\lng\pl-PL"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\pt-BR\mplng.dll.mui"; DestDir: "{app}\lng\pt-BR"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\pt-BR\np3lng.dll.mui"; DestDir: "{app}\lng\pt-BR"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\pt-PT\mplng.dll.mui"; DestDir: "{app}\lng\pt-PT"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\pt-PT\np3lng.dll.mui"; DestDir: "{app}\lng\pt-PT"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\ru-RU\mplng.dll.mui"; DestDir: "{app}\lng\ru-RU"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\ru-RU\np3lng.dll.mui"; DestDir: "{app}\lng\ru-RU"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\sk-SK\mplng.dll.mui"; DestDir: "{app}\lng\sk-SK"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\sk-SK\np3lng.dll.mui"; DestDir: "{app}\lng\sk-SK"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\sv-SE\mplng.dll.mui"; DestDir: "{app}\lng\sv-SE"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\sv-SE\np3lng.dll.mui"; DestDir: "{app}\lng\sv-SE"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\tr-TR\mplng.dll.mui"; DestDir: "{app}\lng\tr-TR"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\tr-TR\np3lng.dll.mui"; DestDir: "{app}\lng\tr-TR"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\vi-VN\mplng.dll.mui"; DestDir: "{app}\lng\vi-VN"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\vi-VN\np3lng.dll.mui"; DestDir: "{app}\lng\vi-VN"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\zh-CN\mplng.dll.mui"; DestDir: "{app}\lng\zh-CN"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\zh-CN\np3lng.dll.mui"; DestDir: "{app}\lng\zh-CN"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\zh-TW\mplng.dll.mui"; DestDir: "{app}\lng\zh-TW"; Flags: ignoreversion +Source: "{#bindir}{#RLSdir}\lng\zh-TW\np3lng.dll.mui"; DestDir: "{app}\lng\zh-TW"; Flags: ignoreversion Source: "Changes.txt"; DestDir: "{app}\Docs"; Flags: ignoreversion Source: "Docs\*.txt"; DestDir: "{app}\Docs"; Flags: ignoreversion Source: "Docs\crypto\*.txt"; DestDir: "{app}\Docs\crypto"; Flags: ignoreversion @@ -806,23 +877,30 @@ const IFEO = 'SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\notepad.exe'; APPH = 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Notepad3.exe'; +#if defined sse_required || defined sse2_required +function IsProcessorFeaturePresent(Feature: DWORD): BOOL; +external 'IsProcessorFeaturePresent@kernel32.dll stdcall'; + +const + PF_XMMI_INSTRUCTIONS_AVAILABLE = 6;// The SSE instruction set is available. + PF_XMMI64_INSTRUCTIONS_AVAILABLE = 10;// The SSE2 instruction set is available. +#endif + function InitializeSetup: Boolean; -begin - Result := True; - - //Check for Processor SSE2 support. - #if defined(sse2_required) - if not IsSSE2Supported() then begin - SuppressibleMsgBox(CustomMessage('msg_simd_sse2'), mbCriticalError, MB_OK, MB_OK); - Result := False; - end; - #elif defined(sse_required) - if not IsSSESupported() then begin - SuppressibleMsgBox(CustomMessage('msg_simd_sse'), mbCriticalError, MB_OK, MB_OK); - Result := False; - end; - #endif - + begin + Result := True; + #ifdef sse_required + // Check for Processor SSE support. + If Result then + if not IsProcessorFeaturePresent(PF_XMMI_INSTRUCTIONS_AVAILABLE) then + Result := SuppressibleMsgBox(CustomMessage('msg_simd_sse'), mbCriticalError, MB_OK, IDOK) = IDABORT; + #endif + #ifdef sse2_required + // Check for Processor SSE2 support. + If Result then + if not IsProcessorFeaturePresent(PF_XMMI64_INSTRUCTIONS_AVAILABLE) then + Result := SuppressibleMsgBox(CustomMessage('msg_simd_sse2'), mbCriticalError, MB_OK, IDOK) = IDABORT; + #EndIf end; // Check if Notepad3 has replaced Windows Notepad @@ -831,11 +909,13 @@ var sDebugger: String; begin if RegQueryStringValue(HKLM, IFEO, 'Debugger', sDebugger) and - (sDebugger = (ExpandConstant('"{app}\Notepad3.exe" /z'))) then begin + (sDebugger = (ExpandConstant('"{app}\Notepad3.exe" /z'))) then + begin Log('Custom Code: {#app_name} is set as the default notepad'); Result := True; end - else begin + else + begin Log('Custom Code: {#app_name} is NOT set as the default notepad'); Result := False; end; @@ -845,115 +925,98 @@ end; function OpenWithCheck(): Boolean; var sOpenWith: String; + reg_Open_with_NP3: String; begin - if RegQueryStringValue(HKEY_CLASSES_ROOT, '*\shell\Open with Notepad3', 'Icon', sOpenWith) and - (sOpenWith = (ExpandConstant('{app}\Notepad3.exe,0'))) then begin - Log('Custom Code: {#app_name} Open with Notepad3 is set.'); + reg_Open_with_NP3 := CustomMessage('reg_Open_with_NP3'); + if RegQueryStringValue(HKEY_CLASSES_ROOT, '*\shell\' + reg_Open_with_NP3, 'Icon', sOpenWith) and + (sOpenWith = (ExpandConstant('{app}\Notepad3.exe,0'))) then + begin + Log('Custom Code: {#app_name} '+reg_Open_with_NP3+' is set.'); Result := True; end - else begin - Log('Custom Code: {#app_name} Open with Notepad3 is not set.'); + else + begin + Log('Custom Code: {#app_name} '+reg_Open_with_NP3+' is not set.'); Result := False; end; end; -#if defined(sse_required) || defined(sse2_required) -function IsProcessorFeaturePresent(Feature: Integer): Boolean; -external 'IsProcessorFeaturePresent@kernel32.dll stdcall'; -#endif - -#if defined(sse_required) -function IsSSESupported(): Boolean; -begin - // PF_XMMI_INSTRUCTIONS_AVAILABLE - Result := IsProcessorFeaturePresent(6); -end; - -#elif defined(sse2_required) - -function IsSSE2Supported(): Boolean; -begin - // PF_XMMI64_INSTRUCTIONS_AVAILABLE - Result := IsProcessorFeaturePresent(10); -end; - -#endif - function IsOldBuildInstalled(sInfFile: String): Boolean; begin if RegKeyExists(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\Notepad2') and - FileExists(ExpandConstant('{commonpf}\Notepad2\' + sInfFile)) then + FileExists(ExpandConstant('{commonpf}\Notepad2\' + sInfFile)) then Result := True else Result := False; end; function IsUpgrade(): Boolean; -var - sPrevPath: String; -begin - sPrevPath := WizardForm.PrevAppDir; - Result := (sPrevPath <> ''); + Var + PrevAppDir: String; + begin + PrevAppDir := WizardForm.PrevAppDir; + Result := Length( PrevAppDir ) > 0; + If Result then + Result := FileExists( AddBackslash(PrevAppDir) + '{#app_name}.exe' ); end; // Check if Notepad3's settings exist function SettingsExistCheck(): Boolean; begin - if FileExists(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\Notepad3.ini')) then begin - Log('Custom Code: Settings are present'); - Result := True; - end - else begin + Result := FileExists(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\Notepad3.ini')); + If Result Then + Log('Custom Code: Settings are present') + else Log('Custom Code: Settings are NOT present'); - Result := False; - end; end; function UninstallOldVersion(sInfFile: String): Integer; -var - iResultCode: Integer; -begin - // Return Values: - // 0 - no idea - // 1 - error executing the command - // 2 - successfully executed the command + begin + // Return Values: + // -1 - exec(...) failed! + // return value of the executing command (0 - AllOK, 1 - SysErrorMessage(1), etc.) - // default return value - Result := 0; - // TODO: use RegQueryStringValue - if not Exec('rundll32.exe', ExpandConstant('advpack.dll,LaunchINFSectionEx ' + '"{commonpf}\Notepad2\' + sInfFile +'",DefaultUninstall,,8,N'), '', SW_HIDE, ewWaitUntilTerminated, iResultCode) then begin - Result := 1; - end - else begin - Result := 2; - Sleep(200); - end; + // default return value + Result := -1; + // TODO: use RegQueryStringValue + Exec('rundll32.exe', ExpandConstant('advpack.dll,LaunchINFSectionEx ' + '"{commonpf}\Notepad2\' + sInfFile +'",DefaultUninstall,,8,N'), '', SW_HIDE, ewWaitUntilTerminated, Result); end; function ShouldSkipPage(PageID: Integer): Boolean; begin - // Hide the license page if IsUpgrade() - if IsUpgrade() and (PageID = wpLicense) then - Result := True; + // Skip the license page if IsUpgrade() + // if IsUpgrade() and (PageID = wpLicense) then + if PageID = wpLicense then + if IsUpgrade() then + begin + Result := True; + WizardForm.LicenseAcceptedRadio.Checked := Result; + end; end; procedure AddReg(); +Var + APP: String; begin + APP := ExpandConstant('{app}'); RegWriteStringValue(HKCR, 'Applications\notepad3.exe', 'AppUserModelID', 'Rizonesoft.Notepad3'); - RegWriteStringValue(HKCR, 'Applications\notepad3.exe\shell\open\command', '', ExpandConstant('"{app}\Notepad3.exe" "%1"')); + RegWriteStringValue(HKCR, 'Applications\notepad3.exe\shell\open\command', '', '"'+APP+'\Notepad3.exe" "%1"'); RegWriteStringValue(HKCR, '*\OpenWithList\notepad3.exe', '', ''); - RegWriteStringValue(HKLM, APPH, '', ExpandConstant('{app}\Notepad3.exe')); - RegWriteStringValue(HKLM, APPH, 'Path', ExpandConstant('{app}')); + RegWriteStringValue(HKLM, APPH, '', APP+'\Notepad3.exe'); + RegWriteStringValue(HKLM, APPH, 'Path', APP); end; procedure CleanUpSettings(); +Var + userappdata: String; begin - DeleteFile(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\Notepad3.ini')); - DeleteFile(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\minipath.ini')); - DeleteFile(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\grepWinNP3.ini')); - DeleteFile(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\Themes\Dark.ini')); - DeleteFile(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\Themes\Obsidian.ini')); - DeleteFile(ExpandConstant('{userappdata}\Rizonesoft\Notepad3\Themes\Sombra.ini')); + userappdata := ExpandConstant('{userappdata}'); + DeleteFile(userappdata + '\Rizonesoft\Notepad3\Notepad3.ini'); + DeleteFile(userappdata + '\Rizonesoft\Notepad3\minipath.ini'); + DeleteFile(userappdata + '\Rizonesoft\Notepad3\grepWinNP3.ini'); + DeleteFile(userappdata + '\Rizonesoft\Notepad3\Themes\Dark.ini'); + DeleteFile(userappdata + '\Rizonesoft\Notepad3\Themes\Obsidian.ini'); + DeleteFile(userappdata + '\Rizonesoft\Notepad3\Themes\Sombra.ini'); end; procedure RemoveReg(); @@ -961,6 +1024,7 @@ begin RegDeleteKeyIncludingSubkeys(HKCR, 'Applications\notepad3.exe'); RegDeleteKeyIncludingSubkeys(HKCR, '*\OpenWithList\notepad3.exe'); RegDeleteKeyIncludingSubkeys(HKCR, '*\shell\Open with Notepad3'); + RegDeleteKeyIncludingSubkeys(HKCR, '*\shell\' + CustomMessage('reg_Open_with_NP3')); RegDeleteKeyIncludingSubkeys(HKLM, APPH); end; @@ -968,18 +1032,30 @@ procedure CurPageChanged(CurPageID: Integer); begin if CurPageID = wpSelectTasks then WizardForm.NextButton.Caption := SetupMessage(msgButtonInstall) - else if CurPageID = wpFinished then + else + if CurPageID = wpFinished then WizardForm.NextButton.Caption := SetupMessage(msgButtonFinish); end; procedure CurStepChanged(CurStep: TSetupStep); +Var + reg_Open_with_NP3, APP: String; begin - if CurStep = ssInstall then begin + if (CurStep = ssInstall) or (CurStep = ssPostInstall) then + begin + reg_Open_with_NP3 := CustomMessage('reg_Open_with_NP3'); + APP := ExpandConstant('{app}'); + end; + + if CurStep = ssInstall then + begin if WizardIsTaskSelected('reset_settings') then CleanUpSettings(); - if IsOldBuildInstalled('Uninstall.inf') or IsOldBuildInstalled('Notepad2.inf') then begin - if IsOldBuildInstalled('Uninstall.inf') then begin + if IsOldBuildInstalled('Uninstall.inf') or IsOldBuildInstalled('Notepad2.inf') then + begin + if IsOldBuildInstalled('Uninstall.inf') then + begin Log('Custom Code: The old build is installed, will try to uninstall it'); if UninstallOldVersion('Uninstall.inf') = 2 then Log('Custom Code: The old build was successfully uninstalled') @@ -987,7 +1063,8 @@ begin Log('Custom Code: Something went wrong when uninstalling the old build'); end; - if IsOldBuildInstalled('Notepad2.inf') then begin + if IsOldBuildInstalled('Notepad2.inf') then + begin Log('Custom Code: The official Notepad2 build is installed, will try to uninstall it'); if UninstallOldVersion('Notepad2.inf') = 2 then Log('Custom Code: The official Notepad2 build was successfully uninstalled') @@ -997,49 +1074,61 @@ begin // This is the case where the old build is installed; the DefaulNotepadCheck() returns true // and the set_default task isn't selected - if not WizardIsTaskSelected('remove_default') then begin - RegWriteStringValue(HKLM, IFEO, 'Debugger', ExpandConstant('"{app}\Notepad3.exe" /z')); + if not WizardIsTaskSelected('remove_default') then + begin + RegWriteStringValue(HKLM, IFEO, 'Debugger', '"'+app+'\Notepad3.exe" /z'); RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 0); end; end; end; - if CurStep = ssPostInstall then begin + if CurStep = ssPostInstall then + begin if WizardIsTaskSelected('set_default') then begin - RegWriteStringValue(HKLM, IFEO, 'Debugger', ExpandConstant('"{app}\Notepad3.exe" /z')); + RegWriteStringValue(HKLM, IFEO, 'Debugger', '"'+app+'\Notepad3.exe" /z'); RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 0); end; - if WizardIsTaskSelected('remove_default') then begin + if WizardIsTaskSelected('remove_default') then + begin RegDeleteValue(HKLM, IFEO, 'Debugger'); RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 1); - end else begin - If RegValueExists (HKLM, IFEO, 'Debugger') then begin - RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 0); - end else begin + end + else + begin + If RegValueExists (HKLM, IFEO, 'Debugger') then + RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 0) + else RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 1); - end; end; - if WizardIsTaskSelected('set_openwith') then begin - RegWriteStringValue(HKCR, '*\shell\Open with Notepad3', 'Icon', ExpandConstant('{app}\Notepad3.exe,0')); - RegWriteStringValue(HKCR, '*\shell\Open with Notepad3\command', '', ExpandConstant('"{app}\Notepad3.exe" "%1"')); - end; - if WizardIsTaskSelected('remove_openwith') then begin + if WizardIsTaskSelected('set_openwith') then + begin RegDeleteKeyIncludingSubkeys(HKCR, '*\shell\Open with Notepad3'); + RegDeleteKeyIncludingSubkeys(HKCR, '*\shell\' + reg_Open_with_NP3); + RegWriteStringValue(HKCR, '*\shell\' + reg_Open_with_NP3, 'Icon', app+'\Notepad3.exe,0'); + RegWriteStringValue(HKCR, '*\shell\' + reg_Open_with_NP3 + '\command', '', '"'+app+'\Notepad3.exe" "%1"'); end; + if WizardIsTaskSelected('remove_openwith') then + RegDeleteKeyIncludingSubkeys(HKCR, '*\shell\' + reg_Open_with_NP3); // Always add Notepad3's AppUserModelID and the rest registry values AddReg(); end; end; +Var + SettingsCleanUp: Boolean; + procedure CurUninstallStepChanged(CurUninstallStep: TUninstallStep); begin // When uninstalling, ask the user to delete Notepad3's settings and themes - if CurUninstallStep = usUninstall then begin - if SettingsExistCheck() then begin - if SuppressibleMsgBox(CustomMessage('msg_DeleteSettings'), mbConfirmation, MB_YESNO or MB_DEFBUTTON2, IDNO) = IDYES then - CleanUpSettings(); - end; - if DefaulNotepadCheck() then begin + if CurUninstallStep = usUninstall then + if SettingsExistCheck() then + SettingsCleanUp := SuppressibleMsgBox(CustomMessage('msg_DeleteSettings'), mbConfirmation, MB_YESNO or MB_DEFBUTTON2, IDNO) = IDYES; + if CurUninstallStep = usPostUninstall then + begin + If SettingsCleanUp then + CleanUpSettings(); + if DefaulNotepadCheck() then + begin RegDeleteValue(HKLM, IFEO, 'Debugger'); RegWriteDWordValue(HKLM, IFEO, 'UseFilter', 1); end; @@ -1049,7 +1138,15 @@ end; procedure InitializeWizard(); begin - WizardForm.SelectTasksLabel.Hide; - WizardForm.TasksList.Top := 0; - WizardForm.TasksList.Height := PageFromID(wpSelectTasks).SurfaceHeight; + With WizardForm do + begin + SelectTasksLabel.Hide; + With TasksList do + begin + Top := 0; + Height := PageFromID(wpSelectTasks).SurfaceHeight; + end; + end; end; + +// #expr SaveToFile( AddBackSlash(SourcePath) + SetupSetting("OutputBaseFilename") + ".iss")