121 lines
5.5 KiB
Plaintext
121 lines
5.5 KiB
Plaintext
<#@ template language="C#" #>
|
|
<#@ assembly name="System.Core" #>
|
|
<#@ import namespace="System.Linq" #>
|
|
<#@ import namespace="System.Text" #>
|
|
<#@ import namespace="System.Collections.Generic" #>
|
|
Unicode true
|
|
ManifestDPIAware true
|
|
!define APPNAME "<#= AppName #>"
|
|
!define EXECUTABLE "<#= Executable #>"
|
|
!define COMPANYNAME "<#= CompanyName #>"
|
|
!define DESCRIPTION "<#= Description #>"
|
|
!define ASSEMBLYNAME "<#= AssemblyName #>"
|
|
!define VERSION <#= Version.ToString() #>
|
|
!define HELPURL <#= HelpUrl #>
|
|
!define INSTALLSIZE <#= InstallSize #>
|
|
!define ISMANAGED <#= IsManaged ? 1 : 0 #>
|
|
; exampleCmd: makensis.exe /DVERSION=1.0.0.5 /DNAME=WpfApp1 Setup.nsi
|
|
|
|
Name "${APPNAME}"
|
|
OutFile "<#= OutFile #>"
|
|
InstallDir "$LOCALAPPDATA\Programs\${ASSEMBLYNAME}"
|
|
RequestExecutionLevel user
|
|
SetCompressor /SOLID lzma
|
|
SilentUnInstall silent
|
|
; Subcaption 3 " "
|
|
XPStyle on
|
|
AutoCloseWindow true
|
|
ChangeUI all "<#= UserInterface #>"
|
|
Icon "<#= IconPath #>"
|
|
UninstallIcon "${NSISDIR}\Contrib\Graphics\Icons\nsis3-uninstall.ico"
|
|
ShowInstDetails nevershow
|
|
ShowUninstDetails nevershow
|
|
BrandingText "${COMPANYNAME}"
|
|
|
|
VIProductVersion <#= LegacyVersion.ToString(4) #>
|
|
VIAddVersionKey ProductName "${APPNAME}"
|
|
VIAddVersionKey Comments ""
|
|
VIAddVersionKey CompanyName "${COMPANYNAME}"
|
|
VIAddVersionKey LegalCopyright "${COMPANYNAME}"
|
|
VIAddVersionKey FileDescription "${DESCRIPTION}"
|
|
VIAddVersionKey FileVersion "${VERSION}"
|
|
VIAddVersionKey ProductVersion "${VERSION}"
|
|
VIAddVersionKey OriginalFilename "<#= OutFile #>"
|
|
|
|
;--------------------------------
|
|
; The stuff to install
|
|
Section "install" ;No components page, name is not important
|
|
DetailPrint 'Installing ${APPNAME}. Please wait...'
|
|
SetShellVarContext current
|
|
SetDetailsPrint None
|
|
IfSilent +2
|
|
RMDir /r $INSTDIR
|
|
SetOutPath $INSTDIR
|
|
|
|
; Create sub-directories
|
|
<# foreach(var directory in Directories) { #><#= $" CreateDirectory \"$INSTDIR\\{directory}\"{Environment.NewLine}" #><# } #>
|
|
|
|
; Put file there
|
|
<#foreach(var file in Files) { #><#= $" File \"/oname={file.Target}\" \"{file.Source}\"{Environment.NewLine}" #><# } #>
|
|
|
|
WriteUninstaller "$INSTDIR\uninstall.exe"
|
|
; Desktop
|
|
CreateShortCut "$DESKTOP\${APPNAME}.lnk" "$INSTDIR\${EXECUTABLE}"
|
|
|
|
# Start Menu
|
|
CreateDirectory "$SMPROGRAMS\${COMPANYNAME}"
|
|
CreateShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\${EXECUTABLE}"
|
|
|
|
# Update pinned Taskbar
|
|
IfFileExists "$APPDATA\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\${APPNAME}.lnk" 0 +2
|
|
CreateShortCut "$APPDATA\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\${APPNAME}.lnk" "$INSTDIR\${EXECUTABLE}"
|
|
SetOutPath $INSTDIR\app-${VERSION}
|
|
StrCpy $0 ${EXECUTABLE} -4
|
|
IfFileExists "$APPDATA\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\$0.lnk" 0 +2
|
|
CreateShortCut "$APPDATA\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\$0.lnk" "$INSTDIR\app-${VERSION}\${EXECUTABLE}"
|
|
|
|
# Registry information for add/remove programs
|
|
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayName" "${APPNAME}"
|
|
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
|
|
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
|
|
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "InstallLocation" "$\"$INSTDIR$\""
|
|
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayIcon" "$\"$INSTDIR\app-${VERSION}\${EXECUTABLE}$\""
|
|
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "Publisher" "${COMPANYNAME}"
|
|
; WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "HelpLink" "${HELPURL}"
|
|
WriteRegStr HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "DisplayVersion" "${VERSION}"
|
|
# There is no option for modifying or repairing the install
|
|
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoModify" 1
|
|
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "NoRepair" 1
|
|
# Set the INSTALLSIZE constant (!defined at the top of this script) so Add/Remove Programs can accurately report the size
|
|
WriteRegDWORD HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}" "EstimatedSize" ${INSTALLSIZE}
|
|
SectionEnd ; end the section
|
|
|
|
Function .onInstSuccess
|
|
IfSilent +2
|
|
Exec '"$INSTDIR\${EXECUTABLE}"'
|
|
FunctionEnd
|
|
|
|
Section "uninstall"
|
|
DetailPrint 'Please wait...'
|
|
SetShellVarContext current
|
|
SetDetailsPrint None
|
|
SetAutoClose true
|
|
|
|
# Remove Start Menu launcher
|
|
Delete "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk"
|
|
Delete "$DESKTOP\${APPNAME}.lnk"
|
|
StrCpy $0 ${EXECUTABLE} -4
|
|
Delete "$APPDATA\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\${APPNAME}.lnk"
|
|
Delete "$APPDATA\Microsoft\Internet Explorer\Quick Launch\User Pinned\TaskBar\$0.lnk"
|
|
# Try to remove the Start Menu folder - this will only happen if it is empty
|
|
RMDir "$SMPROGRAMS\${COMPANYNAME}"
|
|
|
|
# Always delete uninstaller as the last action
|
|
delete $INSTDIR\uninstall.exe
|
|
|
|
# Try to remove the install directory - this will only happen if it is empty
|
|
RMDir /r /REBOOTOK $INSTDIR
|
|
|
|
# Remove uninstaller information from the registry
|
|
DeleteRegKey HKCU "Software\Microsoft\Windows\CurrentVersion\Uninstall\${APPNAME}"
|
|
sectionEnd |