windows: switch to nsis installer packaging system

Refs #73036

Change-Id: I85b07445fae138d5df686b51bfaaa2264b6c87ba
diff --git a/ring.nsi b/ring.nsi
new file mode 100644
index 0000000..b444e1f
--- /dev/null
+++ b/ring.nsi
@@ -0,0 +1,141 @@
+!define APPNAME "Ring"
+!define COMPANYNAME "Savoir-Faire Linux"
+!define DESCRIPTION "The Ring client for Windows"
+# These three must be integers
+!define VERSIONMAJOR 0
+!define VERSIONMINOR 1
+!define VERSIONBUILD 1
+# These will be displayed by the "Click here for support information" link in "Add/Remove Programs"
+# It is possible to use "mailto:" links in here to open the email client
+!define HELPURL "https://projects.savoirfairelinux.com/projects/ring/wiki" # "Support Information" link
+!define UPDATEURL "http://ring.cx/en/documentation/windows-installation" # "Product Updates" link
+!define ABOUTURL "http://ring.cx/en#about" # "Publisher" link
+
+!include "MUI2.nsh"
+
+!define MUI_WELCOMEPAGE
+!define MUI_LICENSEPAGE
+!define MUI_DIRECTORYPAGE
+!define MUI_ABORTWARNING
+!define MUI_UNINSTALLER
+!define MUI_UNCONFIRMPAGE
+!define MUI_FINISHPAGE
+
+!insertmacro MUI_LANGUAGE "English"
+
+RequestExecutionLevel admin ;Require admin rights on NT6+ (When UAC is turned on)
+
+InstallDir "$PROGRAMFILES\${COMPANYNAME}\${APPNAME}"
+
+# rtf or txt file - remember if it is txt, it must be in the DOS text format (\r\n)
+LicenseData "License.rtf"
+# This will be in the installer/uninstaller's title bar
+Name "${COMPANYNAME} - ${APPNAME}"
+
+outFile "ring-windows-${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}.exe"
+
+!include LogicLib.nsh
+!include "FileFunc.nsh"
+
+# Just three pages - license agreement, install location, and installation
+page license
+page directory
+Page instfiles
+
+!macro VerifyUserIsAdmin
+UserInfo::GetAccountType
+pop $0
+${If} $0 != "admin" ;Require admin rights on NT4+
+        messageBox mb_iconstop "Administrator rights required!"
+        setErrorLevel 740 ;ERROR_ELEVATION_REQUIRED
+        quit
+${EndIf}
+!macroend
+
+function .onInit
+        setShellVarContext all
+        !insertmacro VerifyUserIsAdmin
+functionEnd
+
+section "install"
+        # Files for the install directory - to build the installer, these should be in the same directory as the install script (this file)
+        setOutPath $INSTDIR
+        # Files added here should be removed by the uninstaller (see section "uninstall")
+        file "RingClientWindows.exe"
+        file "ring.ico"
+        file *.dll
+        setOutPath $INSTDIR\platforms
+        file platforms/*
+        setOutPath $INSTDIR\imageformats
+        file imageformats/*
+        setOutPath $INSTDIR\ringtones
+        file ringtones/*
+
+        # Uninstaller - See function un.onInit and section "uninstall" for configuration
+        writeUninstaller "$INSTDIR\uninstall.exe"
+
+        #Desktop
+        CreateShortCut "$DESKTOP\Ring.lnk" "$INSTDIR\RingClientWindows.exe" ""
+
+        # Start Menu
+        createDirectory "$SMPROGRAMS\${COMPANYNAME}"
+        createShortCut "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk" "$INSTDIR\RingClientWindows.exe" "" "$INSTDIR\ring.ico"
+
+        # Registry information for add/remove programs
+        WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayName" ${APPNAME}
+        WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "UninstallString" "$\"$INSTDIR\uninstall.exe$\""
+        WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "QuietUninstallString" "$\"$INSTDIR\uninstall.exe$\" /S"
+        WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "InstallLocation" "$\"$INSTDIR$\""
+        WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayIcon" "$\"$INSTDIR\ring.ico$\""
+        WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "Publisher" "${COMPANYNAME}"
+        WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "HelpLink" "$\"${HELPURL}$\""
+        WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "URLUpdateInfo" "$\"${UPDATEURL}$\""
+        WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "URLInfoAbout" "$\"${ABOUTURL}$\""
+        WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "DisplayVersion" "${VERSIONMAJOR}.${VERSIONMINOR}.${VERSIONBUILD}"
+        WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMajor" ${VERSIONMAJOR}
+        WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "VersionMinor" ${VERSIONMINOR}
+        # There is no option for modifying or repairing the install
+        WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoModify" 1
+        WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "NoRepair" 1
+        ${GetSize} "$INSTDIR" "/S=0K" $0 $1 $2
+        IntFmt $0 "0x%08X" $0
+        WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}" "EstimatedSize" "$0"
+sectionEnd
+
+# Uninstaller
+
+function un.onInit
+        SetShellVarContext all
+
+        #Verify the uninstaller - last chance to back out
+        MessageBox MB_OKCANCEL "Permanantly remove ${APPNAME}?" IDOK next
+                Abort
+        next:
+        !insertmacro VerifyUserIsAdmin
+functionEnd
+
+section "uninstall"
+
+        # Remove Start Menu launcher
+        delete "$SMPROGRAMS\${COMPANYNAME}\${APPNAME}.lnk"
+        # Try to remove the Start Menu folder - this will only happen if it is empty
+        rmDir "$SMPROGRAMS\${COMPANYNAME}"
+
+        # Remove files
+        delete $INSTDIR\RingClientWindows.exe
+        delete $INSTDIR\ring.ico
+        delete $INSTDIR\*.dll
+        rmDir /r $INSTDIR\platforms
+        rmDir /r $INSTDIR\imageformats
+        rmDir /r $INSTDIR\ringtones
+
+        # 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 $INSTDIR
+
+        # Remove uninstaller information from the registry
+        DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${COMPANYNAME} ${APPNAME}"
+sectionEnd