我用Qt寫了一個簡單的程式。
其中有一個動作是每次開啟程式都會檢查有沒有新的版本
我簡單地讓程式去讀網頁,分析收到的字串來判斷是否有新版本
以下是程式碼
bool gotoUpdate(){
QNetworkAccessManager manager;
QNetworkReply *reply = manager.get(QNetworkRequest(QUrl(url)));
QEventLoop event_loop;
QObject::connect(reply , SIGNAL(finished()),
&event_loop, SLOT(quit()));
QTimer::singleShot(2000, reply, SLOT(abort()));
event_loop.exec();
QString str{reply->readAll()};
if (str.isEmpty()){
//如果抓最新版本失敗了,就當作是最新版本吧
reply->close();
reply->deleteLater();
manager.deleteLater();
return false;
}
//以下略
}
因為我想要統計程式被使用者開啟的次數
所以我是實際上是去讀用reurl.cc縮過的網址
在我自己的電腦上當然是沒問題。
程式沒出錯
從reurl.cc上也看的到確實每開啟一次程式計數器就+1
但是分享給別人之後
卻發現下載程式檔案的url計次不斷的上升
可是開啟程式的計次卻偶而有上升。
比例相當於10倍。
也就是說10個下載程式的人只有1個人成功開啟。
不管分析字串有沒有錯誤,只要有收到從網頁那邊傳來的字串
reurl的計數器都會++
而從上面的程式碼可以看到,如果字串是空的,或是2秒的時間到了而被中斷
程式都還是會繼續執行。
所以我在想...會不會我發出去的程式其實是可以跑起來的
但是可能使用者的防毒軟體、防火牆、OS版本或是我的dll版本不適用而導致網路功能被截
停?
但我暫時不知道怎麼確認....
因為一來我不知道誰有下載我的程式,
二來沒什麼人回應我到底程式是成功還是失敗
失敗可能就當場刪掉了也不會特地寫信回應我QQ....
想請問要怎麼做才可以確保程式成功執行
或是至少能夠知道使用者有沒有成功執行?
我檢查版本的方式或是連網頁的程式碼有錯誤嗎?
感謝閱讀