Merge pull request #6545 from menloresearch/chore/standardize-build-windows
chore: use default nsis template
This commit is contained in:
commit
c46e13b8b1
@ -49,8 +49,6 @@ jobs:
|
|||||||
# Update tauri.conf.json
|
# Update tauri.conf.json
|
||||||
jq --arg version "${{ inputs.new_version }}" '.version = $version | .bundle.createUpdaterArtifacts = false' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
jq --arg version "${{ inputs.new_version }}" '.version = $version | .bundle.createUpdaterArtifacts = false' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
||||||
jq '.bundle.windows.nsis.template = "tauri.bundle.windows.nsis.template"' ./src-tauri/tauri.windows.conf.json > /tmp/tauri.windows.conf.json
|
|
||||||
mv /tmp/tauri.windows.conf.json ./src-tauri/tauri.windows.conf.json
|
|
||||||
jq '.bundle.windows.signCommand = "echo External build - skipping signature: %1"' ./src-tauri/tauri.windows.conf.json > /tmp/tauri.windows.conf.json
|
jq '.bundle.windows.signCommand = "echo External build - skipping signature: %1"' ./src-tauri/tauri.windows.conf.json > /tmp/tauri.windows.conf.json
|
||||||
mv /tmp/tauri.windows.conf.json ./src-tauri/tauri.windows.conf.json
|
mv /tmp/tauri.windows.conf.json ./src-tauri/tauri.windows.conf.json
|
||||||
jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json
|
jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json
|
||||||
@ -59,58 +57,30 @@ jobs:
|
|||||||
ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}"
|
ctoml ./src-tauri/Cargo.toml package.version "${{ inputs.new_version }}"
|
||||||
echo "---------Cargo.toml---------"
|
echo "---------Cargo.toml---------"
|
||||||
cat ./src-tauri/Cargo.toml
|
cat ./src-tauri/Cargo.toml
|
||||||
|
|
||||||
generate_build_version() {
|
|
||||||
### Examble
|
|
||||||
### input 0.5.6 output will be 0.5.6 and 0.5.6.0
|
|
||||||
### input 0.5.6-rc2-beta output will be 0.5.6 and 0.5.6.2
|
|
||||||
### input 0.5.6-1213 output will be 0.5.6 and and 0.5.6.1213
|
|
||||||
local new_version="$1"
|
|
||||||
local base_version
|
|
||||||
local t_value
|
|
||||||
|
|
||||||
# Check if it has a "-"
|
|
||||||
if [[ "$new_version" == *-* ]]; then
|
|
||||||
base_version="${new_version%%-*}" # part before -
|
|
||||||
suffix="${new_version#*-}" # part after -
|
|
||||||
|
|
||||||
# Check if it is rcX-beta
|
|
||||||
if [[ "$suffix" =~ ^rc([0-9]+)-beta$ ]]; then
|
|
||||||
t_value="${BASH_REMATCH[1]}"
|
|
||||||
else
|
|
||||||
t_value="$suffix"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
base_version="$new_version"
|
|
||||||
t_value="0"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Export two values
|
|
||||||
new_base_version="$base_version"
|
|
||||||
new_build_version="${base_version}.${t_value}"
|
|
||||||
}
|
|
||||||
generate_build_version ${{ inputs.new_version }}
|
|
||||||
sed -i "s/jan_version/$new_base_version/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
sed -i "s/jan_build/$new_build_version/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
|
|
||||||
if [ "${{ inputs.channel }}" != "stable" ]; then
|
if [ "${{ inputs.channel }}" != "stable" ]; then
|
||||||
jq '.plugins.updater.endpoints = ["https://delta.jan.ai/${{ inputs.channel }}/latest.json"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
jq '.plugins.updater.endpoints = ["https://delta.jan.ai/${{ inputs.channel }}/latest.json"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
||||||
|
|
||||||
|
# Update product name
|
||||||
|
jq --arg name "Jan-${{ inputs.channel }}" '.productName = $name' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
|
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
||||||
|
|
||||||
chmod +x .github/scripts/rename-tauri-app.sh
|
chmod +x .github/scripts/rename-tauri-app.sh
|
||||||
.github/scripts/rename-tauri-app.sh ./src-tauri/tauri.conf.json ${{ inputs.channel }}
|
.github/scripts/rename-tauri-app.sh ./src-tauri/tauri.conf.json ${{ inputs.channel }}
|
||||||
|
|
||||||
|
echo "---------tauri.conf.json---------"
|
||||||
|
cat ./src-tauri/tauri.conf.json
|
||||||
|
|
||||||
|
# Update Cargo.toml
|
||||||
ctoml ./src-tauri/Cargo.toml package.name "Jan-${{ inputs.channel }}"
|
ctoml ./src-tauri/Cargo.toml package.name "Jan-${{ inputs.channel }}"
|
||||||
ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools"
|
ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools"
|
||||||
|
echo "------------------"
|
||||||
|
cat ./src-tauri/Cargo.toml
|
||||||
|
|
||||||
chmod +x .github/scripts/rename-workspace.sh
|
chmod +x .github/scripts/rename-workspace.sh
|
||||||
.github/scripts/rename-workspace.sh ./package.json ${{ inputs.channel }}
|
.github/scripts/rename-workspace.sh ./package.json ${{ inputs.channel }}
|
||||||
sed -i "s/jan_productname/Jan-${{ inputs.channel }}/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
cat ./package.json
|
||||||
sed -i "s/jan_mainbinaryname/jan-${{ inputs.channel }}/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
else
|
|
||||||
sed -i "s/jan_productname/Jan/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
sed -i "s/jan_mainbinaryname/jan/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
fi
|
fi
|
||||||
echo "---------nsis.template---------"
|
|
||||||
cat ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
|
|
||||||
- name: Build app
|
- name: Build app
|
||||||
shell: bash
|
shell: bash
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@ -95,8 +95,6 @@ jobs:
|
|||||||
# Update tauri.conf.json
|
# Update tauri.conf.json
|
||||||
jq --arg version "${{ inputs.new_version }}" '.version = $version | .bundle.createUpdaterArtifacts = true' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
jq --arg version "${{ inputs.new_version }}" '.version = $version | .bundle.createUpdaterArtifacts = true' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
||||||
jq '.bundle.windows.nsis.template = "tauri.bundle.windows.nsis.template"' ./src-tauri/tauri.windows.conf.json > /tmp/tauri.windows.conf.json
|
|
||||||
mv /tmp/tauri.windows.conf.json ./src-tauri/tauri.windows.conf.json
|
|
||||||
jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json
|
jq --arg version "${{ inputs.new_version }}" '.version = $version' web-app/package.json > /tmp/package.json
|
||||||
mv /tmp/package.json web-app/package.json
|
mv /tmp/package.json web-app/package.json
|
||||||
|
|
||||||
@ -104,38 +102,12 @@ jobs:
|
|||||||
echo "---------Cargo.toml---------"
|
echo "---------Cargo.toml---------"
|
||||||
cat ./src-tauri/Cargo.toml
|
cat ./src-tauri/Cargo.toml
|
||||||
|
|
||||||
generate_build_version() {
|
# Add sign commands to tauri.windows.conf.json
|
||||||
### Examble
|
jq '.bundle.windows.signCommand = "powershell -ExecutionPolicy Bypass -File ./sign.ps1 %1"' ./src-tauri/tauri.windows.conf.json > /tmp/tauri.windows.conf.json
|
||||||
### input 0.5.6 output will be 0.5.6 and 0.5.6.0
|
mv /tmp/tauri.windows.conf.json ./src-tauri/tauri.windows.conf.json
|
||||||
### input 0.5.6-rc2-beta output will be 0.5.6 and 0.5.6.2
|
|
||||||
### input 0.5.6-1213 output will be 0.5.6 and and 0.5.6.1213
|
|
||||||
local new_version="$1"
|
|
||||||
local base_version
|
|
||||||
local t_value
|
|
||||||
|
|
||||||
# Check if it has a "-"
|
echo "---------tauri.windows.conf.json---------"
|
||||||
if [[ "$new_version" == *-* ]]; then
|
cat ./src-tauri/tauri.windows.conf.json
|
||||||
base_version="${new_version%%-*}" # part before -
|
|
||||||
suffix="${new_version#*-}" # part after -
|
|
||||||
|
|
||||||
# Check if it is rcX-beta
|
|
||||||
if [[ "$suffix" =~ ^rc([0-9]+)-beta$ ]]; then
|
|
||||||
t_value="${BASH_REMATCH[1]}"
|
|
||||||
else
|
|
||||||
t_value="$suffix"
|
|
||||||
fi
|
|
||||||
else
|
|
||||||
base_version="$new_version"
|
|
||||||
t_value="0"
|
|
||||||
fi
|
|
||||||
|
|
||||||
# Export two values
|
|
||||||
new_base_version="$base_version"
|
|
||||||
new_build_version="${base_version}.${t_value}"
|
|
||||||
}
|
|
||||||
generate_build_version ${{ inputs.new_version }}
|
|
||||||
sed -i "s/jan_version/$new_base_version/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
sed -i "s/jan_build/$new_build_version/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
|
|
||||||
# Temporarily enable devtool on prod build
|
# Temporarily enable devtool on prod build
|
||||||
ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools"
|
ctoml ./src-tauri/Cargo.toml dependencies.tauri.features[] "devtools"
|
||||||
@ -143,9 +115,14 @@ jobs:
|
|||||||
|
|
||||||
# Change app name for beta and nightly builds
|
# Change app name for beta and nightly builds
|
||||||
if [ "${{ inputs.channel }}" != "stable" ]; then
|
if [ "${{ inputs.channel }}" != "stable" ]; then
|
||||||
|
# Update updater endpoint
|
||||||
jq '.plugins.updater.endpoints = ["https://delta.jan.ai/${{ inputs.channel }}/latest.json"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
jq '.plugins.updater.endpoints = ["https://delta.jan.ai/${{ inputs.channel }}/latest.json"]' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
||||||
|
|
||||||
|
# Update product name
|
||||||
|
jq --arg name "Jan-${{ inputs.channel }}" '.productName = $name' ./src-tauri/tauri.conf.json > /tmp/tauri.conf.json
|
||||||
|
mv /tmp/tauri.conf.json ./src-tauri/tauri.conf.json
|
||||||
|
|
||||||
chmod +x .github/scripts/rename-tauri-app.sh
|
chmod +x .github/scripts/rename-tauri-app.sh
|
||||||
.github/scripts/rename-tauri-app.sh ./src-tauri/tauri.conf.json ${{ inputs.channel }}
|
.github/scripts/rename-tauri-app.sh ./src-tauri/tauri.conf.json ${{ inputs.channel }}
|
||||||
|
|
||||||
@ -161,15 +138,7 @@ jobs:
|
|||||||
chmod +x .github/scripts/rename-workspace.sh
|
chmod +x .github/scripts/rename-workspace.sh
|
||||||
.github/scripts/rename-workspace.sh ./package.json ${{ inputs.channel }}
|
.github/scripts/rename-workspace.sh ./package.json ${{ inputs.channel }}
|
||||||
cat ./package.json
|
cat ./package.json
|
||||||
|
|
||||||
sed -i "s/jan_productname/Jan-${{ inputs.channel }}/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
sed -i "s/jan_mainbinaryname/jan-${{ inputs.channel }}/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
else
|
|
||||||
sed -i "s/jan_productname/Jan/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
sed -i "s/jan_mainbinaryname/jan/g" ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
fi
|
fi
|
||||||
echo "---------nsis.template---------"
|
|
||||||
cat ./src-tauri/tauri.bundle.windows.nsis.template
|
|
||||||
|
|
||||||
- name: Install AzureSignTool
|
- name: Install AzureSignTool
|
||||||
run: |
|
run: |
|
||||||
|
|||||||
@ -77,6 +77,25 @@ async function main() {
|
|||||||
// Expect EEXIST error
|
// Expect EEXIST error
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// Download VC++ Redistributable 17
|
||||||
|
if (platform == 'win32') {
|
||||||
|
const vcFilename = 'vc_redist.x64.exe'
|
||||||
|
const vcUrl = 'https://aka.ms/vs/17/release/vc_redist.x64.exe'
|
||||||
|
|
||||||
|
console.log(`Downloading VC++ Redistributable...`)
|
||||||
|
const vcSavePath = path.join(tempDir, vcFilename)
|
||||||
|
if (!fs.existsSync(vcSavePath)) {
|
||||||
|
await download(vcUrl, vcSavePath)
|
||||||
|
}
|
||||||
|
|
||||||
|
// copy to tauri resources
|
||||||
|
try {
|
||||||
|
copySync(vcSavePath, libDir)
|
||||||
|
} catch (err) {
|
||||||
|
// Expect EEXIST error
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
console.log('Downloads completed.')
|
console.log('Downloads completed.')
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
File diff suppressed because it is too large
Load Diff
@ -1,10 +1,13 @@
|
|||||||
{
|
{
|
||||||
"bundle": {
|
"bundle": {
|
||||||
"targets": ["nsis"],
|
"targets": ["nsis"],
|
||||||
"resources": ["resources/pre-install/**/*"],
|
"resources": ["resources/pre-install/**/*", "resources/lib/vulkan-1.dll", "resources/lib/vc_redist.x64.exe", "resources/LICENSE"],
|
||||||
"externalBin": ["resources/bin/bun", "resources/bin/uv"],
|
"externalBin": ["resources/bin/bun", "resources/bin/uv"],
|
||||||
"windows": {
|
"windows": {
|
||||||
"signCommand": "powershell -ExecutionPolicy Bypass -File ./sign.ps1 %1",
|
"nsis": {
|
||||||
|
"installerHooks": "./windows/hooks.nsh",
|
||||||
|
"installerIcon": "icons/icon.ico"
|
||||||
|
},
|
||||||
"webviewInstallMode": {
|
"webviewInstallMode": {
|
||||||
"silent": true,
|
"silent": true,
|
||||||
"type": "downloadBootstrapper"
|
"type": "downloadBootstrapper"
|
||||||
|
|||||||
59
src-tauri/windows/hooks.nsh
Normal file
59
src-tauri/windows/hooks.nsh
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
!macro NSIS_HOOK_POSTINSTALL
|
||||||
|
; Check if Visual C++ Redistributable is already installed
|
||||||
|
ReadRegStr $0 HKLM "SOFTWARE\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" "Version"
|
||||||
|
${If} $0 == ""
|
||||||
|
; Try alternative registry location
|
||||||
|
ReadRegStr $0 HKLM "SOFTWARE\WOW6432Node\Microsoft\VisualStudio\14.0\VC\Runtimes\x64" "Version"
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
${If} $0 == ""
|
||||||
|
; VC++ Redistributable not found, need to install
|
||||||
|
DetailPrint "Visual C++ Redistributable not found, installing from bundled file..."
|
||||||
|
|
||||||
|
; Install from bundled EXE if not installed
|
||||||
|
${If} ${FileExists} "$INSTDIR\resources\lib\vc_redist.x64.exe"
|
||||||
|
DetailPrint "Installing Visual C++ Redistributable..."
|
||||||
|
; Copy to TEMP folder and then execute installer
|
||||||
|
CopyFiles "$INSTDIR\resources\lib\vc_redist.x64.exe" "$TEMP\vc_redist.x64.exe"
|
||||||
|
ExecWait '"$TEMP\vc_redist.x64.exe" /quiet /norestart' $1
|
||||||
|
|
||||||
|
; Check whether installation process exited successfully (code 0) or not
|
||||||
|
${If} $1 == 0
|
||||||
|
DetailPrint "Visual C++ Redistributable installed successfully"
|
||||||
|
${ElseIf} $1 == 1638
|
||||||
|
DetailPrint "Visual C++ Redistributable already installed (newer version)"
|
||||||
|
${ElseIf} $1 == 3010
|
||||||
|
DetailPrint "Visual C++ Redistributable installed successfully (restart required)"
|
||||||
|
${Else}
|
||||||
|
DetailPrint "Visual C++ installation failed with exit code: $1"
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; Clean up setup files from TEMP and your installed app
|
||||||
|
Delete "$TEMP\vc_redist.x64.exe"
|
||||||
|
Delete "$INSTDIR\resources\lib\vc_redist.x64.exe"
|
||||||
|
${Else}
|
||||||
|
DetailPrint "Visual C++ Redistributable not found at expected location: $INSTDIR\resources\lib\vc_redist.x64.exe"
|
||||||
|
${EndIf}
|
||||||
|
${Else}
|
||||||
|
DetailPrint "Visual C++ Redistributable already installed (version: $0)"
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; ---- Copy LICENSE to install root ----
|
||||||
|
${If} ${FileExists} "$INSTDIR\resources\LICENSE"
|
||||||
|
CopyFiles /SILENT "$INSTDIR\resources\LICENSE" "$INSTDIR\LICENSE"
|
||||||
|
DetailPrint "Copied LICENSE to install root"
|
||||||
|
${EndIf}
|
||||||
|
|
||||||
|
; ---- Copy vulkan-1.dll to install root ----
|
||||||
|
${If} ${FileExists} "$INSTDIR\resources\lib\vulkan-1.dll"
|
||||||
|
CopyFiles /SILENT "$INSTDIR\resources\lib\vulkan-1.dll" "$INSTDIR\vulkan-1.dll"
|
||||||
|
DetailPrint "Copied vulkan-1.dll to install root"
|
||||||
|
|
||||||
|
; Optional cleanup - remove from resources folder
|
||||||
|
Delete "$INSTDIR\resources\lib\vulkan-1.dll"
|
||||||
|
; Only remove the lib directory if it's empty after removing both files
|
||||||
|
RMDir "$INSTDIR\resources\lib"
|
||||||
|
${Else}
|
||||||
|
DetailPrint "vulkan-1.dll not found at expected location: $INSTDIR\resources\lib\vulkan-1.dll"
|
||||||
|
${EndIf}
|
||||||
|
!macroend
|
||||||
Loading…
x
Reference in New Issue
Block a user