松鼠创建并执行包中的所有 EXE 文件
Squirrel creating and executing all EXE files in package
我们有一个新的 Squirrel 包,其中包含我们的 C# 可执行文件 (.Net Core 3.0) 和开源 NSSM(第 3 方 EXE)。
仅存在此 EXE 会导致它 1 - 获得快捷方式和 2 - 由试图提供帮助的 Squirrel 执行。但是我们不希望 NSSM 被执行!
在我们的 C# 应用程序中,我实现并处理了 Squirrel 事件,并使用消息框证明了这一点,如下所示:
using (var mgr = new UpdateManager("http://updatepath"))
{
SquirrelAwareApp.HandleEvents(
onInitialInstall: v => MessageBox.Show("onInitialInstall"),
onAppUpdate: v => MessageBox.Show("onAppUpdate"),
onAppUninstall: v => mgr.RemoveShortcutForThisExe(),
onFirstRun: () => MessageBox.Show("onFirstRun"));
}
我的 `onFirstRun1 处理程序的消息框显示正确,因此我知道正在处理 Squirrel 事件并且我的 C# 应用程序是 Squirrel 感知的。
但是,NSSM 仍在启动,Squirrel 安装日志文件仍然显示:
[20/06/21 18:52:09] 信息:ApplyReleasesImpl:即将保存快捷方式:C:\Users\me\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\path\NSSM 32-bit.lnk(目标 C:\Users\me\AppData\Local\MyInstaller\nssm.exe, workingDir C:\Users\me\AppData\Local\MyInstaller\app-1.0.3, args, toastActivatorCSLID b08a06b3-8113-5e78-bdad-e989db8e9d25)
[20/06/21 18:52:09] 信息:ApplyReleasesImpl:为 nssm.exe 创建快捷方式 => C:\Users\me\Desktop\NSSM 32-bit.lnk
[20/06/21 18:52:09] 信息:ApplyReleasesImpl:即将保存快捷方式:C:\Users\me\Desktop\NSSM 32-bit.lnk(目标 C:\Users\me\AppData\Local\MyInstaller\nssm.exe,workingDir C: \Users\me\AppData\Local\MyInstaller\app-1.0.3, args, toastActivatorCSLID b08a06b3-8113-5e78-bdad-e989db8e9d25)
[20/06/21 18:52:09] 信息:ApplyReleasesImpl:启动 fixPinnedExecutables
来自回购所有者:
“我认为这里的问题是 .net 核心创建了一个存根可执行文件,它没有嵌入 squirrel 属性 - 相反,它们最终出现在你的 DLL 中。这里的解决方案是更新squirrel 更好地使用 .net core,似乎没有人愿意接手。"
我们有一个新的 Squirrel 包,其中包含我们的 C# 可执行文件 (.Net Core 3.0) 和开源 NSSM(第 3 方 EXE)。
仅存在此 EXE 会导致它 1 - 获得快捷方式和 2 - 由试图提供帮助的 Squirrel 执行。但是我们不希望 NSSM 被执行!
在我们的 C# 应用程序中,我实现并处理了 Squirrel 事件,并使用消息框证明了这一点,如下所示:
using (var mgr = new UpdateManager("http://updatepath"))
{
SquirrelAwareApp.HandleEvents(
onInitialInstall: v => MessageBox.Show("onInitialInstall"),
onAppUpdate: v => MessageBox.Show("onAppUpdate"),
onAppUninstall: v => mgr.RemoveShortcutForThisExe(),
onFirstRun: () => MessageBox.Show("onFirstRun"));
}
我的 `onFirstRun1 处理程序的消息框显示正确,因此我知道正在处理 Squirrel 事件并且我的 C# 应用程序是 Squirrel 感知的。
但是,NSSM 仍在启动,Squirrel 安装日志文件仍然显示:
[20/06/21 18:52:09] 信息:ApplyReleasesImpl:即将保存快捷方式:C:\Users\me\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\path\NSSM 32-bit.lnk(目标 C:\Users\me\AppData\Local\MyInstaller\nssm.exe, workingDir C:\Users\me\AppData\Local\MyInstaller\app-1.0.3, args, toastActivatorCSLID b08a06b3-8113-5e78-bdad-e989db8e9d25) [20/06/21 18:52:09] 信息:ApplyReleasesImpl:为 nssm.exe 创建快捷方式 => C:\Users\me\Desktop\NSSM 32-bit.lnk [20/06/21 18:52:09] 信息:ApplyReleasesImpl:即将保存快捷方式:C:\Users\me\Desktop\NSSM 32-bit.lnk(目标 C:\Users\me\AppData\Local\MyInstaller\nssm.exe,workingDir C: \Users\me\AppData\Local\MyInstaller\app-1.0.3, args, toastActivatorCSLID b08a06b3-8113-5e78-bdad-e989db8e9d25) [20/06/21 18:52:09] 信息:ApplyReleasesImpl:启动 fixPinnedExecutables
来自回购所有者:
“我认为这里的问题是 .net 核心创建了一个存根可执行文件,它没有嵌入 squirrel 属性 - 相反,它们最终出现在你的 DLL 中。这里的解决方案是更新squirrel 更好地使用 .net core,似乎没有人愿意接手。"