我想知道如何使用Node.js来获取Windows可执行文件的AssemblyVersion或AssemblyFileVersion。
我不确定这是否重要,但是有问题的可执行文件是.net可执行文件。
如果需要,我很高兴使用苗条的第三方依赖关系。
感谢您的帮助
答案 0 :(得分:0)
我可以在Windows wmic上使用以下命令:
wmic datafile where name='file/program.exe' get version
这将打印这样的标准字符串:
Version
2.0.1.0
可以很容易地通过在新行上分割并修剪来解析。
所以我要做的是使exec调用像这样:
PromiseExec(`wmic datafile where name='${queryPath}' get version`)
.then(exeVersion => {
let versionSplit = exeVersion.stdout.split('\n');
let versionString = versionSplit[1].trim(); // "2.0.1.0"
});
/**
* @param {string} app command to execute
* @returns {Promise<{stdout:string, stderr:string, code:number}>}
*/
function PromiseExec(app) {
return new Promise((resolve, reject) => {
let child = exec(app);
let stdout = '';
let stderr = '';
child.addListener('error', reject);
child.stdout.on('data', function (data) {
stdout += data;
});
child.stderr.on('data', function (data) {
stderr += data;
});
child.addListener('close', (code) => {
resolve({ stdout, stderr, code} );
});
});
}
请注意,为了清楚起见,我已删除了一些错误检查。