簡體   English   中英

無法從 NSIS 安裝程序安裝多個應用程序

[英]Cannot install multiple application from NSIS installer

我一直在使用NSIS for win form application 來創建 Windows 安裝程序。最近我的一位測試人員報告了一個錯誤,即 NSIS 已停止在Program Files (x86)創建多個文件夾。

我們在多個環境( Staging,Prep.,Production )上工作Staging,Prep.,Production以前我能夠為環境中的每個環境創建一個安裝程序,但最近我相信Program Files (x86)中的Program Files (x86)被覆蓋了。

以下是場景:

我為暫存環境創建了一個安裝程序。一切順利,文件安裝在Program Files (x86) ,創建了桌面圖標,應用程序被添加到啟動菜單我能夠運行,一切看起來都很好

現在我正在嘗試為預生產環境創建一個安裝程序。編譯NSIS腳本並測試安裝程序后,目標文件夾沒有被覆蓋,它采用相同的路徑進行暫存。仍然,在繼續安裝程序之后,這就是正在發生的事情. 不會在Program Files (x86)創建新文件夾。 我只有暫存文件夾。 創建了一個新的桌面圖標,但是當我運行暫存應用程序時,預生產正在運行卸載暫存應用程序將同時卸載這兩個環境

我不知道發生了什么我附上了NSIS腳本。請看一下它,讓我知道我做錯了什么。

感謝和問候

以下是 NSIS 腳本:

; Script generated by the HM NIS Edit Script Wizard.

; HM NIS Edit Wizard helper defines
!define PRODUCT_NAME "iContracts staging - Bulk Contract Uploader v 7.9"
!define DIR_NAME "icontracts-UCO-BulkLoader-staging"
!define PRODUCT_VERSION ""
!define PRODUCT_PUBLISHER "iContracts"
!define PRODUCT_DIR_REGKEY "Software\Microsoft\Windows\CurrentVersion\App Paths\UCO\IcnBulkUpload.exe"
!define PRODUCT_UNINST_KEY "Software\Microsoft\Windows\CurrentVersion\Uninstall\UCO\${PRODUCT_NAME}"
!define PRODUCT_UNINST_ROOT_KEY "HKLM"

; MUI 1.67 compatible ------
!include "MUI.nsh"

; MUI Settings
!define MUI_ABORTWARNING
!define MUI_ICON ".\Images\mine.ico"
!define MUI_UNICON "${NSISDIR}\Contrib\Graphics\Icons\modern-uninstall.ico"

; Welcome page
;!insertmacro MUI_PAGE_WELCOME
; Directory page
!insertmacro MUI_PAGE_DIRECTORY
; Instfiles page
!insertmacro MUI_PAGE_INSTFILES
; Finish page
!define MUI_FINISHPAGE_RUN "$INSTDIR\IcnBulkUpload.exe"
!insertmacro MUI_PAGE_FINISH

; Uninstaller pages
!insertmacro MUI_UNPAGE_INSTFILES

; Language files
!insertmacro MUI_LANGUAGE "English"

; MUI end ------

Name "${PRODUCT_NAME} ${PRODUCT_VERSION}"
OutFile "${PRODUCT_NAME}.exe"
;InstallDir "$PROGRAMFILES\${PRODUCT_NAME}"
InstallDir "$PROGRAMFILES\${DIR_NAME}"
InstallDirRegKey HKLM "${PRODUCT_DIR_REGKEY}" ""
ShowInstDetails show
ShowUnInstDetails show





Function GetDotNet
  IfFileExists "$WINDIR\Microsoft.NET\Framework\v2.0.50727\installUtil.exe" NextStep
  MessageBox MB_OK|MB_ICONEXCLAMATION "You must have the Microsoft .NET Framework 2.0 Installed to use this application. $\n$\nClick 'Open' in the following file dialog to download and run the Microsoft .NET Framework Installer..."
  ExecShell Open "http://www.microsoft.com/downloads/info.aspx?na=90&p=&SrcDisplayLang=en&SrcCategoryId=&SrcFamilyId=0856eacb-4362-4b0d-8edd-aab15c5e04f5&u=http%3a%2f%2fdownload.microsoft.com%2fdownload%2f5%2f6%2f7%2f567758a3-759e-473e-bf8f-52154438565a%2fdotnetfx.exe" SW_SHOWNORMAL
  Quit
NextStep:
FunctionEnd


Section "Check Dot Net" SEC02
Call GetDotNet

SectionEnd



Section "MainSection" SEC01

  SetOutPath "$INSTDIR"
  SetOverwrite on
  File ".\bin\Debug\IcnBulkUpload.exe"
  File ".\bin\Debug\IcnBulkUpload.exe.config"
  File ".\mine.ICO"
  CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}"
  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\IcnBulkUpload.exe" "" "$INSTDIR\mine.ICO"
  CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\IcnBulkUpload.exe" "" "$INSTDIR\mine.ICO"
;  CreateDirectory ""
  CreateShortCut "$STARTMENU.lnk" "$INSTDIR\IcnBulkUpload.exe"
SectionEnd

Section -AdditionalIcons
  CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk" "$INSTDIR\uninst.exe"
SectionEnd

Section -Post
  WriteUninstaller "$INSTDIR\uninst.exe"
  WriteRegStr HKLM "${PRODUCT_DIR_REGKEY}" "" "$INSTDIR\IcnBulkUpload.exe"
  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\IcnBulkUpload.exe"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "DisplayVersion" "${PRODUCT_VERSION}"
  WriteRegStr ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}" "Publisher" "${PRODUCT_PUBLISHER}"
SectionEnd


Function un.onUninstSuccess
  HideWindow
  MessageBox MB_ICONINFORMATION|MB_OK "$(^Name) was successfully removed from your computer."
FunctionEnd

Function un.onInit
  MessageBox MB_ICONQUESTION|MB_YESNO|MB_DEFBUTTON2 "Are you sure you want to completely remove $(^Name) and all of its components?" IDYES +2
  Abort
FunctionEnd

Section Uninstall
  Delete "$INSTDIR\uninst.exe"
  Delete "$INSTDIR\IcnBulkUpload.exe"
  Delete "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall.lnk"
  Delete "$STARTMENU.lnk"
  Delete "$DESKTOP\iContracts.lnk"
  Delete "$SMPROGRAMS\${PRODUCT_NAME}\iContracts.lnk"

  RMDir /r "$SMPROGRAMS\${PRODUCT_NAME}"
  RMDir /r "$INSTDIR"
  RMDir ""

  DeleteRegKey ${PRODUCT_UNINST_ROOT_KEY} "${PRODUCT_UNINST_KEY}"
  DeleteRegKey HKLM "${PRODUCT_DIR_REGKEY}"
  SetAutoClose true
SectionEnd

如果找到現有安裝, InstallDirRegKey屬性會更改$InstDir 為每種安裝類型使用 PRODUCT_UNINST_KEY 的唯一值,並將其用作InstallDirRegKey使用的路徑。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM