Mac使用node.js生成startosinstall进程

时间:2018-04-27 20:53:50

标签: node.js macos

我正在尝试生成startosinstall二进制文件以开始macOS升级。但是,我看到startosinstall二进制文件以root身份运行,但随后调用了一个子进程osinstallersetupd但似乎在我的标准用户帐户下运行而不是root。

最终它打破了自动化,因为我遇到了管理身份验证提示。 auth

显示流程:grep

这可能是Apple的bug /限制还是与调用第一个二进制文件的方式有关?

const spawn = require("child_process").spawn;

child = spawn("/Applications/Install macOS High Sierra.app/Contents/Resources/startosinstall",
    [
        "--applicationpath",
        "/Applications/Install macOS High Sierra.app",
        "--agreetolicense"
    ],
    {
        //maybe try some config options?
    }
);

child.stderr.on("data", (data) => {
    console.log(data.toString() + "\n");
});

child.stdout.on("data", (data) => {
    console.log(data.toString() + "\n");
});

child.on("exit", (code, signal) => {
    console.log("child process exited: " + code + "\n");
});

为了什么值得我以root身份登录并运行上面的脚本。

非常感谢任何帮助!

1 个答案:

答案 0 :(得分:0)

我相信我已经找到了这个问题。我正在使用有助于升级的脚本部分,并发现在使用FileVault经过身份验证的重新启动时,您创建并加载了一个plist。

macOSUpgrade:https://github.com/kc9wwh/macOSUpgrade/blob/master/macOSUpgrade.sh#L278

然而,似乎我实际上并没有加载plist,这导致了一个问题。

tl; dr我没有加载plist:https://github.com/kc9wwh/macOSUpgrade/blob/master/macOSUpgrade.sh#L337