运行最新版本时没有“最新”消息?

2024-05-27

我正在尝试使用Sparkle https://sparkle-project.org与 Qt (Go 的绑定 https://github.com/therecipe/qt) app.

闪光.m:

#import <Headers/SUUpdater.h>

static SUUpdater* updater = nil;

void sparkle_checkUpdates()
{
    if (!updater) {
        updater = [[SUUpdater sharedUpdater] retain];
    }

    [updater setUpdateCheckInterval:3600];
    [updater checkForUpdatesInBackground];
}

火花:

// +build darwin windows

package main

/*
#cgo CFLAGS: -I ${SRCDIR}/Sparkle.framework
#cgo LDFLAGS: -F ${SRCDIR} -framework Sparkle

void sparkle_checkUpdates();
*/
import "C"

func sparkle_checkUpdates() {
    C.sparkle_checkUpdates()
}

And in main.go,我添加了一个菜单来调用该函数:

package main

import (
    "github.com/therecipe/qt/widgets"
)

func main() {
    action := widgets.NewQMenuBar(nil).AddMenu2("").AddAction("Check for Updates...")
    // http://doc.qt.io/qt-5/qaction.html#MenuRole-enum
    action.SetMenuRole(widgets.QAction__ApplicationSpecificRole)
    action.ConnectTriggered(func(bool) { sparkle_checkUpdates() })
}

It is working fine when there is an update: download, extract, install, relaunch, ... enter image description here But when running the latest version, click "Check for Updates..." menu and nothing happens. There is no popup said that we are up-to-date, something like this: enter image description here In Console, I only see this:

[3 <private> stream, pid: 90977, url: https://example.com/appcast.xml, traffic class: 200, tls] cancelled
    [3.1 70A1F65B-7E7A-4ED2-AB8B-A21621ED7658 <private>.58040<-><private>]
    Connected Path: satisfied (Path is satisfied), interface: en0, ipv4, dns
    Duration: 0.497s, DNS @0.000s took 0.001s, TCP @0.003s took 0.051s, TLS took 0.113s
    bytes in/out: 4481/675, packets in/out: 6/3, rtt: 0.053s, retransmitted packets: 0, out-of-order packets: 0

应用广播.xml:

<?xml version="1.0" standalone="yes"?>
<rss xmlns:sparkle="http://www.andymatuschak.org/xml-namespaces/sparkle" version="2.0">
  <channel>
    <title>Premium VPN</title>
    <item>
      <title>1.0.0.2905</title>
      <pubDate>Tue, 11 Dec 2018 11:09:10 +0800</pubDate>
      <sparkle:minimumSystemVersion>10.7</sparkle:minimumSystemVersion>
      <enclosure url="https://example.com/x.zip" sparkle:version="1.0.0.2905" sparkle:shortVersionString="1.0.0.2905" sparkle:edSignature="x" length="104408678" type="application/octet-stream"/>
    </item>
  </channel>
</rss>

信息.plist:

    <key>SUFeedURL</key>
    <string>https://example.com/appcast.xml</string>
    <key>SUPublicEDKey</key>
    <string>x</string>

我错过了什么?


仔细看checkForUpdatesInBackground https://github.com/sparkle-project/Sparkle/blob/master/Sparkle/SUUpdater.h#L86:

/*!
 Checks for updates, but does not display any UI unless an update is found.

 This is meant for programmatically initating a check for updates. That is,
 it will display no UI unless it actually finds an update, in which case it
 proceeds as usual.

 If automatic downloading of updates it turned on and allowed, however,
 this will invoke that behavior, and if an update is found, it will be downloaded
 in the background silently and will be prepped for installation.

 This will not find updates that the user has opted into skipping.
 */
- (void)checkForUpdatesInBackground;

因此,使用此方法,只有在发现更新时才会显示 UI。

我想要的是checkForUpdates https://github.com/sparkle-project/Sparkle/blob/master/Sparkle/SUUpdater.h#L66:

/*!
 Explicitly checks for updates and displays a progress dialog while doing so.

 This method is meant for a main menu item.
 Connect any menu item to this action in Interface Builder,
 and Sparkle will check for updates and report back its findings verbosely
 when it is invoked.

 This will find updates that the user has opted into skipping.
 */
 - (IBAction)checkForUpdates:(id)sender;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

运行最新版本时没有“最新”消息? 的相关文章

随机推荐