-
Notifications
You must be signed in to change notification settings - Fork 36.2k
feat: create versioned resources for windows setup #263998
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Conversation
710c9bd to
4e17ad4
Compare
91e00f4 to
cf47fb0
Compare
📬 CODENOTIFYThe following users are being notified based on files changed in this PR: @bpaseroMatched files:
|
7a269c0 to
acf3335
Compare
e801ef7 to
3831b11
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This pull request implements versioned resources for Windows setup to address issues with updates and file locking. The changes enable VS Code to install resources in version-specific subdirectories on Windows, allowing for safer background updates by avoiding conflicts with running instances.
Key changes:
- Introduced versioned resource folders (based on commit hash) for Windows installations
- Updated installer scripts to handle new folder structure and improved update mechanics
- Added logic to detect and handle session-ending scenarios during updates
- Modified automation tests and build scripts to locate resources in versioned folders
Reviewed Changes
Copilot reviewed 16 out of 21 changed files in this pull request and generated 3 comments.
Show a summary per file
| File | Description |
|---|---|
| test/automation/src/electron.ts | Added findFilePath helper to locate resources in versioned subdirectories |
| src/vs/platform/update/electron-main/updateService.win32.ts | Implemented session-end detection, mutex checking, and versioned resource cleanup |
| src/vs/platform/remoteTunnel/node/remoteTunnelService.ts | Updated bin path calculation for Windows with versioned folders |
| src/vs/code/electron-utility/sharedProcess/contrib/defaultExtensionsInitializer.ts | Updated comment to reflect versioned folder structure |
| resources/win32/bin/code.sh | Added VERSIONFOLDER variable and updated CLI path |
| resources/win32/bin/code.cmd | Updated CLI path to use versioned folder |
| build/win32/explorer-dll-fetcher.ts | Updated explorer DLL version |
| build/win32/code.iss | Major updates to Inno Setup script for versioned resources and improved update handling |
| build/win32/Cargo.toml | Bumped inno_updater version to 0.17.0 |
| build/gulpfile.vscode.win32.js | Added versioned resources folder to build configuration |
| build/gulpfile.vscode.js | Integrated versioned resources throughout packaging process |
| build/checksums/explorer-dll.txt | Updated checksums for new explorer DLL version |
| build/azure-pipelines/win32/steps/product-build-win32-test.yml | Updated to dynamically find product.json in versioned folders |
| build/azure-pipelines/win32/steps/product-build-win32-compile.yml | Updated to locate resources dynamically and fixed archive naming |
| build/azure-pipelines/win32/codesign.ts | Removed version from archive path |
| .npmrc | Updated Electron build ID |
| // appRoot = C:\Users\<name>\AppData\Local\Programs\Microsoft VS Code Insiders\resources\app | ||
| } else if (isWindows) { | ||
| // appRoot = C:\Users\<name>\AppData\Local\Programs\Microsoft VS Code Insiders\<version>\resources\app | ||
| // bin = C:\Users\<name>\AppData\Local\Programs\Microsoft VS Code Insiders\bin |
Copilot
AI
Nov 11, 2025
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
The comment on line 179 should be updated to reflect the new path structure with three dirname calls. Currently it states the bin folder is one level up, but with three dirname calls it's now three levels up from appRoot.
| // bin = C:\Users\<name>\AppData\Local\Programs\Microsoft VS Code Insiders\bin | |
| // bin = C:\Users\<name>\AppData\Local\Programs\Microsoft VS Code Insiders\bin | |
| // Note: bin folder is three levels up from appRoot |
1) Check for session-ending flag in appx and tunnel callsites 2) Move gc for background update to cleanup phase in updateservice 3) Set update state to ready when there is a running inno_setup
5bd9354 to
42b6bb2
Compare
Fixes #249239
Fixes #253334
Fixes #253307