Skip to content

Commit 235a92a

Browse files
authored
feat: windows: set rc strings for *.node files (microsoft#158590)
Fixes: microsoft#156408
1 parent a760478 commit 235a92a

File tree

1 file changed

+40
-2
lines changed

1 file changed

+40
-2
lines changed

build/gulpfile.vscode.js

Lines changed: 40 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,9 @@ const minimist = require('minimist');
3434
const { compileBuildTask } = require('./gulpfile.compile');
3535
const { compileExtensionsBuildTask, compileExtensionMediaBuildTask } = require('./gulpfile.extensions');
3636
const { getSettingsSearchBuildId, shouldSetupSettingsSearch } = require('./azure-pipelines/upload-configuration');
37+
const { promisify } = require('util');
38+
const glob = promisify(require('glob'));
39+
const rcedit = promisify(require('rcedit'));
3740

3841
// Build
3942
const vscodeEntryPoints = _.flatten([
@@ -347,6 +350,35 @@ function packageTask(platform, arch, sourceFolderName, destinationFolderName, op
347350
};
348351
}
349352

353+
function patchWin32DependenciesTask(destinationFolderName) {
354+
const cwd = path.join(path.dirname(root), destinationFolderName);
355+
356+
return async () => {
357+
const deps = await glob('**/*.node', { cwd });
358+
const packageJson = JSON.parse(await fs.promises.readFile(path.join(cwd, 'resources', 'app', 'package.json'), 'utf8'));
359+
const product = JSON.parse(await fs.promises.readFile(path.join(cwd, 'resources', 'app', 'product.json'), 'utf8'));
360+
const baseVersion = packageJson.version.replace(/-.*$/, '');
361+
362+
await Promise.all(deps.map(async dep => {
363+
const basename = path.basename(dep);
364+
365+
await rcedit(path.join(cwd, dep), {
366+
'file-version': baseVersion,
367+
'version-string': {
368+
'CompanyName': 'Microsoft Corporation',
369+
'FileDescription': product.nameLong,
370+
'FileVersion': packageJson.version,
371+
'InternalName': basename,
372+
'LegalCopyright': 'Copyright (C) 2022 Microsoft. All rights reserved',
373+
'OriginalFilename': basename,
374+
'ProductName': product.nameLong,
375+
'ProductVersion': packageJson.version,
376+
}
377+
});
378+
}));
379+
};
380+
}
381+
350382
const buildRoot = path.dirname(root);
351383

352384
const BUILD_TARGETS = [
@@ -370,10 +402,16 @@ BUILD_TARGETS.forEach(buildTarget => {
370402
const sourceFolderName = `out-vscode${dashed(minified)}`;
371403
const destinationFolderName = `VSCode${dashed(platform)}${dashed(arch)}`;
372404

373-
const vscodeTaskCI = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}-ci`, task.series(
405+
const tasks = [
374406
util.rimraf(path.join(buildRoot, destinationFolderName)),
375407
packageTask(platform, arch, sourceFolderName, destinationFolderName, opts)
376-
));
408+
];
409+
410+
if (platform === 'win32') {
411+
tasks.push(patchWin32DependenciesTask(destinationFolderName));
412+
}
413+
414+
const vscodeTaskCI = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}-ci`, task.series(...tasks));
377415
gulp.task(vscodeTaskCI);
378416

379417
const vscodeTask = task.define(`vscode${dashed(platform)}${dashed(arch)}${dashed(minified)}`, task.series(

0 commit comments

Comments
 (0)