[英]How to check and install .net C# application using NSIS Installer
[英]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.