3

我开发了一个 Electron 应用程序并使用,eletron-packager然后electron-squirrel-startup我创建了.exe安装.msi程序文件。该.exe文件工作正常,但.msi不是。看起来它只是在某个时候停止并关闭。在控制面板中我可以看到“my_app Machine-Wide Installer”,我不确定这是否是预期的效果,但仍然没有安装 my_app。

我有一个非常基本的 handleSquirrelEvents 函数:

switch (squirrelEvent) {
    case '--squirrel-install':
    case '--squirrel-updated':
        // Optionally do things such as:
        // - Add your .exe to the PATH
        // - Write to the registry for things like file associations and
        //   explorer context menus

        // Install desktop and start menu shortcuts
        spawnUpdate(['--createShortcut', exeName]);

        setTimeout(application.quit, 1000);
        return true;

    case '--squirrel-uninstall':
        // Undo anything you did in the --squirrel-install and
        // --squirrel-updated handlers

        // Remove desktop and start menu shortcuts
        spawnUpdate(['--removeShortcut', exeName]);

        setTimeout(application.quit, 1000);
        return true;

    case '--squirrel-obsolete':
        // This is called on the outgoing version of your app before
        // we update to the new version - it's the opposite of
        // --squirrel-updated

        application.quit();
        return true;
}

这有点牵强,但也许它与数字签名有关?

4

2 回答 2

1

只是第一个建议 - 这不是一个真正的答案。当我们获得更多信息时,我会更新:如果您安装了 Windows SDK,您可以搜索Orca-x86_en-us.msi. 安装此 MSI,您将可以访问“Orca” - 一个 MSI 文件查看器。在 Orca 中打开您的 MSI 并通过 Tools -> Validate 运行验证。单击 Go(可能取消选中 INFO 消息的复选框)。应该有一个 Orca 的快捷方式添加到您的开始菜单中。请使用任何错误消息更新您的答案。

于 2017-09-15T12:47:27.257 回答
1

我发现了这个:https ://github.com/Squirrel/Squirrel.Windows/blob/master/docs/using/machine-wide-installs.md

它说:

机器范围安装 Squirrel 的 Releasify 命令生成一个适合通过组策略安装的 MSI 文件。此 MSI 不是通用安装程序,这意味着一旦您运行 MSI,用户从现在开始将在下次登录时安装该应用程序。

因此,大多数普通用户应该继续运行由 Releasify 生成的 Setup.exe,但是如果您想要一个 IT Admin Friendly 版本,您可以移交 MSI

大多数 Squirrel 用户无需执行任何新操作即可启用此行为,但某些 NuGet 包 ID/名称可能会导致 MSI 出现问题。

看起来我.msi的工作正常,只是我期望得到不同的结果。

于 2017-09-18T10:01:18.613 回答