nodejs获取可执行文件的版本

时间:2019-07-04 14:12:25

标签: node.js windows

我想知道如何使用Node.js来获取Windows可执行文件的AssemblyVersion或AssemblyFileVersion。

我不确定这是否重要,但是有问题的可执行文件是.net可执行文件。

如果需要,我很高兴使用苗条的第三方依赖关系。

感谢您的帮助

1 个答案:

答案 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} );
        });
    });
}

请注意,为了清楚起见,我已删除了一些错误检查。

相关问题