Merge pull request #339 from Tlntin/master

Fixup: After changing the url/package name information in the source code, batch packaging fails(Windows).
This commit is contained in:
Tlntin
2023-03-08 16:04:22 +08:00
committed by GitHub
6 changed files with 131 additions and 109 deletions

View File

@@ -77,6 +77,7 @@ jobs:
- name: build for windows
if: matrix.os == 'windows-latest'
shell: pwsh
run: |
npm run build:all-windows

View File

@@ -74,9 +74,10 @@ jobs:
- name: build for windows
if: matrix.os == 'windows-latest'
shell: pwsh
run: |
npm run build:all-windows
- name: Upload files
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

View File

@@ -36,7 +36,7 @@
"build": "npm run tauri build --release",
"build:mac": "npm run tauri build -- --target universal-apple-darwin",
"build:all-unix": "chmod +x ./script/build.sh && ./script/build.sh",
"build:all-windows": ".\\script\\build.bat",
"build:all-windows": "pwsh ./script/build.ps1",
"tauri": "tauri",
"cli": "rollup -c rollup.config.js --watch",
"cli:build": "cross-env NODE_ENV=production rollup -c rollup.config.js",

103
script/build.bat vendored
View File

@@ -1,103 +0,0 @@
@echo off
chcp 65001
if not exist node_modules (
call npm i
)
if not exist output (
mkdir output
)
if not exist output\windows (
mkdir output\windows
)
echo.
echo =======================
echo "build for windows"
echo =======================
echo.
:: total package number
set /A index=1
for /f %%a in (' find /c /v "" ^<"app.csv" ') do set /A total=%%a
:: ignore first header line
set /A total=total-1
set old_name=weread
set old_title=WeRead
set old_zh_name=微信阅读
set old_url=https://weread.qq.com/
:: set init name, we will recovery code to init when build finish.
set init_name=%old_name%
set init_title=%old_title%
set init_zh_name=%old_zh_name%
set init_url=%old_url%
:: for windows, we need replace package name to title
:: .\script\sd.exe "\"productName\": \"weread\"" "\"productName\": \"WeRead\"" src-tauri\tauri.conf.json
for /f "skip=1 tokens=1-4 delims=," %%i in (app.csv) do (
setlocal enabledelayedexpansion
set name=%%i
set title=%%j
set name_zh=%%k
set url=%%l
@echo on
::echo name is !name! !name_zh! !url!
:: replace url
.\script\sd.exe -s !old_url! !url! src-tauri\tauri.conf.json
::replace pacakge name
.\script\sd.exe -s !old_title! !title! src-tauri\tauri.conf.json
.\script\sd.exe -s !old_name! !name! src-tauri\tauri.windows.conf.json
if not exist src-tauri\png\!name!_32.ico (
copy src-tauri\png\icon_32.ico src-tauri\png\!name!_32.ico
)
if not exist src-tauri\png\!name!_256.ico (
copy src-tauri\png\icon_256.ico src-tauri\png\!name!_256.ico
)
echo.
::update package info
set old_zh_name=!name_zh!
set old_name=!name!
set old_title=!title!
set old_url=!url!
::build package
echo building package !index!/!total!
echo package name is !name! !name_zh!
echo npm run build:windows
@echo off
call npm run tauri build -- --target x86_64-pc-windows-msvc
move src-tauri\target\x86_64-pc-windows-msvc\release\bundle\msi\*.msi output\windows\!title!_x64.msi
::rm cache
del /q /f /s src-tauri\target\x86_64-pc-windows-msvc\release\*.exe
del /q /f /s src-tauri\target\x86_64-pc-windows-msvc\release\resources\*.ico
del /q /f /s src-tauri\target\x86_64-pc-windows-msvc\release\png\*.ico
del /q /f /s src-tauri\target\x86_64-pc-windows-msvc\release\wix\*.*
del /q /f /s src-tauri\target\x86_64-pc-windows-msvc\release\app.*
rd /s /q src-tauri\target\x86_64-pc-windows-msvc\release\resources
rd /s /q src-tauri\target\x86_64-pc-windows-msvc\release\png
rd /s /q src-tauri\target\x86_64-pc-windows-msvc\release\wix
@echo on
echo package build success!
echo.
echo.
set /A index=index+1
@echo off
)
:: for windows, we need replace package name to lower again
:: .\script\sd.exe "\"productName\": \"WeRead\"" "\"productName\": \"weread\"" src-tauri\tauri.conf.json
echo "output dir is output\windows"
::recovery code
.\script\sd.exe -s %url% %init_url% src-tauri\tauri.conf.json
.\script\sd.exe -s %title% %init_title% src-tauri\tauri.conf.json
.\script\sd.exe -s %name% %init_name% src-tauri\tauri.windows.conf.json

