标签: squirrel.windows

我在哪里可以找到生产中的Electron应用程序的日志?

我用Electron构建了一个应用程序,并使用Electron-Builder创建了一个Squirrel windows安装程序和更新程序.这一切都很好,但我在调试我的应用程序的生产版本时遇到问题.

console.log使用生产版本时,是否在磁盘上的某处写入了日志?如果是这样,我在哪里可以找到它们?或者在编译可执行文件时是否全部删除了?我的应用必须有某种日志文件吗?

我发现了SquirrelSetupLog,C:\Users\Tieme\AppData\Local\MyApp\SquirrelSetupLog但这还不足以调试我的生产问题.


刚遇到电子日志.如果常规控制台日志确实没有写入磁盘某处,那可能会有效.

logging electron squirrel.windows electron-builder

13
推荐指数
1
解决办法
1万
查看次数

Electron electro-winstaller 无法为大型(文件大小)应用程序创建安装程序

我正在尝试为电子应用程序创建 Windows 安装程序。

首先,应用程序使用电子打包器进行打包。

exec(`npx electron-packager ./ "My App Name" --platform=win32 --out=${packagedLocation}`);
Run Code Online (Sandbox Code Playgroud)

然后使用 electro-winstaller 创建应用程序的安装程序。

try {
    await electronInstaller.createWindowsInstaller({
        appDirectory: packagedLocation,
        outputDirectory: installerLocation,
        authors: 'Author',
        exe: 'myapp.exe'
    });
} catch (e) {
    console.log(`Failure: ${e.message}`);
}
Run Code Online (Sandbox Code Playgroud)

当运行创建安装程序的代码时,exe 和 msi 安装程序都未正确创建。创建的Setup.exe只有大约200 KB。尝试运行 exe 会生成一个对话框,其中显示:This is a dummy update.exe. If you are seeing this, your build did not correctly replace the IDR_UPDATE_ZIP resource. Command Line: '--install .'。Squirrel 或构建脚本的日志中没有给出任何错误。

通过测试,我发现如果我打包的应用程序的大小太大,就会发生这种情况。我的应用程序包含大约 3 GB 的资源。我需要将这些资源作为安装程序的一部分包含在内,而不是根据需要下载,因为该应用程序旨在无需访问互联网即可运行。这些资源的大小已经优化,我无法从我的应用程序中删除任何资源。

出于测试目的,如果我随机删除其中一些资源,直到打包应用程序的大小小于 1 GB,则 Electron-winstaller 将正确创建安装程序,不会出现任何问题。似乎不是任何特定资源导致了该错误。

有什么方法可以在不阻止创建安装程序的情况下将这些资源包含在我的应用程序中?

更新 …

node.js electron squirrel.windows electron-packager

9
推荐指数
1
解决办法
1096
查看次数

如何将文件扩展名关联到电子应用程序(多平台)

我已经将以下代码段添加到我的package.json

