【问题标题】:Execute createShortcut in a Squirrel event, in an Electron app在 Electron 应用程序中的 Squirrel 事件中执行 createShortcut
【发布时间】:2015-08-27 08:50:19
【问题描述】:

我在安装或更新我的 Electron 应用程序时尝试为它创建快捷方式,但是我在执行用于创建快捷方式的命令时遇到了一些问题。 默认情况下,Electron 应用程序是“SquirrelAware”,因此我必须指定我想在哪里创建快捷方式。

我的问题与这个问题的公认答案有关。

Handle Squirrel's event on an Electron app

我曾尝试使用exec 模块和child_process 模块,但两者似乎都不起作用。我现在正在尝试(但失败)启动 PowerShell 并在其中运行一个脚本,该脚本将在我的开始菜单和桌面上创建快捷方式,但是我觉得这相当长,并且必须有一个更简单的方法。

这是我目前使用 child_process 模块和 PowerShell 的尝试:

 var spawn = require('child_process').spawn, child;
 child = spawn("C:\\Windows\\System32\\WindowsPowerShell\\v1.0\\powershell.exe",["C:\\ElectronSquirrelDemo\\AddAppShortcuts.ps1 -SourceExe "+ executionPath] );
                child.stdout.on('data', function(data){
                    console.log("PowerShell Data: " + data);
                });
                child.stdout.on('data', function(data){
                    console.log("PowerShell Error: " + data);
                });
                child.stdout.on('exit', function(){
                   console.log('PowerShell script finished'); 
                });

对此的任何帮助将不胜感激

【问题讨论】:

    标签: node.js windows powershell electron


    【解决方案1】:

    我花了一段时间才明白如何自己做这件事。 Squirrel.Windows Update.exe 能够为您创建应用程序的快捷方式。我写了一篇名为 Creating a Windows Distribution of an Electron App using Squirrel 的博客文章,其中我让 Squirrel 为我创建了快捷方式。如果您想走这条路,这是如何让 Squirrel 为您创建快捷方式的简化版本:

    var cp = require('child_process');    
    var updateDotExe = path.resolve(path.dirname(process.execPath), '..', 'update.exe');
    var target = path.basename(process.execPath);
    var child = cp.spawn(updateDotExe, ["--createShortcut", target], { detached: true });
    child.on('close', function(code) {
        app.quit();
    });
    

    您需要使用 Resource Hacker、rcedit 或其他应用程序破解电子可执行文件,以更改 ProductName 和 Icon 资源。您需要在安装和更新的 Squirrel 事件中调用上述代码。

    【讨论】:

    • 这与我之前的尝试非常相似,但是我认为我的文件可能一直在播放,因为它以随机顺序记录内容。所以我删除了该文件并创建了一个新文件,它与您的答案相符。我还查看了您的博客,那里有一些非常有用的 Electron 提示和技巧。谢谢!
    • @Shawn Rakowski,上面的链接失效了,你能帮忙更新一下吗?实际上,我正在尝试在使用此包完成应用程序安装后执行一些其他命令:github.com/automation-stack/electron-sudo,因为我需要为我的应用程序创建一个 Windows 任务调度程序。但是,它不起作用。我想知道在松鼠事件发生期间,它是否不允许其他工具(如 node.js 或 electron-sudo)运行子进程。如果你有什么想法,请告诉我。谢谢。
    • @Ng2-Fun 我的托管服务因一些随机查询溢出而暂停了我的博客。我还没有机会解决问题,但会在下周初尝试...抱歉,我不知道您的问题可能是什么:(
    • @Shawn Rakowski - 我已经解决了我的问题。它可以执行其他命令。过去我没有把代码放在正确的位置。
    猜你喜欢
    • 1970-01-01
    • 2015-07-18
    • 2015-07-17
    • 2021-01-17
    • 2022-10-18
    • 1970-01-01
    • 2018-03-21
    • 2020-02-22
    • 2018-07-08
    相关资源
    最近更新 更多