126
script/build.ps1 vendored Normal file
View File

@@ -0,0 +1,126 @@
chcp 65001 | Out-Null
if (-not (Test-Path node_modules)) {
npm i
}
if (-not (Test-Path output)) {
New-Item -ItemType Directory -Path output
}
if (-not (Test-Path output\windows)) {
New-Item -ItemType Directory -Path output\windows
} else {
Remove-Item output\windows -Recurse -Force
New-Item -ItemType Directory -Path output\windows
}
Write-Host "`n======================="
Write-Host "build for windows"
Write-Host "make ture powershell == 7.2.10"
Write-Host "powershell 7.2.10 download url: https://github.com/PowerShell/PowerShell/releases/tag/v7.2.10"
Write-Host "Powershell info in your localhost "
$PSVersionTable
Write-Host "=======================`n"
$identifier_prefix = "com.tw93"
# total package number
$index = 1
$total = (Get-Content ./app.csv | Measure-Object -Line).Lines
$common_conf_path = "src-tauri/tauri.conf.json"
$windows_conf_path = "src-tauri/tauri.windows.conf.json"
# ignore first header line
$total = $total - 1
# for windows, we need replace package name to title
ForEach ($line in (Get-Content -Path .\app.csv | Select-Object -Skip 1)) {
$name, $title, $name_zh, $url = $line.Split(",")
Write-Host "building package ${index}/${total}"
Write-Host "package name is ${name} ${name_zh}"
Write-Host "=========================="
Write-Host "building Args is:"
Write-Host "name = ${name}"
Write-Host "title = ${title}"
Write-Host "name_zh = ${name_zh}"
Write-Host "url = ${url}"
Write-Host "=========================="
# -- replace url --
# clear url with regex
(Get-Content -Path $common_conf_path -Raw) -replace '"url":\s*"[^"]*"', '"url": ""' | Set-Content -Path $common_conf_path
# replace url with no regex
(Get-Content -Path $common_conf_path -Raw) | ForEach-Object { $_.Replace('"url": ""', "`"url`": `"${url}`"") } | Set-Content $common_conf_path
# replace package name
# clear package_name with regex
(Get-Content -Path $common_conf_path -Raw) -replace '"productName":\s*"[^"]*"', '"productName": ""' | Set-Content -Path $common_conf_path
# replace package_name with no regex
(Get-Content -Path $common_conf_path -Raw) | ForEach-Object { $_.Replace('"productName": ""', "`"productName`": `"${title}`"") } | Set-Content $common_conf_path
# -- replace icon --
# clear icon path with regex
(Get-Content -Path $windows_conf_path -Raw) -replace '(?s)"icon":\s*\[[^\]]*\]', '"icon": []' | Set-Content -Path $windows_conf_path
# replace icon path with no regex
(Get-Content -Path $windows_conf_path -Raw) | ForEach-Object { $_.Replace('"icon": []', "`"icon`": [`"png/${name}_256.ico`", `"png/${name}_32.ico`"]") } | Set-Content $windows_conf_path
# -- replace identifier --
# clear identifier with regex
(Get-Content -Path $windows_conf_path -Raw) -replace '"identifier":\s*"[^"]*"', '"identifier": ""' | Set-Content -Path $windows_conf_path
# -- replace identifier with no regex --
(Get-Content -Path $windows_conf_path -Raw) | ForEach-Object { $_.Replace('"identifier": ""', "`"identifier`": `"${identifier_prefix}.${name}`"") } | Set-Content $windows_conf_path
# -- replace icon resources --
# clear resources with regex
(Get-Content -Path $windows_conf_path -Raw) -replace '(?s)"resources":\s*\[[^\]]*\]', '"resources": []' | Set-Content -Path $windows_conf_path
# replace resources with no regex
(Get-Content -Path $windows_conf_path -Raw) | ForEach-Object { $_.Replace('"resources": []', "`"resources`": [`"png/${name}_32.ico`"]") } | Set-Content $windows_conf_path
if (-not (Test-Path "src-tauri\png\${name}_32.ico")) {
Copy-Item "src-tauri\png\icon_32.ico" "src-tauri\png\${name}_32.ico"
}
if (-not (Test-Path "src-tauri\png\${name}_256.ico")) {
Copy-Item "src-tauri\png\icon_256.ico" "src-tauri\png\${name}_256.ico"
}
# build package
Write-Host "npm run build:windows"
npm run tauri build -- --target x86_64-pc-windows-msvc
Move-Item -Path "src-tauri\target\x86_64-pc-windows-msvc\release\bundle\msi\*.msi" -Destination "output\windows\${title}_x64.msi"
#rm cache
Remove-Item -Path "src-tauri\target\x86_64-pc-windows-msvc\release\*.exe" -Recurse -Force
Remove-Item -Path "src-tauri\target\x86_64-pc-windows-msvc\release\resources\*.ico" -Recurse -Force
Remove-Item -Path "src-tauri\target\x86_64-pc-windows-msvc\release\png\*.ico" -Recurse -Force
Remove-Item -Path "src-tauri\target\x86_64-pc-windows-msvc\release\wix\*.*" -Recurse -Force
Remove-Item -Path "src-tauri\target\x86_64-pc-windows-msvc\release\app.*" -Force
Remove-Item -Path "src-tauri\target\x86_64-pc-windows-msvc\release\resources" -Recurse -Force
Write-Host "package build success!"
Write-Host ""
$index++
# strip blank line for common_conf_path
$lines = Get-Content ${common_conf_path}
$lastNonEmptyLineIndex = ($lines.Count - 1)
while ($lastNonEmptyLineIndex -ge 0 -and -not $lines[$lastNonEmptyLineIndex].Trim()) {
$lastNonEmptyLineIndex--
}
if ($lastNonEmptyLineIndex -lt ($lines.Count - 1)) {
$lines = $lines[0..$lastNonEmptyLineIndex]
}
Set-Content -Path ${common_conf_path} -Value $lines
# strip blank line for windows conf_path
$lines = Get-Content ${windows_conf_path}
$lastNonEmptyLineIndex = ($lines.Count - 1)
while ($lastNonEmptyLineIndex -ge 0 -and -not $lines[$lastNonEmptyLineIndex].Trim()) {
$lastNonEmptyLineIndex--
}
if ($lastNonEmptyLineIndex -lt ($lines.Count - 1)) {
$lines = $lines[0..$lastNonEmptyLineIndex]
}
Set-Content -Path ${windows_conf_path} -Value $lines
}
Write-Host "output dir is output\windows"

View File

@@ -1,10 +1,7 @@
{
"tauri": {
"bundle": {
"icon": [
"png/weread_256.ico",
"png/weread_32.ico"
],
"icon": ["png/weread_256.ico", "png/weread_32.ico"],
"identifier": "com.tw93.weread",
"active": true,
"category": "DeveloperTool",