Merge pull request #5636 from RaiKoHoff/Dev_Master
Some checks failed
Build / ${{ matrix.platform }} ${{ matrix.configuration }} (Release, ARM64) (push) Has been cancelled
Build / ${{ matrix.platform }} ${{ matrix.configuration }} (Release, Win32) (push) Has been cancelled
Build / ${{ matrix.platform }} ${{ matrix.configuration }} (Release, x64) (push) Has been cancelled
Build / ${{ matrix.platform }} ${{ matrix.configuration }} (Release, x64_AVX2) (push) Has been cancelled

fix: PortableApps Platform build should use PA's grepWinPortable
This commit is contained in:
Rainer Kottenhoff 2026-04-04 16:44:56 +02:00 committed by GitHub
commit 1d5fb45d70
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
17 changed files with 399 additions and 404 deletions

8
.gitignore vendored
View File

@ -57,19 +57,11 @@ Thumbs.db
/np3portableapp/Signing*.txt
/np3portableapp/Notepad3Portable*.7z
/np3portableapp/Notepad3Portable*.exe
#/np3portableapp/Notepad3Portable/Data
#/np3portableapp/Notepad3Portable/Data
#/np3portableapp/Notepad3Portable/App/AppInfo/appinfo.ini
#/np3portableapp/Notepad3Portable/App/AppInfo/installer.ini
#/np3portableapp/Notepad3Portable/App/DefaultData/settings
#/np3portableapp/Notepad3Portable/App/Notepad3/Docs
/np3portableapp/Notepad3Portable*.exe
/np3portableapp/Notepad3Portable/Notepad3Portable*.exe
/np3portableapp/Notepad3Portable/App/Notepad3/x64/*.exe
/np3portableapp/Notepad3Portable/App/Notepad3/x64/grepWin
/np3portableapp/Notepad3Portable/App/Notepad3/x64/lng
/np3portableapp/Notepad3Portable/App/Notepad3/x86/*.exe
/np3portableapp/Notepad3Portable/App/Notepad3/x86/grepWin
/np3portableapp/Notepad3Portable/App/Notepad3/x86/lng
#

View File

@ -1,8 +0,0 @@
@echo off
REM Build PortableApps Package
REM Usage: Build_PortableApp.cmd [arguments passed to BuildPortableApp.ps1]
setlocal
set PortAppsDir=D:\PortableApps
powershell -ExecutionPolicy Bypass -File "%~dp0scripts\BuildPortableApp.ps1" -PortableAppsDir "%PortAppsDir%" %*

View File

@ -5,6 +5,7 @@
SettingsVersion=5
;AnalyzeReliableConfidenceLevel=50
[Settings2]
;grepWin.exe=grepWinNP3.exe
;IMEInteraction=0
;DateTimeFormat= ;(-> <Locale dependent short format>)
;DateTimeLongFormat= ;(-> <Locale dependent long format>)
@ -14,7 +15,6 @@ SettingsVersion=5
;DefaultExtension=txt
;DenyVirtualSpaceAccess=0
;filebrowser.exe=minipath.exe
;grepWin.exe=grepWinNP3.exe
;FileCheckInterval=2000 ;(min: 200[msec] - if equal or less, notify immediately)
;FileWatchingMethod=0 ;(0=both[default], 1=poll-only, 2=push-only)
;FileChangedIndicator=[@]

198
Build/Notepad3_pap.ini Normal file
View File

@ -0,0 +1,198 @@
[Notepad3]
;Notepad3.ini=%USERPROFILE%\Notepad3.ini
;Notepad3.ini=%APPDATA%\Rizonesoft\Notepad3\Notepad3.ini
[Settings]
SettingsVersion=5
;AnalyzeReliableConfidenceLevel=50
[Settings2]
grepWin.exe=%PORTABLEAPPS_DIR%\grepWinPortable\grepWinPortable.exe
;IMEInteraction=0
;DateTimeFormat= ;(-> <Locale dependent short format>)
;DateTimeLongFormat= ;(-> <Locale dependent long format>)
;TimeStampRegEx= ;(-> \$Date:[^\$]+\$ ) (Find-Pattern to Update Stamps)
;TimeStampFormat= ;(-> $Date: %s $) {Print format should fit to TimeStampRegEx}
;DefaultDirectory=
;DefaultExtension=txt
;DenyVirtualSpaceAccess=0
;filebrowser.exe=minipath.exe
;FileCheckInterval=2000 ;(min: 200[msec] - if equal or less, notify immediately)
;FileWatchingMethod=0 ;(0=both[default], 1=poll-only, 2=push-only)
;FileChangedIndicator=[@]
;FileDeletedIndicator=[X]
;FileDlgFilters=
;FileLoadWarningMB=4
;MultiFileArg=0
;NoCGIGuess=0
;NoCopyLineOnEmptySelection=0
;NoCutLineOnEmptySelection=0
;CopyMultiSelectionSeparator= ;(-> <use current EOL>) {use empty value for no separator}
;NoFadeHidden=0
;NoFileVariables=0
;NoHTMLGuess=0
;PortableMyDocs=1
;OpacityLevel=75
;FindReplaceOpacityLevel=50
;RelativeFileMRU=1
;ReuseWindow=0
;SaveBlankNewFile=true
;SciFontQuality=3
;SimpleIndentGuides=0
;SingleFileInstance=1
;ShellAppUserModelID=Rizonesoft.Notepad3
;ShellUseSystemMRU=1
;StickyWindowPosition=0
;SubWrappedLineSelectOnMarginClick=false
;LaunchInstanceWndPosOffset=28
;LaunchInstanceFullVisible=true
;UseOldStyleBraceMatching=0
;WebTemplate1=https://google.com/search?q=%s
;WebTmpl1MenuName=Open Web Action 1
;WebTemplate2=https://en.wikipedia.org/w/index.php?search=%s
;WebTmpl2MenuName=Open Web Action 2
;ExtendedWhiteSpaceChars=
;AutoCompleteWordCharSet=
;AutoCompleteFillUpChars=
;LineCommentPostfixStrg=
;UpdateDelayMarkAllOccurrences=50
;CurrentLineHorizontalSlop=40
;CurrentLineVerticalSlop=5
;UndoTransactionTimeout=0 ;in [msec]
;AdministrationTool.exe=
;DevDebugMode=0
;LocaleAnsiCodePageAnalysisBonus=33
;UchardetLanguageFilter=31
; Bitmask controlling which CJK charset probers are active in uchardet:
; Bit 0 (0x01/1) = Chinese Simplified (GB18030)
; Bit 1 (0x02/2) = Chinese Traditional (Big5, EUC-TW)
; Bit 2 (0x04/4) = Japanese (Shift_JIS, EUC-JP)
; Bit 3 (0x08/8) = Korean (EUC-KR)
; Bit 4 (0x10/16) = Non-CJK (single-byte encodings)
; Common values:
; 31 = All probers (default)
; 27 = Exclude Japanese (fix GB18030 misdetected as EUC-JP)
; 17 = Chinese Simplified + Non-CJK only
; 3 = Chinese only (simplified + traditional)
;LexerSQLNumberSignAsComment=1
;AtomicFileSave=true
;ExitOnESCSkipLevel=2
;ZoomTooltipTimeout=3200 ;in [msec]
;WrapAroundTooltipTimeout=2000 ;in [msec]
;LargeIconScalePrecent=150
;DarkModeBkgColor=0x1F1F1F
;DarkModeBtnFaceColor=0x333333
;DarkModeTxtColor=0xEFEFEF
;HyperlinkShellExURLWithApp=""
;HyperlinkShellExURLCmdLnArgs="${URL}" ;(use ${URL} as place holder for clicked Hyperlink URL string)
;HyperlinkFileProtocolVerb="" ;(ShellExecuteEx()::lpVerb (""=default, "edit", "explore", "find", "open", "print", "properties", "runas")
;CodeFontPrefPrioList="Cascadia Code,Cascadia Mono,Cousine,Fira Code,Source Code Pro,Roboto Mono,DejaVu Sans Mono,Inconsolata,Consolas,Lucida Console"
;TextFontPrefPrioList="Cascadia Mono,Cousine,Roboto Mono,DejaVu Sans Mono,Inconsolata,Consolas,Lucida Console"
[Statusbar Settings]
;VisibleSections=0 1 15 14 2 4 5 6 7 8 9 10 11
;SectionPrefixes=Ln ,Col ,Sel ,Sb ,SLn ,Occ ,,,,,,,Ch ,Repl ,Eval ,U+,
;SectionPostfixes=,,,,,,,,,,,,,,,,
;SectionWidthSpecs=30 20 20 20 20 20 20 0 0 0 0 0 0 0 20 24
;ZeroBasedColumnIndex=0
;ZeroBasedCharacterCount=0
[Toolbar Images]
;BitmapDefault=<[<drive>:|relative_]\path_to>\Toolbar.bmp
;BitmapHot=<[<drive>:|relative_]\path_to>\ToolbarHot.bmp
;BitmapDisabled=<[<drive>:|relative_]\path_to>\ToolbarDisabled.bmp
[Toolbar Labels]
;01=New
;02=Open
;03=Browse
;04=Save
;05=Undo
;06=Redo
;07=Cut
;08=Copy
;09=Paste
;10=Find
;11=Replace
;12=Word Wrap
;13=Zoom In
;14=Zoom Out
;15=Scheme
;16=Customize Schemes
;17=Exit
;18=Save As
;19=Save Copy
;20=Delete
;21=Print
;22=Favorites
;23=Add to Favorites
;24=Toggle Folds
;25=Execute Document
;26=Focused View
;27=Monitoring Log
;28=History
;29=Always On Top
;30=Search in Files
;31=Reset Zoom
;32=New Empty Window
[Styles]
[Window]
;<ResX>x<ResY> DefaultWindowPosition=
[Suppressed Messages]
[Custom Colors]
[Common Base]
[2nd Common Base]
[Text Files]
[ANSI Art]
[Apache Config Files]
[Assembly Script]
[AutoHotkey Script]
[AutoIt3 Script]
[AviSynth Script]
[Awk Script]
[Batch Files]
[C# Source Code]
[C/C++ Source Code]
[Cmake Script]
[Coffeescript]
[Configuration Files]
[CSS Style Sheets]
[CSV Prism]
[D Source Code]
[Dart Source Code]
[Diff Files]
[Fortran Source Code]
[Go Source Code]
[Inno Setup Script]
[Java Source Code]
[JavaScript]
[JSON]
[Julia Script]
[KiXtart Script]
[Kotlin Source Code]
[LaTeX Files]
[Lua Script]
[Makefiles]
[Markdown]
[MATLAB]
[Nim Source Code]
[NSIS Script]
[Pascal Source Code]
[Perl Script]
[PowerShell Script]
[Python Script]
[Registry Files]
[Resource Script]
[R-S-SPlus Statistics Code]
[Ruby Script]
[Rust Source Code]
[Shell Script]
[SQL Query]
[SystemVerilog HDVL]
[Tcl Script]
[TOML Config]
[VBScript]
[Verilog HDL]
[VHDL]
[Visual Basic]
[Web Source Code]
[XML Document]
[YAML]
[Recent Files]
[Recent Find]
[Recent Replace]

View File

@ -33,11 +33,11 @@ SET TEMP_NAME="make_portable_temp"
IF NOT EXIST "..\%INPUTDIRx86%\Notepad3.exe" CALL :SUBMSG "ERROR" "Compile Notepad3 x86 first!"
IF NOT EXIST "..\%INPUTDIRx86%\minipath.exe" CALL :SUBMSG "ERROR" "Compile MiniPath x86 first!"
IF NOT EXIST "..\%INPUTDIRx86%\grepWinNP3.exe" CALL :SUBMSG "ERROR" "Compile grepWinNP3 x86 first!"
::IF NOT EXIST "..\%INPUTDIRx86%\grepWinNP3.exe" CALL :SUBMSG "ERROR" "Compile grepWinNP3 x86 first!"
IF NOT EXIST "..\%INPUTDIRx86%\np3encrypt.exe" CALL :SUBMSG "ERROR" "Compile np3encrypt x86 first!"
IF NOT EXIST "..\%INPUTDIRx64%\Notepad3.exe" CALL :SUBMSG "ERROR" "Compile Notepad3 x64 first!"
IF NOT EXIST "..\%INPUTDIRx64%\minipath.exe" CALL :SUBMSG "ERROR" "Compile MiniPath x64 first!"
IF NOT EXIST "..\%INPUTDIRx64%\grepWinNP3.exe" CALL :SUBMSG "ERROR" "Compile grepWinNP3 x64 first!"
::IF NOT EXIST "..\%INPUTDIRx64%\grepWinNP3.exe" CALL :SUBMSG "ERROR" "Compile grepWinNP3 x64 first!"
IF NOT EXIST "..\%INPUTDIRx64%\np3encrypt.exe" CALL :SUBMSG "ERROR" "Compile np3encrypt x64 first!"
CALL :SubGetVersion
@ -91,8 +91,8 @@ IF EXIST "%TEMP_NAME%" RD /S /Q "%TEMP_NAME%"
IF NOT EXIST "%TEMP_NAME%" MD "%TEMP_NAME%"
IF NOT EXIST "Packages" MD "Packages"
FOR %%A IN ("..\License.txt" "..\Readme.txt" "..\grepWinNP3\grepWinLicense.txt" "Notepad3.ini" "minipath.ini"^
"..\%1\Notepad3.exe" "..\%1\minipath.exe" "..\%1\grepWinNP3.exe" "..\%1\np3encrypt.exe") DO COPY /Y /V "%%A" "%TEMP_NAME%\"
FOR %%A IN ("..\License.txt" "..\Readme.txt" "Notepad3.ini" "minipath.ini"^
"..\%1\Notepad3.exe" "..\%1\minipath.exe" "..\%1\np3encrypt.exe") DO COPY /Y /V "%%A" "%TEMP_NAME%\"
SET "LNG=%TEMP_NAME%\lng"
SET "GRP=%TEMP_NAME%\lng\gwLng\"

View File

@ -1,319 +0,0 @@
# Build PortableApps Package for Notepad3
# Usage: .\BuildPortableApp.ps1 [-SkipBuild] [-SkipVersionPatch]
# [-SkipLauncherGenerator] [-PortableAppsDir <path>]
#
# Steps:
# 1. Run Version.ps1 to generate VersionEx.h
# 2. Build x64 and Win32 Release
# 3. Copy binaries to PortableApp structure
# 4. Process appinfo_template.ini with version info
# 5. Generate Notepad3Portable.exe launcher
# 6. Package with PortableApps.comInstaller.exe
[CmdletBinding()]
param(
[switch]$SkipBuild,
[switch]$SkipVersionPatch,
[switch]$SkipLauncherGenerator,
[string]$PortableAppsDir = "D:\PortableApps"
)
$ErrorActionPreference = "Stop"
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
$RepoRoot = Split-Path -Parent (Split-Path -Parent $ScriptDir)
$InstallerPath = Join-Path $PortableAppsDir "PortableApps.comInstaller\PortableApps.comInstaller.exe"
$PortableAppRoot = Join-Path $RepoRoot "np3portableapp"
$PortableAppDir = Join-Path $PortableAppRoot "Notepad3Portable"
$AppInfoDir = Join-Path $PortableAppDir "App\AppInfo"
$Notepad3AppDir = Join-Path $PortableAppDir "App\Notepad3"
# ============================================================
# Helper: colored step banner
# ============================================================
function Write-Step {
param([int]$Number, [string]$Text)
Write-Host ""
Write-Host "--- Step $Number : $Text ---" -ForegroundColor Cyan
}
# ============================================================
# Helper: detect PlatformToolset from installed Visual Studio
# ============================================================
function Get-PlatformToolset {
$vswhere = "${env:ProgramFiles(x86)}\Microsoft Visual Studio\Installer\vswhere.exe"
if (-not (Test-Path $vswhere)) {
throw "vswhere.exe not found. Install Visual Studio."
}
$vsVersion = & $vswhere -latest -property installationVersion 2>$null
if (-not $vsVersion) {
throw "No Visual Studio installation found via vswhere."
}
$major = ([version]$vsVersion).Major
$toolsetMap = @{ 15 = 'v141'; 16 = 'v142'; 17 = 'v143'; 18 = 'v145' }
$toolset = $toolsetMap[$major]
if (-not $toolset) {
throw "Unknown Visual Studio major version $major - cannot determine PlatformToolset."
}
Write-Host "Visual Studio version: $vsVersion -> PlatformToolset: $toolset" -ForegroundColor Cyan
return $toolset
}
# ============================================================
# Helper: parse version defines from VersionEx.h
# ============================================================
function Get-VersionFromHeader {
$headerPath = Join-Path $RepoRoot "src\VersionEx.h"
if (-not (Test-Path $headerPath)) {
throw "src\VersionEx.h not found. Run Version.ps1 first."
}
$content = Get-Content $headerPath -Raw
$defines = @{}
foreach ($name in @('VERSION_MAJOR', 'VERSION_MINOR', 'VERSION_REV', 'VERSION_BUILD')) {
if ($content -match "#define\s+$name\s+(\d+)") {
$defines[$name] = $Matches[1]
}
else {
throw "Could not parse $name from VersionEx.h"
}
}
$version = "$($defines['VERSION_MAJOR']).$($defines['VERSION_MINOR']).$($defines['VERSION_REV']).$($defines['VERSION_BUILD'])"
return $version
}
# ============================================================
# Helper: copy platform binaries to portable app target
# ============================================================
function Copy-PlatformBinaries {
param(
[string]$SourceDir,
[string]$TargetDir
)
if (-not (Test-Path $SourceDir)) {
throw "Build output not found: $SourceDir"
}
# Executables
foreach ($exe in @('Notepad3.exe', 'minipath.exe')) {
$src = Join-Path $SourceDir $exe
$dst = Join-Path $TargetDir $exe
if (-not (Test-Path $src)) {
throw "Missing binary: $src"
}
Copy-Item $src $dst -Force
Write-Host " Copied $exe" -ForegroundColor Gray
}
# Language DLLs (np3lng.dll, mplng.dll)
$srcLng = Join-Path $SourceDir "lng"
$dstLng = Join-Path $TargetDir "lng"
foreach ($dll in @('np3lng.dll', 'mplng.dll')) {
$src = Join-Path $srcLng $dll
$dst = Join-Path $dstLng $dll
if (-not (Test-Path $src)) {
Write-Warning "Missing language DLL: $src (skipping)"
continue
}
Copy-Item $src $dst -Force
Write-Host " Copied lng\$dll" -ForegroundColor Gray
}
# Locale MUI files - copy each locale subdirectory that exists in the target
$localeCount = 0
Get-ChildItem $dstLng -Directory | Where-Object { $_.Name -match '^\w{2}-\w{2}$' } | ForEach-Object {
$locale = $_.Name
$srcLocale = Join-Path $srcLng $locale
if (Test-Path $srcLocale) {
Copy-Item "$srcLocale\*" $_.FullName -Force -Recurse
$localeCount++
}
else {
Write-Warning " Locale $locale not found in build output (skipping)"
}
}
Write-Host " Copied $localeCount locale directories" -ForegroundColor Gray
}
# ============================================================
# Main
# ============================================================
$stopwatch = [System.Diagnostics.Stopwatch]::StartNew()
Write-Host "=== Notepad3 PortableApps Package Builder ===" -ForegroundColor Green
Write-Host "Repository: $RepoRoot" -ForegroundColor Cyan
# ----------------------------------------------------------
# Step 1: Version patching
# ----------------------------------------------------------
Write-Step 1 "Version Patching"
if ($SkipVersionPatch) {
Write-Host "Skipped (VersionEx.h assumed up-to-date)" -ForegroundColor Yellow
}
else {
Push-Location $RepoRoot
try {
& (Join-Path $RepoRoot "Version.ps1")
if ($LASTEXITCODE -ne 0) {
throw "Version.ps1 failed with exit code $LASTEXITCODE"
}
}
finally {
Pop-Location
}
}
# ----------------------------------------------------------
# Step 2: Parse version info
# ----------------------------------------------------------
Write-Step 2 "Reading Version Info"
$Version = Get-VersionFromHeader
Write-Host "Version: $Version" -ForegroundColor Green
# Read dev name from _buildname.txt
$buildNamePath = Join-Path $PortableAppRoot "_buildname.txt"
if (Test-Path $buildNamePath) {
$DevName = (Get-Content $buildNamePath -First 1).Trim().Trim('"').Trim("'")
}
else {
$DevName = ""
}
Write-Host "DevName: '$DevName'" -ForegroundColor Green
# ----------------------------------------------------------
# Step 3: Detect toolset and build
# ----------------------------------------------------------
Write-Step 3 "Detecting Visual Studio Toolset"
$Toolset = Get-PlatformToolset
$BinX64 = Join-Path $RepoRoot "Bin\Release_x64_$Toolset"
$BinX86 = Join-Path $RepoRoot "Bin\Release_x86_$Toolset"
Write-Step 4 "Building x64 and Win32 Release"
if ($SkipBuild) {
Write-Host "Skipped (using existing binaries)" -ForegroundColor Yellow
if (-not (Test-Path $BinX64)) { throw "x64 build output not found: $BinX64" }
if (-not (Test-Path $BinX86)) { throw "x86 build output not found: $BinX86" }
}
else {
$buildScript = Join-Path $ScriptDir "Build.ps1"
Write-Host "Building x64 Release..." -ForegroundColor Yellow
& $buildScript -Platform x64 -Configuration Release
if ($LASTEXITCODE -ne 0) {
throw "x64 build failed with exit code $LASTEXITCODE"
}
Write-Host ""
Write-Host "Building Win32 Release..." -ForegroundColor Yellow
& $buildScript -Platform Win32 -Configuration Release
if ($LASTEXITCODE -ne 0) {
throw "Win32 build failed with exit code $LASTEXITCODE"
}
}
# ----------------------------------------------------------
# Step 5: Copy binaries to portable app structure
# ----------------------------------------------------------
Write-Step 5 "Copying Binaries to Portable App"
$targetX64 = Join-Path $Notepad3AppDir "x64"
$targetX86 = Join-Path $Notepad3AppDir "x86"
Write-Host "x64: $BinX64 -> $targetX64" -ForegroundColor Yellow
Copy-PlatformBinaries -SourceDir $BinX64 -TargetDir $targetX64
Write-Host "x86: $BinX86 -> $targetX86" -ForegroundColor Yellow
Copy-PlatformBinaries -SourceDir $BinX86 -TargetDir $targetX86
# ----------------------------------------------------------
# Step 6: Process appinfo_template.ini
# ----------------------------------------------------------
Write-Step 6 "Generating appinfo.ini from Template"
$templatePath = Join-Path $AppInfoDir "appinfo_template.ini"
$outputPath = Join-Path $AppInfoDir "appinfo.ini"
if (-not (Test-Path $templatePath)) {
throw "Template not found: $templatePath"
}
$content = Get-Content $templatePath -Raw
$content = $content -replace 'xxxVERSIONxxx', $Version
$content = $content -replace 'xxxDEVNAMExxx', $DevName
Set-Content -Path $outputPath -Value $content -NoNewline
Write-Host "Generated: $outputPath" -ForegroundColor Green
Write-Host " PackageVersion = $Version" -ForegroundColor Gray
Write-Host " DisplayVersion = $Version$DevName" -ForegroundColor Gray
Write-Host " Name = Notepad3Portable$DevName" -ForegroundColor Gray
# ----------------------------------------------------------
# Step 7: Generate PortableApps Launcher
# ----------------------------------------------------------
Write-Step 7 "Generating Notepad3Portable.exe Launcher"
if ($SkipLauncherGenerator) {
Write-Host "Skipped (using existing Notepad3Portable.exe)" -ForegroundColor Yellow
}
else {
$LauncherGeneratorPath = Join-Path $PortableAppsDir "PortableApps.comLauncher\PortableApps.comLauncherGenerator.exe"
if (-not (Test-Path $LauncherGeneratorPath)) {
throw "PortableApps.comLauncherGenerator.exe not found: $LauncherGeneratorPath"
}
Write-Host "Generator: $LauncherGeneratorPath" -ForegroundColor Cyan
Write-Host "App Dir: $PortableAppDir" -ForegroundColor Cyan
# Passing the directory as a command-line argument triggers automatic compile mode.
$process = Start-Process -FilePath $LauncherGeneratorPath -ArgumentList "`"$PortableAppDir`"" `
-Wait -PassThru
if ($process.ExitCode -ne 0) {
throw "PortableApps.comLauncherGenerator failed with exit code $($process.ExitCode)"
}
$launcherExe = Join-Path $PortableAppDir "Notepad3Portable.exe"
if (-not (Test-Path $launcherExe)) {
throw "Launcher was not generated: $launcherExe"
}
Write-Host "Generated: $launcherExe" -ForegroundColor Green
}
# ----------------------------------------------------------
# Step 8: Build PortableApps package
# ----------------------------------------------------------
Write-Step 8 "Building PortableApps Package"
if (-not (Test-Path $InstallerPath)) {
throw "PortableApps.comInstaller.exe not found: $InstallerPath"
}
Write-Host "Installer: $InstallerPath" -ForegroundColor Cyan
Write-Host "App Dir: $PortableAppDir" -ForegroundColor Cyan
# Passing the directory as a command-line argument triggers automatic compile mode:
# welcome and options pages are skipped, finish page auto-closes on success.
$process = Start-Process -FilePath $InstallerPath -ArgumentList "`"$PortableAppDir`"" `
-Wait -PassThru
if ($process.ExitCode -ne 0) {
throw "PortableApps.comInstaller failed with exit code $($process.ExitCode)"
}
# Find the generated .paf.exe
$pafPattern = "Notepad3Portable_*.paf.exe"
$pafFiles = Get-ChildItem $PortableAppRoot -Filter $pafPattern | Sort-Object LastWriteTime -Descending
if ($pafFiles.Count -eq 0) {
throw "No .paf.exe output found matching $pafPattern in $PortableAppRoot"
}
$pafFile = $pafFiles[0]
$pafSize = [math]::Round($pafFile.Length / 1MB, 2)
# ----------------------------------------------------------
# Done
# ----------------------------------------------------------
Write-Host ""
Write-Host "=== PortableApps Package Built Successfully! ===" -ForegroundColor Green
Write-Host " Output: $($pafFile.FullName)" -ForegroundColor Green
Write-Host " Size: $pafSize MB" -ForegroundColor Green
Write-Host " Time: $($stopwatch.Elapsed)" -ForegroundColor Cyan
exit 0

View File

@ -731,16 +731,6 @@ int CheckIniFile(LPWSTR lpszFile, LPCWSTR lpszModule)
StringCchCopy(lpszFile, MAX_PATH, tchBuild);
return 1;
}
// Sub directory (.\np3\)
StringCchCopy(tchBuild, COUNTOF(tchBuild), lpszModule);
if (SUCCEEDED(PathCchRemoveFileSpec(tchBuild, COUNTOF(tchBuild)))) {
StringCchCat(tchBuild, COUNTOF(tchBuild), L"\\np3\\");
StringCchCat(tchBuild, COUNTOF(tchBuild), tchFileExpanded);
if (PathIsExistingFile(tchBuild)) {
StringCchCopy(lpszFile, MAX_PATH, tchBuild);
return 1;
}
}
// Application Data (%APPDATA%)
{
PWSTR pszPath = nullptr;

View File

@ -1,23 +1,98 @@
;Full details: https://portableapps.com/manuals/PortableApps.comLauncher/
;This is an example launcher INI that is part of the PortableApps.com Template
;It uses a standard Windows INI format, so any line starting with a semi-colon is treated as a comment
;It is recommended that you use a coding text editor to edit this, preferably one with context highlighting
;If editing with Notepad++, be sure you have turned off the option to add a BOM as it will break the INI
;Full details: http://portableapps.com/manuals/PortableApps.comLauncher/
[Launch]
;This section details how an app is started and where it works
;ProgramExecutable is the EXE to run to start the app relative to the AppNamePortable\App directory
ProgramExecutable=Notepad3\x86\Notepad3.exe
;ProgramExecutable64 is an optional EXE to run if running on Windows 64-bit
ProgramExecutable64=Notepad3\x64\Notepad3.exe
;CommandLineArguments is an optional setting that will cause the above EXE to be launched with this string passed
;CommandLineArguments=-settings=%PAL:DataDir%\
;WorkingDirectory is the directory that will be used when launching which other items will be relative to. Use should be avoided when possible as it will prevent passing multiple relative file locations via command line
;WorkingDirectory=%PAL:AppDir%\AppName
;DirectoryMoveOK indicates whether a directory can be moved to a different path rather than just supporting drive letter changes
DirectoryMoveOK=yes
;SupportsUNC indicates whether an app can run from a Windows UNC path, often referred to as a network path
SupportsUNC=yes
;RunAsAdmin indicates whether an app requires admin rights to run. This should generally be avoided when possible
;Details: http://portableapps.com/manuals/PortableApps.comLauncher/ref/launcher.ini/launch.html#runasadmin
;RunAsAdmin=try
WaitForProgram=false
CleanTemp=false
SingleAppInstance=false
[Activate]
;This section lets the launcher know what functionality needs to be included.
;IMPORTANT: Any changes to this section will require the launcher to be recompiled.
;Registry indicates whether we will be reading or writing to the registry. If not, setting to false will make the launcher slightly smaller and cause it to start slightly faster.
Registry=false
;Java indicates whether the app needs Java to run
;Java=find
;XML indicates whether the launcher will need to read or write to XML paths within settings files of the app. If not, setting to false will make the launcher slightly smaller and cause it to start slightly faster.
XML=false
[Environment]
;This section lets the launcher know what environment variables need to be set. If not needed, this can be removed.
PORTABLEAPPS_DIR=%PAL:PortableAppsDir%
;NOTEPAD3_PORTABLE_PATH=%PAL:AppDir%\App\Notepad3
NOTEPAD3_PORTABLE_SETTINGS=%PAL:DataDir%\settings
[RegistryKeys]
;This section allows you to backup and restore a given key and the keys below it within the registry. Any existing data in the same location will be backed up before the app is run and restored on exit. The portable app's data will be stored in a .reg key with the name at the beginning of each line within the Data directory. It's best to take as little of the registry as possible. In our example, taking the whole ExamplePublisher section isn't necessary because all our app's data is stored within AppName. If we took ExamplePublisher, we might run into problems with other apps from the same publisher.
AppName=HKCU\Software\ExamplePublisher\AppName
;If there is some data in the registry that the app creates but does not need to be saved between sessions of the portable app, it can be handled using a - instead of a name for a .reg file as follows:
;-=HKCU\Software\ExamplePublisher\GarbageData
[RegistryCleanupIfEmpty]
;This section allows you to remove sections of the registry if they are empty when the app exits. In this example, we're removing the app publisher's section if no local apps from the same publisher exit after our portable app exits so we don't leave behind an empty bit of registry.
;1=HKCU\Software\ExamplePublisher
;ENVIRONMENT VARIABLES FOR USE WITH DIRECTORIES AND FILES
;These next sections deal with directory and file handling. For these, environment variable substitutions will apply
;Environment variables: http://portableapps.com/manuals/PortableApps.comLauncher/ref/envsub.html#ref-envsub
[DirectoriesMove]
;This section allows you to configure directories that need to be moved from the Data directory to either the app's directory or to the local machine. Many standard environment variables are supported here including things like APPDATA.
;This first entry will move the contents of AppNamePortable\Data\AppNameConfig to C:\Users\[user]\AppData\Roaming\ExamplePublisher\AppName while the app is running and back when complete. Any existing data will be backed up and restored.
;AppNameConfig=%APPDATA%\Rizonesoft\Notepad3
;This second entry will move the contents of AppNamePortable\Data\AppNamePortableConfig to AppNamePortable\App\AppName while the app is running and back when complete.
;AppNamePortableConfig=%PAL:AppDir%\Notepad3\Config
;This entry indicates that the contents of C:\Users\[user]\AppData\Roaming\ExamplePublisher\GarbageData should be disposed of when the app is done running. Any existing data will be backed up and restored when complete.
;-=%APPDATA%\Rizonesoft\GarbageData
[FilesMove]
;This section allows you to configure directories that need to be moved from the Data directory to either the app's directory or to the local machine. Many standard environment variables are supported here including things like APPDATA.
;This first entry will move the file AppNamePortable\Data\appnameexample.config to C:\Users\[user]\AppData\Roaming\ExamplePublisher while the app is running and back when complete. Any existing data will be backed up and restored.
;appnameexample.config=%APPDATA%\ExamplePublisher
;This second entry will move the file of AppNamePortable\Data\appnameportableexample.config to AppNamePortable\App\AppName while the app is running and back when complete.
;appnameportableexample.config=%PAL:AppDir%\AppName
[DirectoriesCleanupIfEmpty]
;This section allows you to remove directories if they are empty when the app exits. In this example, we are removing the ExamplePublisher directory if it is empty so we don't leave a blank directory behind from the app.
;1=%APPDATA%\Rizonesoft
;FILEWRITE
;These entries allow you to update the paths within configuration and registry files
;The entries use the standard environment variables along with some additional modifiers
;Environment variables: http://portableapps.com/manuals/PortableApps.comLauncher/ref/envsub.html#ref-envsub
;For these examples, we'll update the relative paths in both a standard config file and a .reg file
;FileWrite1 to 3 will update the drive letter, relative path, and full path in a config file
;Note the order from most specific path to least, ensuring we don't change a drive letter alone before a full path
[FileWrite1]
Type=Replace
File=%PAL:DataDir%\settings\Notepad.ini
File=%PAL:DataDir%\settings\Notepad3.ini
Find=%PAL:LastDrive%%PAL:LastPackagePartialDir%
Replace=%PAL:Drive%%PAL:PackagePartialDir%
@ -32,3 +107,64 @@ Type=Replace
File=%PAL:DataDir%\settings\Notepad3.ini
Find=%PAL:LastDrive%\
Replace=%PAL:Drive%\
;FileWrite4 to 6 will update the drive letter, relative path, and full path in a registry file
;Note that we use double backslashes for the paths instead of singles because that is the way a .reg file stores them
;[FileWrite4]
;Type=Replace
;File=%PAL:DataDir%\settings\AppName.reg
;Find=%PAL:LastDrive%%PAL:LastPackagePartialDir:DoubleBackslash%\\
;Replace=%PAL:Drive%%PAL:PackagePartialDir:DoubleBackslash%\\
;[FileWrite5]
;Type=Replace
;File=%PAL:DataDir%\settings\AppName.reg
;Find=%PAL:LastPortableAppsBaseDir:DoubleBackslash%\\
;Replace=%PAL:PortableAppsBaseDir:DoubleBackslash%\\
;[FileWrite6]
;Type=Replace
;File=%PAL:DataDir%\settings\AppName.reg
;Find=%PAL:LastDrive%\\
;Replace=%PAL:Drive%\\
;FileWrite 7 is an example of writing a value directly to a file, to specify a path to plugins for example
;[FileWrite7]
;Type=INI
;File=%PAL:DataDir%\settings\appnameportableexample.config
;Section=Paths
;Key=PluginsPath
;Value=%PAL:AppDir%\AppName\plugins
;Language switching is a bit beyond an example package such as this. The PortableApps.com Launcher does support automatic language switching with the platform but it is not required for portable apps.
;Details: http://portableapps.com/manuals/PortableApps.comLauncher/ref/launcher.ini/language.html
;[Language]
;Base=%PortableApps.comLanguageCode%
;CheckIfExists=%PAL:AppDir%\Languages\%PAL:LanguageCustom%.locale
;DefaultIfNotExists=en
;[LanguageStrings]
;ar-sa=ar
;[LanguageFile]
;Type=INI
;File=%PAL:DataDir%\settings\appnameportableexample.config
;Section=Language
;Key=Language
;Lastly, we'd need to save our changes to the language setting back to the configuration file
;[FileWrite8]
;Type=INI
;File=%PAL:DataDir%\settings\appnameportableexample.config
;Section=Language
;Key=Language
;Value=%PAL:LanguageCustom%

View File

@ -1,8 +1,8 @@
[Format]
Type=PortableAppsFormat
Version=3.5
Version=3.9
[Details]
Name=Notepad3Portable_beta
Name=Notepad3Portable
AppId=Notepad3Portable
BaseAppName=Notepad3
Publisher=Notepad3 Contibutors & Rizonesoft & PortableApps.com
@ -15,17 +15,16 @@ Shareable=true
OpenSource=true
Freeware=true
CommercialUse=true
[Version]
PackageVersion=7.26.314.1
DisplayVersion=7.26.314.1_beta
[SpecialPaths]
Plugins=NONE
[Dependencies]
UsesJava=false
UsesDotNetVersion=false
[Version]
PackageVersion=7.26.404.1
DisplayVersion=7.26.404.1
[Control]
Icons=1
Start=Notepad3Portable.exe
[Associations]
FileTypes=txt,html,htm,xmp,php,asp,css,js,vb,vbs,c,cpp,h,rs,mak,java,pas,inc,bat,diff,ps1,ahk,au3,avs,cmake,iss,latex,lua,nsi,nsh,nfo,tcl,rb
[FileTypeIcons]

View File

@ -1,7 +1,7 @@
;Full details on this file: https://portableapps.com/development/portableapps.com_format#appinfo
[Format]
Type=PortableAppsFormat
Version=3.5
Version=3.9
[Details]
Name=Notepad3PortablexxxDEVNAMExxx
@ -16,31 +16,50 @@ Language=Multilingual
;InstallType=
[License]
;This section includes licensing details on the bundled app.
;Shareable indicates whether an app may be shared from one user to another. Generally true except for commercial apps
Shareable=true
;OpenSource indicates whether an app is open source under an OSI license
OpenSource=true
;Freeware indicates whether an app is freeware and may be used with no charge to the user
Freeware=true
;CommercialUse indicates whether this app may legally be used in a business setting. Some freeware prohibits this
CommercialUse=true
;EULAVersion is the version of the license that comes with the app that the user must agree to before use. This is included as a file EULA.txt within the AppInfo directory. An EULA should *only* be used if the user is required to agree to it before installing. Each time a major change is made to the EULA (not just a formatting change) the version should be increased. Note that open source licenses (GPL, MIT, etc) do not need to be agreed to by the user and should not be included as an EULA.txt.
;EULAVersion=1
[Version]
PackageVersion=xxxVERSIONxxx
DisplayVersion=xxxVERSIONxxxxxxDEVNAMExxx
[SpecialPaths]
Plugins=NONE
[Dependencies]
;This section indicates to the launcher and platform what this app needs to function
;See details at: https://portableapps.com/development/portableapps.com_format#appinfo
;UsesGhostscript=optional
UsesJava=false
UsesDotNetVersion=false
;Requires64bitOS=yes
;RequiresAdmin=no
[Version]
;PackageVersion is used by the installer and the updater. It must be in dotted quad X.X.X.X format for use by Windows. You must ensure that each successive version has a higher package version than the previous or it will not be treated as a newer version by the platform's updater. Generally, the PackageVersion is based on the DisplayVersion. So an app with version 3.5 will have a package version of 3.5.0.0.
PackageVersion=xxxVERSIONxxx
;DisplayVersion is displayed to the user and used in naming the installer
DisplayVersion=xxxVERSIONxxxxxxDEVNAMExxx
[Control]
;This indicates to the platform how many icons a given app should have and how the app should be started. All official apps should generally have a single icon. The only exception is for office suites that include multiple big apps. See LibreOffice Portable for an example.
Icons=1
;Start is the EXE that should be run to start the app
Start=Notepad3Portable.exe
;ExtractIcon=App\Notepad3\x86\Notepad3.exe
;ExtractName=App\Notepad3\x86\Notepad3.exe
;BaseAppID is the app ID used by Windows for taskbar pinning
;BaseAppID=%BASELAUNCHERPATH%\App\Notepad3\x86\Notepad3.exe
;BaseAppID64=%BASELAUNCHERPATH%\App\Notepad3\x64\Notepad3.exe
[Associations]
;This section indicates to the platform which extensions the app can handle and how to start the app
;See details at: https://portableapps.com/development/portableapps.com_format#appinfo
FileTypes=txt,html,htm,xmp,php,asp,css,js,vb,vbs,c,cpp,h,rs,mak,java,pas,inc,bat,diff,ps1,ahk,au3,avs,cmake,iss,latex,lua,nsi,nsh,nfo,tcl,rb
;FileTypeCommandLine=/Open=%1
;FileTypeCommandLine-extension=/OpenExtension=%1
@ -52,7 +71,9 @@ FileTypes=txt,html,htm,xmp,php,asp,css,js,vb,vbs,c,cpp,h,rs,mak,java,pas,inc,bat
;Shell=true
;ShellCommand=/idlist,%I,%L
[FileTypeIcons]
;[FileTypeIcons]
;This section indicates which icons to associate with the file types listed in Associations
;See details at: https://portableapps.com/development/portableapps.com_format#appinfo
;swf=video
;ttp=custom
;qwe=app

View File

@ -5,6 +5,7 @@
SettingsVersion=5
;AnalyzeReliableConfidenceLevel=50
[Settings2]
grepWin.exe=%PORTABLEAPPS_DIR%\grepWinPortable\grepWinPortable.exe
;IMEInteraction=0
;DateTimeFormat= ;(-> <Locale dependent short format>)
;DateTimeLongFormat= ;(-> <Locale dependent long format>)
@ -14,7 +15,6 @@ SettingsVersion=5
;DefaultExtension=txt
;DenyVirtualSpaceAccess=0
;filebrowser.exe=minipath.exe
;grepWin.exe=grepWinNP3.exe
;FileCheckInterval=2000 ;(min: 200[msec] - if equal or less, notify immediately)
;FileWatchingMethod=0 ;(0=both[default], 1=poll-only, 2=push-only)
;FileChangedIndicator=[@]

View File

@ -35,7 +35,7 @@ UCH - (UCH)ARDET is an Encoding Detector Library
========================================================
Current BETA Version 7.26.4µµ.(build_#) (2026-04-µµ)
Current BETA Version 7.26.314.(build_#) (2026-03-14)
========================================================
--------------------------------------------------------
@ -57,7 +57,6 @@ NEW:
CHANGES:
--------------------------------------------------------
[.xxx.x]-
[.04µµ.1]- Migration to original grepWin tooling (remove home brew project).
[.306.1]- Synchronise with current scintilla mirror.
[.306.1]- Update SimpleIni header only lib (to v4.25).
[.306.1]- Major version 6 → 7 for Win10 minimum.
@ -122,7 +121,6 @@ FIXES:
--------------------------------------------------------
REMOVED:
[.xxx.x]-
[.4µµ.1]- Remove grepWinNP3 project from main.
[.306.1]- Remove deprecated Win7 compatibility and UTF-32 detection.
[.303.1]- Remove retired Oniguruma regex Engine (ONI).
[.227.1]- Remove obsolete AppVeyor CI build.

View File

@ -1 +1 @@
"_beta"
""

View File

@ -12,7 +12,7 @@ chcp 65001 >nul 2>&1
::
:: ---------------------------------------------------------------------------------------------------
:: Based on PortableApps.com's Application_Template:
:: (https://downloads.sourceforge.net/portableapps/PortableApps.com_Application_Template_3.4.1.zip)
:: (https://sourceforge.net/projects/portableapps/files/PortableApps.com%20Template/PortableApps.com_Application_Template_3.9.0.zip)
:: ---------------------------------------------------------------------------------------------------
::
:: Prerequisites: (portable) intallation of:
@ -35,6 +35,7 @@ if exist %~d0\PortableApps\PortableApps.comInstaller\ (
if exist %~d0\Rizonesoft\PortableApps\PortableApps\PortableApps.comInstaller\ (
set PORTAPP_ROOT_DIR=%~d0\Rizonesoft\PortableApps\PortableApps
) else (
echo. "Can't find PortableApps Platform!"
goto :END
)
)
@ -49,7 +50,8 @@ call :RESOLVEPATH NP3_BUILD_SCHEMES_DIR %SCRIPT_DIR%..\Build\Themes
call :RESOLVEPATH NP3_WIN32_DIR %SCRIPT_DIR%..\Bin\Release_x86_v145
call :RESOLVEPATH NP3_X64_DIR %SCRIPT_DIR%..\Bin\Release_x64_v145
call :RESOLVEPATH GREPWIN_DIR %SCRIPT_DIR%..\grepWin
rem - We will rely on PortableApps Platform installed grepWinPortable
rem ~ call :RESOLVEPATH GREPWIN_DIR %SCRIPT_DIR%..\grepWin
call :RESOLVEPATH NP3_PORTAPP_DIR %SCRIPT_DIR%Notepad3Portable
call :RESOLVEPATH NP3_PORTAPP_INFO %NP3_PORTAPP_DIR%\App\AppInfo\appinfo
@ -91,9 +93,9 @@ if exist "%NP3_PORTAPP_DIR%\App\Notepad3\x86\lng" rmdir "%NP3_PORTAPP_DIR%\App\N
if exist "%NP3_PORTAPP_DIR%\App\Notepad3\x64\lng" rmdir "%NP3_PORTAPP_DIR%\App\Notepad3\x64\lng" /S /Q
if exist "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin" rmdir "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin" /S /Q
if exist "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin" rmdir "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin" /S /Q
rem - We will rely on PortableApps Platform installed grepWinPortable
rem ~ if exist "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin" rmdir "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin" /S /Q
rem ~if exist "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin" rmdir "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin" /S /Q
if not exist "%NP3_PORTAPP_DIR%\App\DefaultData\settings\" (
mkdir "%NP3_PORTAPP_DIR%\App\DefaultData\settings\"
@ -136,7 +138,7 @@ copy /B "%NP3_WIN32_DIR%\minipath.exe" /B "%NP3_PORTAPP_DIR%\App\Notepad3\x86\"
copy /B "%NP3_X64_DIR%\minipath.exe" /B "%NP3_PORTAPP_DIR%\App\Notepad3\x64\" /Y /V
:: Copy all current ".ini" files
copy "%NP3_DISTRIB_DIR%\Notepad3.ini" "%NP3_PORTAPP_DIR%\App\DefaultData\settings\Notepad3.ini" /Y /V
copy "%NP3_DISTRIB_DIR%\Notepad3_pap.ini" "%NP3_PORTAPP_DIR%\App\DefaultData\settings\Notepad3.ini" /Y /V
copy "%NP3_DISTRIB_DIR%\minipath.ini" "%NP3_PORTAPP_DIR%\App\DefaultData\settings\minipath.ini" /Y /V
:: Copy all current "Themes" files
@ -158,20 +160,20 @@ for /d %%d in (%NP3_LANGUAGE_SET%) do (
copy /B "%NP3_X64_DIR%\lng\np3lng.dll" /B "%NP3_PORTAPP_DIR%\App\Notepad3\x64\lng\" /Y /V
copy /B "%NP3_X64_DIR%\lng\mplng.dll" /B "%NP3_PORTAPP_DIR%\App\Notepad3\x64\lng\" /Y /V
:: Copy all current "grepWin" and "np3encrypt" files
if not exist "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin\" mkdir "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin"
copy "%GREPWIN_DIR%\portables\grepWin-x86_portable.exe" "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin\grepWin-x86_portable.exe" /Y /V
copy "%GREPWIN_DIR%\portables\LICENSE.txt" "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin\LICENSE.txt" /Y /V
copy "%GREPWIN_DIR%\portables\website.url" "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin\website.url" /Y /V
copy "%GREPWIN_DIR%\translations\*.lang" "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin\*.lang" /Y /V
copy /B "%NP3_WIN32_DIR%\np3encrypt.exe" /B "%NP3_PORTAPP_DIR%\App\Notepad3\x86\" /Y /V
if not exist "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin\" mkdir "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin"
copy "%GREPWIN_DIR%\portables\grepWin-x64_portable.exe" "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin\grepWin-64_portable.exe" /Y /V
copy "%GREPWIN_DIR%\portables\LICENSE.txt" "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin\LICENSE.txt" /Y /V
copy "%GREPWIN_DIR%\portables\website.url" "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin\website.url" /Y /V
copy "%GREPWIN_DIR%\translations\*.lang" "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin\*.lang" /Y /V
copy /B "%NP3_X64_DIR%\np3encrypt.exe" /B "%NP3_PORTAPP_DIR%\App\Notepad3\x64\" /Y /V
:: Don't copy np3encrypt or grepWin
rem ~if not exist "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin\" mkdir "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin"
rem ~copy "%GREPWIN_DIR%\portables\grepWin-x86_portable.exe" "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin\grepWin-x86_portable.exe" /Y /V
rem ~copy "%GREPWIN_DIR%\portables\LICENSE.txt" "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin\LICENSE.txt" /Y /V
rem ~copy "%GREPWIN_DIR%\portables\website.url" "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin\website.url" /Y /V
rem ~copy "%GREPWIN_DIR%\translations\*.lang" "%NP3_PORTAPP_DIR%\App\Notepad3\x86\grepWin\*.lang" /Y /V
rem ~copy /B "%NP3_WIN32_DIR%\np3encrypt.exe" /B "%NP3_PORTAPP_DIR%\App\Notepad3\x86\" /Y /V
rem ~
rem ~if not exist "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin\" mkdir "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin"
rem ~copy "%GREPWIN_DIR%\portables\grepWin-x64_portable.exe" "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin\grepWin-64_portable.exe" /Y /V
rem ~copy "%GREPWIN_DIR%\portables\LICENSE.txt" "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin\LICENSE.txt" /Y /V
rem ~copy "%GREPWIN_DIR%\portables\website.url" "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin\website.url" /Y /V
rem ~copy "%GREPWIN_DIR%\translations\*.lang" "%NP3_PORTAPP_DIR%\App\Notepad3\x64\grepWin\*.lang" /Y /V
rem ~copy /B "%NP3_X64_DIR%\np3encrypt.exe" /B "%NP3_PORTAPP_DIR%\App\Notepad3\x64\" /Y /V
:: ---------------------------------------------------------------------------------------------------
@ -203,7 +205,7 @@ set Notepad3Portable.paf.exe=%SCRIPT_DIR%Notepad3Portable_%VERSION%%DEVNAME%.paf
if exist %Notepad3Portable.paf.exe% (
copy /B %Notepad3Portable.paf.exe% %Notepad3Portable.paf.exe%.7z /Y /V
) else (
echo. "Notepad3Portable_x.xx.xxx.x_yyyy.paf.exe" does not exist
echo. "Notepad3Portable_x.xx.xxx.x_yyyy.paf.exe" does not exist!
)
:: ===================================================================================================

View File

@ -922,20 +922,6 @@ static bool _CheckAndSetIniFile(HPATHL hpth_in_out)
const wchar_t* const wchMore = Path_IsNotEmpty(hpth_in_out) ? Path_FindFileName(hpth_in_out) : SAPPNAME L".ini";
if (!result) {
// sub directory (.\np3\)
HPATHL hmodpth = Path_Allocate(NULL);
Path_GetAppDirectory(hmodpth);
Path_Append(hmodpth, L"./np3/");
Path_Append(hmodpth, wchMore);
result = Path_IsExistingFile(hmodpth);
if (result) {
Path_Swap(hPathEx, hmodpth);
result = true;
}
Path_Release(hmodpth);
}
if (!result) {
// Application Data (%APPDATA%)
HPATHL happdata = Path_Allocate(NULL);