上一篇文章 怎么實(shí)現(xiàn)軟件更新? 已經(jīng)說過要要結(jié)合更新到啟動,實(shí)現(xiàn)軟件啟動時自動更新,這一篇我們就講講怎么實(shí)現(xiàn)這一步,另外我們還要讓我們的軟件像一個正常使用的軟件那樣實(shí)現(xiàn)安裝。
一、啟動時更新
這一步其實(shí)是最簡單的, 在上一篇文章 怎么實(shí)現(xiàn)軟件更新? 里,我們已經(jīng)用一個函數(shù)main()把整個過程封裝起來,所以我們只需要在我們的軟件代碼的主程序里引入這個函數(shù),并且放到其他語句的最前面。
# 引入函數(shù)
from update import main
# 中間代碼省略
...
if __name__ == '__main__':
# 放在最前面
main()
app = MainWindows()
app.mainloop()
使用pyinstaller制作文件
- 最簡單的方法就是:
pyinstaller -w -F main.py
參數(shù)解釋:
- -F 表示生成單個文件,比如上面的命令就是生成 main.exe
- -w 表示不要控制臺顯示,就我們測試時經(jīng)常看到的那個黑漆漆的cmd框,讓用戶使用時當(dāng)然不希望用戶看到這么丑的一個東西出現(xiàn)呀,所以去除控制臺
- -p 表示自定義加載的類路徑,一般情況不用
- -i 表示可執(zhí)行文件的圖標(biāo)
用這種方法生成的文件直接就是可執(zhí)行文件了,當(dāng)然也不用考慮安裝了,我們常說的綠色軟件就差不多是這樣了,免安裝,拿到就可以用,而且我們還貼心的自動更新,人性化不。
- 文件夾方式:
pyinstaller -w main.py
其實(shí)也簡單,不加-F 就是直接生成一個文件夾。

打包完成后,會生成一個
dist文件夾,打開里面會有一個main文件夾,就是與我們的命令的主文件名一樣,再打開main,里面還有一個main.exe。這個就是我們正常的執(zhí)行文件,可以雙擊運(yùn)行。
呃,怎么出錯了,這難道就是大型翻車現(xiàn)場!?。?br> 其實(shí),問題很簡單,還記得我們的更新文件嗎?如果不記得可以看看我們的上一篇文章 怎么實(shí)現(xiàn)軟件更新?, 由于軟件啟動首先要運(yùn)行的是自動更新,而我們的更新文件需要一個
json, 所以啟動當(dāng)然出錯。把文件放進(jìn)文件夾,再來一次。

這下可以正常運(yùn)行了。其實(shí),大家如果看的仔細(xì),應(yīng)該知道,這里的自動更新是有問題的,因?yàn)槲覀兩弦黄恼聦?shí)際上是針對的單個執(zhí)行文件,而不是文件夾的,當(dāng)然這里只是演示一下,相信朋友們自己琢磨下,也能做出針對文件夾的自動更新。原理都是一樣的。
二、如何讓軟件能夠安裝
上面的內(nèi)容總的來說還是一個回顧和配置前提,是為這一部分做的提前準(zhǔn)備。我們?yōu)槭裁匆虬晌募A形式呢?因?yàn)榻酉聛砦覀円玫墓ぞ呔褪轻槍ξ募A的。還有文件夾形式相對于單個執(zhí)行文件,大小會小一點(diǎn)。
使用HM NIS Edit
這個軟件可以讓我們制作出非常正式的安裝包,就像大家常用的QQ安裝包一樣。接下來,就讓我們一起看看。
首先,雙擊打開HM NIS Edit編譯器。