"build": {
  "fileAssociations": [
    {
      "ext": "asdf",
      "name": "ASDF File",
      "role": "Editor"
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)

但是生成的安装程序不会将我的应用程序分配给asdf扩展程序。(在 Windows 10 上测试)

我也查了一下,如何编辑setupEvents.js文件。它包含以下部分:

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
Run Code Online (Sandbox Code Playgroud)

但是我找不到一个例子,如何归档注册表写入部分。

javascript installation file-association electron squirrel.windows

8
推荐指数
1
解决办法
2882
查看次数

便携式电子应用程序

我有一个基于 git electron 的应用程序。(适用于窗户)

我需要这个应用程序可以在 U 盘上便携,并且我希望这个应用程序具有自动更新功能。

Grunt-electron-installer 使用squirrel.windows作为更新机制。Squirrel 使用 SHGetFolderPath 函数和 CSIDL_LOCAL_APPDATA 来决定安装路径,通常是C:\Users\Username\AppData\Local\$pkgName

我的问题是;

  • 有没有更好的方法可以用作便携式电子应用程序的自动更新功能?
  • 我可以使用Enigma 虚拟框作为虚拟系统来克服 squirrel.windows 路径问题。在此选项中,我需要一种方法来更改虚拟系统中的 CSIDL_LOCAL_APPDATA 变量。任何的想法?

任何帮助将非常感激。谢谢

electron squirrel.windows

6
推荐指数
0
解决办法
1272
查看次数

如何使用 squirrel.windows 创建注册表项

我正在创建一个 Electron 应用程序,并使用电子 winstaller 来构建使用 squirrel.windows 的安装程序。在其中一个示例代码片段中包含以下部分:

const squirrelEvent = process.argv[1];
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(app.quit, 1000);
    return true;

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

    // Remove desktop and start …
Run Code Online (Sandbox Code Playgroud)

javascript electron squirrel.windows

6
推荐指数
1
解决办法
660
查看次数

Electron 4 Windows -> electro-builder -> 自动更新:自定义解决方案

我正在使用 Electron 构建一个适用于 Windows 的应用程序。为了打包和分发它,我使用electro-builder。Electron-builder 依赖于许多软件包,并且为了自动更新,它使用Squirrel-windows

我已经在 Windows 上与自动更新作斗争了 3 天,最后我想出了一个可行的解决方案,似乎没有任何问题。

我不会详细介绍我尝试过但失败的事情。相反,我将在这里发布我提出的解决方案。

我与你们分享它,看看你们是否可以向我指出任何会使我的系统失败的缺陷,或者,如果它确实是一个可靠的解决方案,可以帮助那些像我一样苦苦挣扎的人。由于后一个原因,我发布了一些不必要的代码,希望对其他人有所帮助。

逻辑如下:

  • 如果当前可执行文件路径内的子文件夹fullupdate不存在(稍后会澄清),我们连接在线服务器并通过发送当前应用程序版本来检查是否有更新;
  • 如果没有更新,则不执行任何操作。
  • 如果有更新,我们指示服务器返回一个json包含 url 的字符串,我们可以.exe从中下载electron-builder. 注意:不是.nupkg(未提供服务器代码:-))。
  • 我们下载该文件并将其保存在fullupdate当前保存我们的应用程序的本地文件夹的子文件夹中。这应该是“安全的”,因为electron-builder将应用程序保存在当前用户文件夹中AppData,因此我们不应该遇到权限问题。
  • 下载结束时,我们update在文件夹内创建一个新文件fullupdate,以确保下载已成功完成。我们也可以重命名该文件,但我更喜欢这种方式。
  • 下次应用程序打开时:
    • 如果文件夹fullupdate存在,我们检查文件是否update存在。如果不存在,则下载未完成,因此我们删除该文件夹fullupdate并再次调用远程服务器重新开始。
    • 否则,如果文件update存在,我们将启动.exe已下载的文件,并返回 true。这将阻止应用程序打开主窗口。很酷的是,更新程序将删除保存的应用程序的整个旧版本AppData(同时保留本地用户数据)并将其替换为新版本。通过这种方式,我们也将删除该文件夹fullupdate

现在的代码:

// we want to run this only on windows
var handleStartupEvent = function() …
Run Code Online (Sandbox Code Playgroud)

windows auto-update node.js electron squirrel.windows

5
推荐指数
0
解决办法
1588
查看次数

Squirrel.Windows 的良好替代品

最近我在我的一个程序中实现了Squirrel.Windows 。它对于基本功能来说效果很好。

问题是主要方法都是内部的,我们无法使用扩展方法或执行我们自己的实现。另外,Squirrel 项目有太多未解决的问题,所以我认为这不是一个很好的项目。

是否有任何库具有类似的功能,但同时给我更多的控制权并让我使用已经实现的代码?

需要能够使用 WPF。

干杯

.net wpf clickonce squirrel.windows

5
推荐指数
1
解决办法
5484
查看次数

Squirrel.Windows发布文件不同步

我一直在使用Squirrel.Windows成功部署WPF一段时间了.我让我的机器重新成像,RELEAESES文件Releases夹中的文件是从头开始重新创建的,因为我完全在我的文件中排除了这个文件夹.gitignore.这似乎打破了我重新映像之前创建的版本上的用户的自动更新功能.

我可以在RELEASES文件中设置什么来强制旧版本引入更新版本而不重新创建所有nuget包吗?

这是我RELEASES文件的相关部分.该版本的用户2.0.6121.16815不会自动迁移到底部的较新版本.

发布文件

这是我的更新程序代码app.xaml.cs.不确定它是否相关,因为它在技术上运行良好.

Task.Run(async () =>
                {
                    using (var mgr = new UpdateManager(updatePath, packageName))
                    {    
                        var updates = await mgr.CheckForUpdate();
                        if (updates.ReleasesToApply.Any())
                        {
                            try
                            {
                                var lastVersion = updates.ReleasesToApply.OrderBy(x => x.Version).Last();

                                await mgr.DownloadReleases(updates.ReleasesToApply);
                                await mgr.ApplyReleases(updates);

                                try
                                {
                                    latestExe = Path.Combine(mgr.RootAppDirectory, string.Concat("app-", lastVersion.Version), "App.exe");
                                    log.Debug("Latest exe:" + latestExe);
                                    mgr.CreateShortcutsForExecutable(latestExe, DefaultLocations, false);
                                }
                                catch(Exception ex)
                                {
                                    log.Error("error creating shortcuts for executable",ex);

                                }
                                restart = true;
                            }
                            catch(Exception …
Run Code Online (Sandbox Code Playgroud)

c# wpf squirrel.windows

5
推荐指数
0
解决办法
448
查看次数

Electron autoupdater进度条

有没有办法设置一个进度条,用于在Electron下载应用程序的新更新?我正在使用Squirrel为Windows开发应用程序electron-simple-updater,我的问题是更新程序只在它开始下载更新和完成时发出事件.我的更新有点大(约80MB),对于ISP较慢的用户,它有点sux :(

javascript electron squirrel.windows

5
推荐指数
2
解决办法
3783
查看次数

卸载使用松鼠的电子应用程序时如何删除本地存储

我有一个electronic.js应用程序,在其中卸载应用程序时,我试图清除该应用程序的本地存储。该应用程序的安装程序/卸载程序取决于Squirrel.Windows。我已经在事件上使用electron.session尝试了以下代码--squirrel-uninstall,但这不起作用

try {
  // clear storage data on uninstall
  const defaultSession = session.defaultSession;
  defaultSession.clearStorageData();
  defaultSession.clearCache()
} catch (e) {
  console.log(e);
}
Run Code Online (Sandbox Code Playgroud)

任何帮助将不胜感激。

node.js electron squirrel.windows

5
推荐指数
0
解决办法
846
查看次数