0

我开发了一个Electron应用程序并使用了eletron-packager,然后electron-squirrel-startup我创建了.exe.msi安装程序文件。 .exe文件工作正常,但.msi不是。它看起来只是在某个点停下来并关闭。在控制面板中,我可以看到“my_app机器范围安装程序”,我不确定这是否是所需的效果,但是,my_app未安装。Electron Squirrel.Windows:.msi无法正常工作

我有一个非常基本的功能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; 
} 

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

+0

我们可以看到这个MSI吗?如果我们能够确信我们可以弄清楚发生了什么事情。如果它很大,你可以在其上运行一个[**管理安装**](https://stackoverflow.com/questions/1547809/extract-msi-from-exe/24987512#24987512)并且只上载基本MSI(没有嵌入式驾驶室)的地方。这意味着它无法安装,但可以查看。在上面的链接中阅读关于管理员安装的信息,或者尝试运行(在标准命令提示符下 - 根据需要调整路径):''msiexec/a File.msi TARGETDIR = C:\ MyInstallPoint/qn''来创建一个。 –

+0

我没有意识到松鼠制造MSI。我以为我最后一次检查它只是使EXE(每用户autoupdating) –

+0

@SteinÅsmul感谢您的回答!我不确定你的意思。我运行了你提到的'cmd'命令,它创建了一个'.exe'文件,这个文件效果很好(尽管我仍然试图找出'.msi'的错误)。我不完全知道你会喜欢我上传。 – madasionka

回答

0

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

它说:

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

因此,大多数普通用户应该继续运行Setup.exe的通过Releasify产生 ,但如果你想有一个IT管理员友好的版本, 可以用手关闭MSI

松鼠的大多数深得用户尽管某些NuGet软件包ID /名称可能会导致MSI出现 问题,但您无需执行任何新操作即可启用此行为。

它看起来像我的.msi工作得很好,只有我期望不同的结果。

1

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

+0

FWIW我已经写了几个NW和Electron应用程序,我就像使用其他桌面应用程序一样使用WiX/IsWiX打包它们。我没有看到需要他们自己的利基包装堆栈的任何特别的东西。 –

+0

@SteinÅsmul谢谢,我做了你所说的并且运行了没有产生任何错误的Orca验证。这很有用,因为我想我找到了答案为什么'.msi'没有像我期望的那样工作(详情见下面的答案)。 – madasionka