nsis問題

    最近在作一個安裝包,由於要求使用自定義的背景圖片和進度條,因此沒有使用nsis默認的安裝界面,而是自定義了一個頁面。可是過程當中遇到了一個問題,就是如何在自定義界面中顯示真實安裝進度的問題。若是使用默認的nsis安裝界面,只要在.onInit函數中進行操做就好了,可是自定義界面的話就不能這麼作了,必須本身進行控制在哪裏進行復制文件的操做,並同步進度條顯示。html

nsDialogs::Show函數會顯示窗口並阻塞線程,若是在這句以前進行復制文件的操做,會出現運行安裝包後等待幾秒纔會出現界面的狀況,可是又沒辦法在以後進行操做。因此須要使用線程去進行安裝操做,可是nsThreads插件表現並不穩定,因此使用了Timer。可是以後發現若是Timer進行耗時的操做的話,界面是不響應用戶操做的,因此不能直接在timer裏複製文件,而後去網上搜索發現還有一個BGWorker插件,能夠經過這個插件來啓動一個線程,而後在函數裏進行安裝而且同步進度顯示。這個插件使用很是簡單:python

GetFunctionAddress $0 BGFunc
BgWorker::CallAndWait

BGFunc是要調用的函數。
shell

可是這個函數也是阻塞的,因此要在Timer中調用來實現異步。異步


參考:函數

http://blog.csdn.net/taiyang1987912/article/details/40506439 .net

http://www.pythonschool.com/NSIS_JHK/3008.html插件

相關文章
相關標籤/搜索