在用NISEDIT打安裝包後遇到三個問題
1、在重新包裝時,程序路徑會出現問題,會指向子文件夾中,程序就公出錯。而且多次重複包裝後文件路徑會變長
原因:研究代碼,發現是安裝時寫入的註冊表中的程序路徑不對
解決:改爲正確的路徑
Section -Post
WriteUninstaller "$INSTDIR\uninst.exe"
WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\frogTunnel.exe" //此爲改正後的代碼,原先是指向了$INSTDIR的子目錄中,所以當重複安裝時路徑會出錯
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayName" "$(^Name)"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "UninstallString" "$INSTDIR\uninst.exe"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayIcon" "$INSTDIR\frogTunnel.exe" //此爲改正後的代碼,原先是指向了$INSTDIR的子目錄中,所以當重複安裝時路徑會出錯
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "URLInfoAbout" "${PRODUCT_WEB_SITE}"
WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd
2、在程序卸載後,有部分文件沒有刪除掉。
原因:有的文件夾沒有寫入到移除過程中
RMDir "$INSTDIR\Adobe AIR\Versions\1.0"
RMDir "$INSTDIR\Adobe AIR"
如上Versions文件夾沒有移除
解決:在兩句中間加入移除Versions語句
RMDir "$INSTDIR\Adobe AIR\Versions\1.0"
RMDir "$INSTDIR\Adobe AIR\Versions"
RMDir "$INSTDIR\Adobe AIR"
3、同樣是卸載後,開始 的快捷方式沒有刪除
原因:可能和用戶權限有關係,具體沒有深究
解決:
(1)加入admin權限 RequestExecutionLevel admin
如
ShowInstDetails show
ShowUnInstDetails show
RequestExecutionLevel admin #NOTE: You still need to check user rights with UserInfo!
Section "MainSection" SEC01
(2)在創建開始菜單和卸載時加入SetShellVarContext all
如
//創建開始菜單
SetShellVarContext all
!insertmacro MUI_STARTMENU_WRITE_BEGIN Application
CreateDirectory "$SMPROGRAMS\$ICONS_GROUP"
CreateShortCut "$SMPROGRAMS\$ICONS_GROUP\鐵路隧道限界.lnk" "$INSTDIR\frogTunnel.exe"
CreateShortCut "$DESKTOP\鐵路隧道限界.lnk" "$INSTDIR\frogTunnel.exe"
//卸載
Section Uninstall
SetShellVarContext all