目标是使用 squirrel.windows 进行部署,以便可以安装、更新、卸载并在 Windows 10 的程序和功能中查看它。如果还添加了 MyApp.msi 文件将是一个优点。
案例 1: 我使用 Nuget Package Explorer 创建了一个 NugetPackage。然后通过包管理器控制台“squirrel --releasify myNuget.1.0.0.nupkg”释放它,获取发布文件,单击 setup.exe 进行安装,应用程序的图标将出现在 Windows 菜单中。
在 Windows 程序和功能中,它不会出现在已安装的应用程序列表中。
当我部署应用程序的下一个 nugetPackage 时,更新正在运行。它创建了一个很好的 myApp.msi 文件。
案例 2: 当我使用 GitHub 上的 Squirrel 应用程序“ https://github.com/Squirrel/Squirrel.Windows ”时,它会显示它。- 极好的。
当我部署应用程序的下一个 nugetPackage 时,更新不起作用。它不会创建myApp.msi 文件。
对于小型 testApp,它使用完全相同的代码,但也没有 myApp.msi 文件。不同之处在于它使用 DevExpress Dll,并且在生产应用程序中有 54 个 Dll。myTestApp 中有 13 个 Dll。
安装和更新代码
public static async Task CheckForUpdates()
{
using (var mgr = new UpdateManager(DEPLOYMENT_PATH))
{
// Note, in most of these scenarios, …
Run Code Online (Sandbox Code Playgroud) 我将 Electron 添加到我的 Angular 应用程序中,以便能够将其作为桌面应用程序运行,但是\n我在 Electron Forge 的“make”步骤中遇到了问题,因为我不断收到以下错误消息
\n\n我很困惑,因为我实际上不知道这里引用的路径太长。\n它是我的文件所在目录还是我的项目名称?
\nangular_node_express.nuspec
(我在整个项目中找不到指定的文件)
\n\n电子锻造制造
\n
\xe2\x9c\x94 Checking your system\n\xe2\x9c\x94 Resolving Forge Config\nWe need to package your application before we can make it\n\xe2\x9c\x94 Preparing to Package Application for arch: x64\n\xe2\x9c\x94 Preparing native dependencies\n\xe2\x9c\x94 Packaging Application\nMaking for the following targets: squirrel\n\xe2\x9c\x96 Making for target: squirrel - On platform: win32 - For arch: x64\n\nAn unhandled error has occurred inside Forge:\nAn error occured while making for target: squirrel\nFailed with …
Run Code Online (Sandbox Code Playgroud) electron squirrel.windows electron-forge electron-packager angular
我正在尝试将 Squirrel.Windows 与我的应用程序一起使用,以从它的 GitHub 存储库安装和自动更新。按照以下示例进行操作
https://github.com/Squirrel/Squirrel.Windows/blob/master/docs/getting-started/1-integrating.md
我能够成功完成所有步骤。我测试了安装,应用程序打开没有问题。我更新并“释放”它,本地安装的应用程序按预期更新。
因此,如果我从本地目录执行此操作,我知道 Squirrel 可以正常工作,但是,我需要从 GitHub 执行此操作。我正在按照这里的说明进行操作
从那以后,我将 App.xaml.cs 中的代码更新为以下内容
public partial class App : Application
{
protected override async void OnStartup(StartupEventArgs e)
{
base.OnStartup(e);
MessageBox.Show(typeof(App).Assembly.GetName().Version.ToString());
// Check for application updates
using (var mgr = UpdateManager.GitHubUpdateManager("https://github.com/Dartvalince/DiscerningEye"))
{
await mgr.Result.UpdateApp();
}
}
Run Code Online (Sandbox Code Playgroud)
接下来,我将执行与之前相同的过程,创建 nupkg,并使用 Squirrel 执行 releasify 命令。这里没有问题,很好。
做完这一切之后,我执行 git commit 和 git push 到 GitHub 的源代码。GitHub 上的所有内容都更新为最新的提交。这里很好
接下来,在 GitHub 页面上,我创建了一个新版本。用于发布的标签与创建的 .nupkg 中使用的程序集版本相同。对于要附加到发布的文件,我从Release
通过 Squirrel 创建的文件夹中拖放所有文件。
好的,现在一切都在 GitHub 上。然后我开始测试它以确保用户下载所有文件,然后运行 Setup.exe,它会正确安装并打开。当我这样做时,我将每个文件下载到桌面上的一个文件夹中,然后单击 Setup.exe。当我这样做时,我MessageBox.Show(typeof(App).Assembly.GetName().Version.ToString());
从应用程序中得到预期的MessageBox 弹出窗口,显示正确的程序集版本号,但没有。就像在这一点上,它卡在代码的更新部分,永远不会过去。我可以让它坐在那里过夜,什么也没有。我什至可以在任务管理器的内存中看到正在运行的进程,所以我知道它没有出错并关闭,但它处于 …
我有一个疯狂的想法,那就是使用我们不断迁移到 .NET 的大型 VB6 应用程序并使用Squirrel for Windows安装程序。似乎我需要按照此处所述制作 VB6 应用程序 Squirrel-Aware - 添加VALUE "SquirrelAwareVersion", "1"
到版本资源块。
问题是我对 rc 文件非常不熟悉,而且只有一些关于格式、编码等的文档,尤其是在使用 VB6 时。我想我需要一个命令行工具,可以将其添加VALUE "SquirrelAwareVersion", "1"
到现有 exe 的版本资源中,或者弄清楚如何让 VB6 使用.res
包含所有版本数据的自定义文件。
大多数工具似乎只修改基本资源信息,如图标、清单和字符串。我需要能够修改或替换此版本数据的东西。
我试图创建一个基本的.rc
. 我创建了一个名为 MyApp.rc 的空文件。使用 Visual Studio 打开文件。添加一个“版本”资源并尝试将其编译为.res
withRC.exe
但我从 Visual Studio 生成的这个文件中收到各种错误。如果我关闭并重新打开生成的 RC 文件,即使 Visual Studio 也无法打开它。可能是编码问题?我不确定如何创建有效的 RC 文件。
使用 Squirrel.Windows 构建安装程序时,有没有办法注册已安装的应用程序以在 Windows 启动时运行?
谢谢!
我希望用户能够控制发生的事情'update-available'
.无论我在这里做什么,autoUpdater似乎都在继续下载更新.
如何让autoUpdater不继续下载?
autoUpdater
.on('error', function(error){
// [Log and show dialog] ...
})
.on('update-available', function(e) {
// [Confirmation dialog] ...
if (downloadConfirmation === 0) {
return;
}
})
.on('update-downloaded', function (event) {
// [Restart now? Dialog] ...
if (index === 1) return;
force_quit = true;
autoUpdater.quitAndInstall();
});
autoUpdater.checkForUpdates();
Run Code Online (Sandbox Code Playgroud) desktop-application electron squirrel.windows electron-builder