圖標(biāo)是什么,沒看懂,感覺有點(diǎn)像烏賊。進(jìn)入軟件界面。點(diǎn)擊
文件選擇新建腳本:向?qū)?/code>
向?qū)?gif
點(diǎn)擊下一步, 填寫應(yīng)用程序信息:
繼續(xù)下一步,基本上是默認(rèn),不用更改,不過安裝程序語言要選擇simpChinese,也就是簡體中文,不然安裝時就會出現(xiàn)亂碼。
接著下一步, 這一步,應(yīng)用程序默認(rèn)目錄就是用戶按裝時會出現(xiàn)的默認(rèn)選項(xiàng),我們設(shè)置了允許用戶更改。授權(quán)文件其實(shí)就是用戶安裝時會出現(xiàn)的關(guān)于應(yīng)用的一些說明,授權(quán)你使用的范圍。我們隨便寫了一個。
授權(quán)文件
下一步后,出現(xiàn)下面第一張圖片內(nèi)容,點(diǎn)擊修改文件路徑,這里添加程序所在的整個目錄:
配置完成再點(diǎn)下一步, 這里直接默認(rèn)就好了:
第七步也是默認(rèn):
第八步為卸載相關(guān)設(shè)置,可以根據(jù)自己需要設(shè)置:
最后,點(diǎn)保存腳本,保存好后,腳本會自動進(jìn)行編譯:
雖然前面的設(shè)置,基本上能滿足所有需求,不過我們的軟件有引入一些庫,而這些庫是在子文件夾下的,如下所示:
而這些,子文件夾,我在測試時,發(fā)現(xiàn)不能通過前面的設(shè)置直接安裝到安裝文件夾下,導(dǎo)致軟件啟動不了。所以我們要在編譯腳本里做以下的修改:
# 編譯成setup.exe文件時的操作
Section "MainSection" SEC01
SetOutPath "$INSTDIR"
SetOverwrite ifnewer
File "main\main.exe"
File /r "main\*.*" # 這里是修改后的內(nèi)容,添加一個/r符號,可以遞歸
CreateDirectory "$SMPROGRAMS\敦煌工具"
CreateShortCut "$SMPROGRAMS\敦煌工具\(yùn)敦煌工具.lnk" "$INSTDIR\main.exe"
CreateShortCut "$DESKTOP\敦煌工具.lnk" "$INSTDIR\main.exe"
SectionEnd
# 卸載時的操作
Section Uninstall
Delete "$INSTDIR\${PRODUCT_NAME}.url"
Delete "$INSTDIR\uninst.exe"
Delete "$INSTDIR\*.*" # 修改內(nèi)容,刪除安裝文件夾下的所有內(nèi)容
Delete "$INSTDIR\main.exe"
Delete "$SMPROGRAMS\敦煌工具\(yùn)Uninstall.lnk"
Delete "$SMPROGRAMS\敦煌工具\(yùn)Website.lnk"
Delete "$DESKTOP\敦煌工具.lnk"
Delete "$SMPROGRAMS\敦煌工具\(yùn)敦煌工具.lnk"
RMDir "$SMPROGRAMS\敦煌工具"
RMDir /r "$INSTDIR\*.*" # 修改內(nèi)容,可以完整的刪除安裝文件夾
DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
SetAutoClose true
SectionEnd
三、安裝測試
經(jīng)過上面的步驟后,如果一切設(shè)置正確,編譯完成后會直接啟動安裝程序。其實(shí)在保存文件夾下有個setup.exe文件,雙擊啟動也可以。
第一步,啟動軟件:
第二步,前面所說的授權(quán)文件內(nèi)容就是在這里顯示的:
第三步,選擇安裝的地址,用戶可以自己修改:
第四步,開始安裝:
第五步,安裝完成,可以結(jié)束也可以直接運(yùn)行我們的軟件:
這時,在啟動目錄里也有了相應(yīng)的卸載工具:
第六步,運(yùn)行軟件,可以出現(xiàn)我們的軟件界面了,輸入內(nèi)容測試也能正常使用:
第七步,卸載測試,這里是直接從安裝目錄里下載工具進(jìn)行操作的,方便展示,大家從啟動目錄里操作,效果也是一樣:
最后
就這樣,我們就把自己做的軟件包裝成一個高大上的正式軟件了,怎么樣?學(xué)會了嗎?有什么不懂的,可以關(guān)注我的公眾號 Python與跨境電商 一起討論,文中示例已經(jīng)上傳至百度網(wǎng)盤,在公眾號 Python與跨境電商 回復(fù)關(guān)鍵詞:安裝軟件 獲取





















