diff --git a/package.json b/package.json index 04013f9..2326375 100644 --- a/package.json +++ b/package.json @@ -6,7 +6,7 @@ "scripts": { "dev": "tauri dev", "build:payload": "node build-pipeline.js", - "build": "node -e \"require('child_process').execSync('tauri build', {stdio:'inherit', env:Object.assign({}, process.env, {WEBVIEW2_STATIC_LIB:'1'})})\"", + "build": "tauri build", "release": "node release.js", "release:full": "node release.js --installer" }, @@ -54,4 +54,4 @@ "installerHeaderIcon": "build/icon.ico" } } -} +} \ No newline at end of file diff --git a/release.js b/release.js index 959f683..1883126 100644 --- a/release.js +++ b/release.js @@ -156,12 +156,10 @@ async function main() { console.log('Ensuring bundled Node.js runtime...'); await ensureBundledNode(); - console.log('Ensuring WebView2Loader.dll is present for packaging...'); - await ensureWebView2Loader(); - console.log('Compiling Windows Tauri installer locally...'); execSync('npm run build', { - stdio: 'inherit' + stdio: 'inherit', + env: Object.assign({}, process.env, { WEBVIEW2_STATIC_LIB: '1' }) }); const nsisDir = path.join(__dirname, 'src-tauri/target/release/bundle/nsis'); @@ -240,68 +238,6 @@ function ensureBundledNode() { }); } -function ensureWebView2Loader() { - const releaseDir = path.join(__dirname, 'src-tauri', 'target', 'release'); - const binDir = path.join(__dirname, 'bin'); - fs.mkdirSync(releaseDir, { recursive: true }); - fs.mkdirSync(binDir, { recursive: true }); - - const targetDllPath = path.join(releaseDir, 'WebView2Loader.dll'); - const binDllPath = path.join(binDir, 'WebView2Loader.dll'); - - const buildDir = path.join(__dirname, 'src-tauri', 'target', 'release', 'build'); - if (fs.existsSync(buildDir)) { - const entries = fs.readdirSync(buildDir); - for (const entry of entries) { - if (entry.startsWith('webview2-com-sys-')) { - const candidate = path.join(buildDir, entry, 'out', 'x64', 'WebView2Loader.dll'); - if (fs.existsSync(candidate)) { - fs.copyFileSync(candidate, targetDllPath); - fs.copyFileSync(candidate, binDllPath); - 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.4129.50'; - - 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) { - fs.writeFileSync(targetDllPath, dllEntry.getData()); - fs.writeFileSync(binDllPath, dllEntry.getData()); - } - fs.unlinkSync(tempNupkg); - 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);