From 8f99096bfb3b7d84dfcd0e1fd2a1e1c0057671e5 Mon Sep 17 00:00:00 2001 From: alwaysmesmerizingyou Date: Sat, 22 Aug 2026 21:36:42 -0700 Subject: [PATCH] place WebView2Loader in root resources to guarantee NSIS extraction alongside executable --- package.json | 4 +-- release.js | 59 +++++++++++++++++++++++++++++++++++++-- src-tauri/Cargo.lock | 2 +- src-tauri/Cargo.toml | 2 +- src-tauri/tauri.conf.json | 5 ++-- 5 files changed, 63 insertions(+), 9 deletions(-) diff --git a/package.json b/package.json index 2326375..7eee09f 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "vyla-home", - "version": "1.1.1", + "version": "1.1.2", "description": "Vyla Home Desktop App Launcher", "main": "main.js", "scripts": { @@ -54,4 +54,4 @@ "installerHeaderIcon": "build/icon.ico" } } -} \ No newline at end of file +} diff --git a/release.js b/release.js index 1883126..391cfeb 100644 --- a/release.js +++ b/release.js @@ -156,10 +156,10 @@ async function main() { console.log('Ensuring bundled Node.js runtime...'); await ensureBundledNode(); - console.log('Compiling Windows Tauri installer locally...'); + await ensureWebView2Loader(); + execSync('npm run build', { - stdio: 'inherit', - env: Object.assign({}, process.env, { WEBVIEW2_STATIC_LIB: '1' }) + stdio: 'inherit' }); const nsisDir = path.join(__dirname, 'src-tauri/target/release/bundle/nsis'); @@ -238,6 +238,59 @@ function ensureBundledNode() { }); } +function ensureWebView2Loader() { + const releaseDir = path.join(__dirname, 'src-tauri', 'target', 'release'); + const rootDllPath = path.join(__dirname, 'src-tauri', 'WebView2Loader.dll'); + fs.mkdirSync(releaseDir, { recursive: true }); + + const targetDllPath = path.join(releaseDir, 'WebView2Loader.dll'); + + if (fs.existsSync(rootDllPath) && fs.existsSync(targetDllPath)) { + return Promise.resolve(); + } + + const AdmZip = require('adm-zip'); + const tempNupkg = path.join(__dirname, 'temp-wv2.zip'); + const nupkgUrl = 'https://www.nuget.org/api/v2/package/Microsoft.Web.WebView2/1.0.2903.40'; + + return new Promise((resolve, reject) => { + const fileStream = fs.createWriteStream(tempNupkg); + const request = (url) => { + https.get(url, (res) => { + if (res.statusCode === 301 || res.statusCode === 302) { + return request(res.headers.location); + } + res.pipe(fileStream); + fileStream.on('finish', () => { + fileStream.close(); + try { + const zip = new AdmZip(tempNupkg); + const zipEntries = zip.getEntries(); + const dllEntry = zipEntries.find(e => + e.entryName.includes('x64/WebView2Loader.dll') || + e.entryName.includes('x64\\WebView2Loader.dll') + ); + if (dllEntry) { + const buffer = dllEntry.getData(); + fs.writeFileSync(targetDllPath, buffer); + fs.writeFileSync(rootDllPath, buffer); + } + try { fs.unlinkSync(tempNupkg); } catch (_) { } + resolve(); + } catch (e) { + try { fs.unlinkSync(tempNupkg); } catch (_) { } + reject(e); + } + }); + }).on('error', (err) => { + try { fs.unlinkSync(tempNupkg); } catch (_) { } + reject(err); + }); + }; + request(nupkgUrl); + }); +} + main().catch(err => { console.error('Release failed:', err.message); process.exit(1); diff --git a/src-tauri/Cargo.lock b/src-tauri/Cargo.lock index bbb4955..1b4e30f 100644 --- a/src-tauri/Cargo.lock +++ b/src-tauri/Cargo.lock @@ -4222,7 +4222,7 @@ dependencies = [ [[package]] name = "vyla-home" -version = "1.1.1" +version = "1.1.2" dependencies = [ "serde", "serde_json", diff --git a/src-tauri/Cargo.toml b/src-tauri/Cargo.toml index e61ed1e..e2b0a2e 100644 --- a/src-tauri/Cargo.toml +++ b/src-tauri/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "vyla-home" -version = "1.1.1" +version = "1.1.2" description = "Vyla Home Desktop App Launcher" edition = "2021" diff --git a/src-tauri/tauri.conf.json b/src-tauri/tauri.conf.json index 104c935..248f480 100644 --- a/src-tauri/tauri.conf.json +++ b/src-tauri/tauri.conf.json @@ -1,7 +1,7 @@ { "$schema": "https://schema.tauri.app/config/2", "productName": "Vyla Home", - "version": "1.1.1", + "version": "1.1.2", "identifier": "com.vyla.home", "build": { "frontendDist": "../ui" @@ -28,6 +28,7 @@ } }, "resources": [ + "WebView2Loader.dll", "../bin/*", "../main.js", "../service-manager.js", @@ -39,4 +40,4 @@ "../node_modules/**/*" ] } -} +} \ No newline at end of file