【问题标题】:Electron Squirrel.Windows: .msi not workingElectron Squirrel.Windows:.msi 不工作
【发布时间】:2018-02-24 10:22:33
【问题描述】:

我开发了一个 Electron 应用程序,并使用 eletron-packagerelectron-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;
}

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

【问题讨论】:

  • 我们能看到这个 MSI 吗?如果可以的话,我相信我们可以弄清楚发生了什么。如果它很大,您可以在其上运行 admin install 并仅在某处上传基本 MSI(不带嵌入式 cab)。这意味着它无法安装,但可以查看。在上面的链接中阅读有关管理员安装的信息,或者只是尝试运行(在标准命令提示符中 - 根据需要调整路径):msiexec /a File.msi TARGETDIR=C:\MyInstallPoint /qn 来创建一个。
  • 我没有意识到 Squirrel 制作了 MSI。我以为我上次检查时只制作了 EXE(每用户自动更新)
  • @SteinÅsmul 感谢您的回答!我不确定你的意思。我运行了你提到的cmd 命令,它创建了一个.exe 文件,效果很好(尽管我仍在试图找出.msi 有什么问题)。我不知道你希望我上传。

标签: windows-installer electron electron-packager squirrel.windows


【解决方案1】:

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

【讨论】:

  • FWIW 我已经编写了一些 NW 和 Electron 应用程序,我只是使用 WiX/IsWiX 将它们打包,就像任何其他桌面应用程序一样。我看不出它们有什么特别之处需要自己的利基包装堆栈。
  • @SteinÅsmul 谢谢,我照你说的做了,并运行了 Orca 验证,没有产生任何错误。这很有用,因为我想我找到了为什么.msi 没有按预期工作的答案(有关详细信息,请参阅下面的答案)。
【解决方案2】:

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

上面写着:

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

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

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

看起来我的.msi 工作得很好,只是我预计会有不同的结果。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-09-01
    • 2016-06-19
    • 2017-03-11
    • 2016-07-23
    • 2021-09-02
    • 1970-01-01
    • 2018-08-27
    • 2020-10-07
    相关资源
    最近更新 更多