没有“最新"消息最新版本时出现提示信息?

没有“最新

问题描述:

我正在尝试将火花与Qt一起使用(

I'm trying to use Sparkle with Qt (binding for Go) app.

sparkle.m:

sparkle.m:

#import <Headers/SUUpdater.h>

static SUUpdater* updater = nil;

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

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

sparke.go:

sparke.go:

// +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()
}

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

And in main.go, I added a menu to call that func:

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, ... 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: 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

appcast.xml:

appcast.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>

Info.plist:

Info.plist:

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

我错过了什么吗?

仔细查看因此,使用此方法,只有找到更新后,才会显示UI.

So, with this method, the UI will only be shown if an update is found.

我想要的是 checkForUpdates :

What I want is checkForUpdates:

/*!
 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;