国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

NSIS檢測并卸載已有版本,靜默卸載隱藏MessageBox

2019-11-08 03:11:37
字體:
來源:轉載
供稿:網友

接觸到NSIS制作安裝包,檢測并卸載已有版本,項目要把已有項目刪除,百度了方法,遇到了不少坑,慢慢的,現在的版本應該可以使用了。希望可以幫到一些人。

廢物不多說,先看下原本百度的代碼:

Var UNINSTALL_PROGVar OLD_VERVar OLD_PATHFunction .onInit  ClearErrors  ReadRegStr $UNINSTALL_PROG ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} "UninstallString"  IfErrors  done  ReadRegStr $OLD_VER ${PRODUCT_UNINST_ROOT_KEY} ${PRODUCT_UNINST_KEY} "DisplayVersion"  MessageBox MB_YESNOCANCEL|MB_ICONQUESTION /    "檢測到本機已經安裝了 ${PRODUCT_NAME} $OLD_VER。/    $/n$/n是否先卸載已安裝的版本?" /      /SD IDYES /      IDYES uninstall /      IDNO done  Abortuninstall:  StrCpy $OLD_PATH $UNINSTALL_PROG -10  ExecWait '"$UNINSTALL_PROG" /S _?=$OLD_PATH' $0  DetailPrint "uninst.exe returned $0"  Delete "$UNINSTALL_PROG"  RMDir $OLD_PATHdone:FunctionEnd

分析下以上代碼:

聲明幾個變量,在安裝初始化回調方法中,清除錯誤標記,讀取注冊表

ReadRegStr 用戶變量(輸出) 根鍵 子鍵 項

上文讀取卸載路徑字符串并輸出到用戶變量$UNINSTALL_PROG,彈出MessageBox執行各操作,我看看下IDYES,執行卸載方法

 uninstall:      StrCpy $OLD_PATH $UNINSTALL_PROG -10      ExecWait '"$UNINSTALL_PROG" /S _?=$OLD_PATH' $0      DetailPrint "uninst.exe returned $0"      Delete "$UNINSTALL_PROG"      RMDir $OLD_PATH

我們拿到的變量UNINSTALLPROG是帶有uninst.exe的,-10 拿到所謂的安裝路徑,輸出到變量$OLDPATH,然后執行ExecWait 執行uninst.exe

/S(區分大小寫)表示靜默卸載,

_?= 指定 $INSTDIR 這也會阻止卸載程序把它自己復制到臨時文件夾再運行。這將可以使用 ExecWait 來運行卸載程序并等待它完成。這個參數必須是最后一個參數并且不能帶任何引號即使路徑帶有空格。把&0作為返回代碼

這地方或許會遇到一個問題,但我們執行uninst.exe的時候,我們是執行的卸載,我們執行卸載肯定會調用un.onInit un.onUninstSuccess回調函數,以及卸載過程中的用戶函數,我當時就遇到MessageBox彈出的問題,嚴重影響使用,這個時候我們可以使用 /SD 來指定一個上面列出的返回值當在卸載或安裝程序靜默卸載或安裝時作為返回值

舉個例子:卸載初始化的時候,提示是否卸載,

MessageBox MB_YESNO "確定要移除 $(^Name) ?" /SD IDYES IDYES +2

格式為:

 MessageBox MB_XX text [/SD IDXX] [IDXX target1] [IDXX target2] ...

這樣就可以完成檢測并卸載的過程了,當卸載過程結束我們再執行安裝過程。


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 宜昌市| 霞浦县| 德格县| 印江| 漳平市| 周宁县| 汽车| 沈丘县| 东乡| 雷波县| 隆尧县| 卓资县| 溧阳市| 芜湖市| 家居| 子长县| 大邑县| 碌曲县| 军事| 黄山市| 安宁市| 富裕县| 凤冈县| 南投市| 分宜县| 台中县| 磴口县| 科尔| 娱乐| 峨眉山市| 吉林省| 临漳县| 屏边| 永兴县| 竹山县| 长武县| 满城县| 呼玛县| 贺州市| 龙胜| 探索|