From 5383c09e3d51a56580fc4e1a25b74f0998f23e0a Mon Sep 17 00:00:00 2001 From: Ryan Caezar Itang Date: Thu, 15 Jul 2021 20:45:26 +0800 Subject: [PATCH] Replace InnoSetup with improved NSIS Setup --- setup.iss | 56 --------------------------- setup.nsi | 112 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 112 insertions(+), 56 deletions(-) delete mode 100644 setup.iss create mode 100644 setup.nsi diff --git a/setup.iss b/setup.iss deleted file mode 100644 index 927eabb73..000000000 --- a/setup.iss +++ /dev/null @@ -1,56 +0,0 @@ -; Script generated by the Inno Script Studio Wizard. -; SEE THE DOCUMENTATION FOR DETAILS ON CREATING INNO SETUP SCRIPT FILES! - -#define MyAppName "RustDesk" -#define MyAppVersion "1.1.5" -#define MyAppPublisher "Carriez, Inc." -#define MyAppURL "https://www.rustdesk.com/" -#define MyAppExeName "RustDesk.exe" -#define MyAppExe ".\RustDesk.exe" - -[Setup] -; NOTE: The value of AppId uniquely identifies this application. -; Do not use the same AppId value in installers for other applications. -; (To generate a new GUID, click Tools | Generate GUID inside the IDE.) -AppId={{54E86BC2-6C85-41F3-A9EB-1A94AC9B1F93} -AppName={#MyAppName} -AppVersion={#MyAppVersion} -;AppVerName={#MyAppName} {#MyAppVersion} -AppPublisher={#MyAppPublisher} -AppPublisherURL={#MyAppURL} -AppSupportURL={#MyAppURL} -AppUpdatesURL={#MyAppURL} -DefaultDirName={pf}\{#MyAppName} -DisableDirPage=yes -DefaultGroupName={#MyAppName} -OutputBaseFilename=setup -Compression=lzma -SolidCompression=yes -ArchitecturesInstallIn64BitMode=x64 -UninstallDisplayIcon={app}\{#MyAppExeName} - -[Languages] -Name: "english"; MessagesFile: "compiler:Default.isl" - -[Tasks] -Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked - -[Files] -Source: "{#MyAppExe}"; DestDir: "{app}"; Flags: ignoreversion -; NOTE: Don't use "Flags: ignoreversion" on any shared system files - -[Icons] -Name: "{group}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}" -Name: "{commondesktop}\{#MyAppName}"; Filename: "{app}\{#MyAppExeName}"; Tasks: desktopicon -Name: "{commonstartup}\{#MyAppName} Tray"; Filename: "{app}\{#MyAppExeName}"; Parameters: "--tray"; - -[Run] -Filename: "sc.exe"; Parameters: "create {#MyAppName} start= auto DisplayName= ""{#MyAppName} Service"" binPath= ""\""{app}\{#MyAppExeName}\"" --service"""; Flags: runhidden -Filename: "netsh.exe"; Parameters: "advfirewall firewall add rule name=""{#MyAppName} Service"" dir=in action=allow program=""{app}\{#MyAppExeName}"" enable=yes"; Flags: runhidden -Filename: "sc.exe"; Parameters: "start {#MyAppName}" ; Flags: runhidden - -[UninstallRun] -Filename: "sc.exe"; Parameters: "stop {#MyAppName}" ; Flags: runhidden -Filename: "sc.exe"; Parameters: "delete {#MyAppName}" ; Flags: runhidden -Filename: "netsh.exe"; Parameters: "advfirewall firewall delete rule name=""{#MyAppName} Service"""; Flags: runhidden - diff --git a/setup.nsi b/setup.nsi new file mode 100644 index 000000000..bbca85c71 --- /dev/null +++ b/setup.nsi @@ -0,0 +1,112 @@ +Unicode true + +#################################################################### +# Includes + +!include nsDialogs.nsh +!include MUI2.nsh +!include x64.nsh +!include LogicLib.nsh + +#################################################################### +# File Info + +!define PRODUCT_NAME "RustDesk" +!define PRODUCT_DESCRIPTION "Installer for ${PRODUCT_NAME}" +!define COPYRIGHT "Copyright © 2021" +!define VERSION "1.1.6" + +VIProductVersion "${VERSION}.0" +VIAddVersionKey "ProductName" "${PRODUCT_NAME}" +VIAddVersionKey "ProductVersion" "${VERSION}" +VIAddVersionKey "FileDescription" "${PRODUCT_DESCRIPTION}" +VIAddVersionKey "LegalCopyright" "${COPYRIGHT}" +VIAddVersionKey "FileVersion" "${VERSION}.0" + +#################################################################### +# Installer Attributes + +Name "${PRODUCT_NAME}" +Outfile "rustdesk-${VERSION}-setup.exe" +Caption "Setup - ${PRODUCT_NAME}" +BrandingText "${PRODUCT_NAME}" + +ShowInstDetails show +RequestExecutionLevel admin +SetOverwrite on + +InstallDir "$PROGRAMFILES64\${PRODUCT_NAME}" + +#################################################################### +# Pages + +!define MUI_ICON "src\tray-icon.ico" +!define MUI_ABORTWARNING +!define MUI_LANGDLL_ALLLANGUAGES +!define MUI_FINISHPAGE_SHOWREADME "" +!define MUI_FINISHPAGE_SHOWREADME_NOTCHECKED +!define MUI_FINISHPAGE_SHOWREADME_TEXT "Create Desktop Shortcut" +!define MUI_FINISHPAGE_SHOWREADME_FUNCTION CreateDesktopShortcut +!define MUI_FINISHPAGE_RUN "$INSTDIR\${PRODUCT_NAME}.exe" + +!insertmacro MUI_PAGE_DIRECTORY +!insertmacro MUI_PAGE_INSTFILES +!insertmacro MUI_PAGE_FINISH + +#################################################################### +# Language + +!insertmacro MUI_LANGUAGE "English" +!insertmacro MUI_LANGUAGE "SimpChinese" + +#################################################################### +# Sections + +Section "Install" + SetOutPath $INSTDIR + + # Regkeys + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayIcon" "$INSTDIR\${PRODUCT_NAME}.exe" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayName" "${PRODUCT_NAME} (x64)" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "DisplayVersion" "${VERSION}" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "UninstallString" '"$INSTDIR\${PRODUCT_NAME}.exe" --uninstall' + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "InstallLocation" "$INSTDIR" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "Publisher" "Carriez, Inc." + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "HelpLink" "https://www.rustdesk.com/" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "URLInfoAbout" "https://www.rustdesk.com/" + WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\${PRODUCT_NAME}" "URLUpdateInfo" "https://www.rustdesk.com/" + + nsExec::Exec "taskkill /F /IM ${PRODUCT_NAME}.exe" + Sleep 500 ; Give time for process to be completely killed + File "${PRODUCT_NAME}.exe" + + SetShellVarContext all + CreateShortCut "$INSTDIR\Uninstall ${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe" "--uninstall" "msiexec.exe" + CreateDirectory "$SMPROGRAMS\${PRODUCT_NAME}" + CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe" + CreateShortCut "$SMPROGRAMS\${PRODUCT_NAME}\Uninstall ${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe" "--uninstall" "msiexec.exe" + CreateShortCut "$SMSTARTUP\${PRODUCT_NAME} Tray.lnk" "$INSTDIR\${PRODUCT_NAME}.exe" "--tray" + + nsExec::Exec 'sc create ${PRODUCT_NAME} start=auto DisplayName="${PRODUCT_NAME} Service" binPath= "\"$INSTDIR\${PRODUCT_NAME}.exe\" --service"' + nsExec::Exec 'netsh advfirewall firewall add rule name="${PRODUCT_NAME} Service" dir=in action=allow program="$INSTDIR\${PRODUCT_NAME}.exe" enable=yes' + nsExec::Exec 'sc start ${PRODUCT_NAME}' +SectionEnd + +#################################################################### +# Functions + +Function .onInit + # RustDesk is 64-bit only + ${IfNot} ${RunningX64} + MessageBox MB_ICONSTOP "${PRODUCT_NAME} is 64-bit only!" + Quit + ${EndIf} + ${DisableX64FSRedirection} + SetRegView 64 + + !insertmacro MUI_LANGDLL_DISPLAY +FunctionEnd + +Function CreateDesktopShortcut + CreateShortCut "$DESKTOP\${PRODUCT_NAME}.lnk" "$INSTDIR\${PRODUCT_NAME}.exe" +FunctionEnd \ No newline at end of file