diff --git a/CHANGELOG.md b/CHANGELOG.md index 78299e12d..f336ad6e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,34 @@ + +## v1.17.6 (2022-03-06) + + +#### Bug Fixes + +* **Windows:** Correct Program Files directory for 32-bit Windows ([47406e74](https://github.com/qTox/qTox/commit/47406e742297b167a0a6c606ddd9a20823959a06)) +* **macos:** update deprecated AVFoundation API ([484ea7ce](https://github.com/qTox/qTox/commit/484ea7ce9be971266a890c9bb76b4e23d0c8a622)) + + + + +## v1.17.5 (2022-03-05) + + +#### Bug Fixes + +* Update video API usage for newer libavcodec ([f5fabc2f](https://github.com/qTox/qTox/commit/f5fabc2fe24b6f01e47a527b982395a5305d31f6)) +* **Windows:** + * Restrict non-default install directory permissions ([553bd47e](https://github.com/qTox/qTox/commit/553bd47e8171fd4f15e062e4faf734e32002f6fb)) + * Build NSIS installer in Unicode mode ([9f84184b](https://github.com/qTox/qTox/commit/9f84184ba815bfc892691fa611c6756721ba1333)) + * Define installer language before trying to access it ([1353fc93](https://github.com/qTox/qTox/commit/1353fc934ed70e9bfab3e50e42dba5eb139cd59e)) + +#### Features + +* **Settings:** Add setting for hiding group join and leave system messages ([916e797c](https://github.com/qTox/qTox/commit/916e797c10d10ba556e9a3339353f1bd97663d15)) +* **UI:** Add UI For controlling group join and leave system messages setting ([423049db](https://github.com/qTox/qTox/commit/423049db50ffea14ec222e1a83ee976029a6afaf)) +* **chatlog:** Disable join and leave system messages based on setting ([ee0334ac](https://github.com/qTox/qTox/commit/ee0334acc55215ed8e94bae8fa4ff8976834af20)) + + + ## v1.17.14 (2021-12-14) diff --git a/INSTALL.md b/INSTALL.md index fd77f5626..6a272aa26 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -406,7 +406,7 @@ make install clean ## OS X -Supported OS X versions: >=10.13. (NOTE: only 10.13 is tested during CI) +Supported OS X versions: >=10.15. Compiling qTox on OS X for development requires 2 tools: [Xcode](https://developer.apple.com/xcode/) and [homebrew](https://brew.sh). diff --git a/README.md b/README.md index 067b08bd0..a40a09f72 100644 --- a/README.md +++ b/README.md @@ -154,20 +154,20 @@ AED3 1134 9C23 A123 E5C4 AA4B 139C A045 3DA2 D773 ``` [#qtox@libera.chat]: https://web.libera.chat/#qtox -[64 bit release]: https://github.com/qTox/qTox/releases/download/v1.17.4/setup-qtox-x86_64-release.exe -[32 bit release]: https://github.com/qTox/qTox/releases/download/v1.17.4/setup-qtox-i686-release.exe +[64 bit release]: https://github.com/qTox/qTox/releases/download/v1.17.6/setup-qtox-x86_64-release.exe +[32 bit release]: https://github.com/qTox/qTox/releases/download/v1.17.6/setup-qtox-i686-release.exe [32nightly]: https://github.com/qTox/qTox-nightly-releases/releases/download/ci-master-latest/setup-qtox-i686-release.exe [64nightly]: https://github.com/qTox/qTox-nightly-releases/releases/download/ci-master-latest/setup-qtox-x86_64-release.exe -[Flatpak]: https://github.com/qTox/qTox/releases/download/v1.17.4/qTox-v1.17.4.x86_64.flatpak +[Flatpak]: https://github.com/qTox/qTox/releases/download/v1.17.6/qTox-v1.17.6.x86_64.flatpak [Flatpak nightly]: https://github.com/qTox/qTox-nightly-releases/releases/download/ci-master-latest/qtox.flatpak -[AppImage]: https://github.com/qTox/qTox/releases/download/v1.17.4/qTox-v1.17.4.x86_64.AppImage +[AppImage]: https://github.com/qTox/qTox/releases/download/v1.17.6/qTox-v1.17.6.x86_64.AppImage [AppImage nightly]: https://github.com/qTox/qTox-nightly-releases/releases/tag/ci-master-latest [Arch]: /INSTALL.md#arch [Building instructions]: /INSTALL.md#os-x [Contributing]: /CONTRIBUTING.md#how-to-start-contributing [Debian]: https://packages.debian.org/search?keywords=qtox [easy issues]: https://github.com/qTox/qTox/labels/E-easy -[Latest release]: https://github.com/qTox/qTox/releases/download/v1.17.4/qTox.dmg +[Latest release]: https://github.com/qTox/qTox/releases/download/v1.17.6/qTox.dmg [Latest nightly]: https://github.com/qTox/qTox-nightly-releases/releases/download/ci-master-latest/qTox.dmg [Fedora]: /INSTALL.md#fedora [Gentoo]: /INSTALL.md#gentoo diff --git a/buildscripts/build_nsisshellexecasuser_windows.sh b/buildscripts/build_nsisshellexecasuser_windows.sh index 0132b1c4f..7d766635b 100755 --- a/buildscripts/build_nsisshellexecasuser_windows.sh +++ b/buildscripts/build_nsisshellexecasuser_windows.sh @@ -8,4 +8,4 @@ set -euo pipefail "$(dirname "$0")"/download/download_nsisshellexecasuser.sh -cp ShellExecAsUser.dll /usr/share/nsis/Plugins/x86-ansi +cp ShellExecAsUser.dll /usr/share/nsis/Plugins/x86-unicode diff --git a/osx/info.plist b/osx/info.plist index b56e5265c..708d53b34 100644 --- a/osx/info.plist +++ b/osx/info.plist @@ -65,7 +65,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.17.4 + 1.17.6 CFBundleSignature toxq CFBundleURLTypes @@ -84,7 +84,7 @@ CFBundleVersion - 1.17.4 + 1.17.6 NSPrincipalClass NSApplication NSCameraUsageDescription diff --git a/res/io.github.qtox.qTox.appdata.xml b/res/io.github.qtox.qTox.appdata.xml index 8d68ca5dc..d2ec84459 100644 --- a/res/io.github.qtox.qTox.appdata.xml +++ b/res/io.github.qtox.qTox.appdata.xml @@ -68,7 +68,7 @@ intense -​ +​ diff --git a/windows/qtox.nsi b/windows/qtox.nsi index 12c9a2dbc..7595a5907 100644 --- a/windows/qtox.nsi +++ b/windows/qtox.nsi @@ -1,3 +1,4 @@ +Unicode True ################### #META ################### @@ -30,76 +31,90 @@ VIAddVersionKey "FileDescription" "${DESCRIPTION}" VIAddVersionKey "FileVersion" "${VERSION}" ############## -#UNINSTALL LOG +#DEFINE MACROS ############## +;Set the name of the uninstall log + !define UninstLog "uninstall.log" + Var UninstLog + ;AddItem macro !macro AddItem Path - FileWrite $UninstLog "${Path}$\r$\n" + FileWriteUTF16LE $UninstLog "${Path}$\r$\n" !macroend + !define AddItem "!insertmacro AddItem" ;File macro !macro File FileName IfFileExists "$OUTDIR\${FileName}" +2 - FileWrite $UninstLog "$OUTDIR\${FileName}$\r$\n" + FileWriteUTF16LE $UninstLog "$OUTDIR\${FileName}$\r$\n" File "${FileName}" !macroend + !define File "!insertmacro File" ;CreateShortcut macro !macro CreateShortcut FilePath FilePointer Pamameters Icon IconIndex - FileWrite $UninstLog "${FilePath}$\r$\n" + FileWriteUTF16LE $UninstLog "${FilePath}$\r$\n" CreateShortcut "${FilePath}" "${FilePointer}" "${Pamameters}" "${Icon}" "${IconIndex}" !macroend + !define CreateShortcut "!insertmacro CreateShortcut" ;Copy files macro !macro CopyFiles SourcePath DestPath IfFileExists "${DestPath}" +2 - FileWrite $UninstLog "${DestPath}$\r$\n" + FileWriteUTF16LE $UninstLog "${DestPath}$\r$\n" CopyFiles "${SourcePath}" "${DestPath}" !macroend + !define CopyFiles "!insertmacro CopyFiles" ;Rename macro !macro Rename SourcePath DestPath IfFileExists "${DestPath}" +2 - FileWrite $UninstLog "${DestPath}$\r$\n" + FileWriteUTF16LE $UninstLog "${DestPath}$\r$\n" Rename "${SourcePath}" "${DestPath}" !macroend + !define Rename "!insertmacro Rename" ;CreateDirectory macro !macro CreateDirectory Path CreateDirectory "${Path}" - FileWrite $UninstLog "${Path}$\r$\n" + FileWriteUTF16LE $UninstLog "${Path}$\r$\n" !macroend + !define CreateDirectory "!insertmacro CreateDirectory" ;SetOutPath macro !macro SetOutPath Path SetOutPath "${Path}" - FileWrite $UninstLog "${Path}$\r$\n" + FileWriteUTF16LE $UninstLog "${Path}$\r$\n" !macroend + !define SetOutPath "!insertmacro SetOutPath" ;WriteUninstaller macro !macro WriteUninstaller Path WriteUninstaller "${Path}" - FileWrite $UninstLog "${Path}$\r$\n" + FileWriteUTF16LE $UninstLog "${Path}$\r$\n" !macroend + !define WriteUninstaller "!insertmacro WriteUninstaller" ;WriteIniStr macro !macro WriteIniStr IniFile SectionName EntryName NewValue IfFileExists "${IniFile}" +2 - FileWrite $UninstLog "${IniFile}$\r$\n" + FileWriteUTF16LE $UninstLog "${IniFile}$\r$\n" WriteIniStr "${IniFile}" "${SectionName}" "${EntryName}" "${NewValue}" !macroend ;WriteRegStr macro !macro WriteRegStr RegRoot UnInstallPath Key Value - FileWrite $UninstLog "${RegRoot} ${UnInstallPath}$\r$\n" + FileWriteUTF16LE $UninstLog "${RegRoot} ${UnInstallPath}$\r$\n" WriteRegStr "${RegRoot}" "${UnInstallPath}" "${Key}" "${Value}" !macroend + !define WriteRegStr "!insertmacro WriteRegStr" ;WriteRegDWORD macro !macro WriteRegDWORD RegRoot UnInstallPath Key Value - FileWrite $UninstLog "${RegRoot} ${UnInstallPath}$\r$\n" + FileWriteUTF16LE $UninstLog "${RegRoot} ${UnInstallPath}$\r$\n" WriteRegDWORD "${RegRoot}" "${UnInstallPath}" "${Key}" "${Value}" !macroend + !define WriteRegDWORD "!insertmacro WriteRegDWORD" ;BackupFile macro !macro BackupFile FILE_DIR FILE BACKUP_TO @@ -108,93 +123,35 @@ VIAddVersionKey "FileVersion" "${VERSION}" IfFileExists "${FILE_DIR}\${FILE}" 0 +2 Rename "${FILE_DIR}\${FILE}" "${BACKUP_TO}\${FILE}" !macroend + !define BackupFile "!insertmacro BackupFile" ;RestoreFile macro !macro RestoreFile BUP_DIR FILE RESTORE_TO IfFileExists "${BUP_DIR}\${FILE}" 0 +2 Rename "${BUP_DIR}\${FILE}" "${RESTORE_TO}\${FILE}" !macroend + !define RestoreFile "!insertmacro RestoreFile" ;BackupFiles macro !macro BackupFiles FILE_DIR FILE BACKUP_TO IfFileExists "${BACKUP_TO}\*.*" +2 CreateDirectory "22222" IfFileExists "${FILE_DIR}\${FILE}" 0 +7 - FileWrite $UninstLog "${FILE_DIR}\${FILE}$\r$\n" - FileWrite $UninstLog "${BACKUP_TO}\${FILE}$\r$\n" - FileWrite $UninstLog "FileBackup$\r$\n" + FileWriteUTF16LE $UninstLog "${FILE_DIR}\${FILE}$\r$\n" + FileWriteUTF16LE $UninstLog "${BACKUP_TO}\${FILE}$\r$\n" + FileWriteUTF16LE $UninstLog "FileBackup$\r$\n" Rename "${FILE_DIR}\${FILE}" "${BACKUP_TO}\${FILE}" SetOutPath "${FILE_DIR}" File "${FILE}" #After the Original file is backed up write the new file. !macroend + !define BackupFiles "!insertmacro BackupFiles" ;RestoreFiles macro !macro RestoreFiles BUP_FILE RESTORE_FILE IfFileExists "${BUP_FILE}" 0 +2 CopyFiles "${BUP_FILE}" "${RESTORE_FILE}" !macroend - -################### -#PREPARE UNINST LOG -################### - ;Set the name of the uninstall log - !define UninstLog "uninstall.log" - Var UninstLog - - ;Uninstall log file missing. - LangString UninstLogMissing ${LANG_ENGLISH} "${UninstLog} not found!$\r$\nUninstallation cannot proceed!" - - ;AddItem macro - !define AddItem "!insertmacro AddItem" - - ;BackupFile macro - !define BackupFile "!insertmacro BackupFile" - - ;BackupFiles macro - !define BackupFiles "!insertmacro BackupFiles" - - ;Copy files macro - !define CopyFiles "!insertmacro CopyFiles" - - ;CreateDirectory macro - !define CreateDirectory "!insertmacro CreateDirectory" - - ;CreateShortcut macro - !define CreateShortcut "!insertmacro CreateShortcut" - - ;File macro - !define File "!insertmacro File" - - ;Rename macro - !define Rename "!insertmacro Rename" - - ;RestoreFile macro - !define RestoreFile "!insertmacro RestoreFile" - - ;RestoreFiles macro - !define RestoreFiles "!insertmacro RestoreFiles" - - ;SetOutPath macro - !define SetOutPath "!insertmacro SetOutPath" - - ;WriteRegDWORD macro - !define WriteRegDWORD "!insertmacro WriteRegDWORD" - - ;WriteRegStr macro - !define WriteRegStr "!insertmacro WriteRegStr" - - ;WriteUninstaller macro - !define WriteUninstaller "!insertmacro WriteUninstaller" - - Section -openlogfile - CreateDirectory "$INSTDIR" - IfFileExists "$INSTDIR\${UninstLog}" +3 - FileOpen $UninstLog "$INSTDIR\${UninstLog}" w - Goto +4 - SetFileAttributes "$INSTDIR\${UninstLog}" NORMAL - FileOpen $UninstLog "$INSTDIR\${UninstLog}" a - FileSeek $UninstLog 0 END - SectionEnd + !define RestoreFiles "!insertmacro RestoreFiles" ############## #MODERN UI @@ -243,6 +200,42 @@ FunctionEnd !insertmacro MUI_LANGUAGE "English" +################### +#PREPARE UNINST LOG +################### + ;Uninstall log file missing. + LangString UninstLogMissing ${LANG_ENGLISH} "${UninstLog} not found!$\r$\nUninstallation cannot proceed!" + + Section "Create install directory" + CreateDirectory "$INSTDIR" + nsExec::ExecToStack 'icacls "$PROGRAMFILES64" /save "$TEMP\program-files-permissions.txt"' + Pop $0 # return value/error/timeout + Pop $1 # printed text, up to ${NSIS_MAX_STRLEN} + FileOpen $0 "$TEMP\program-files-permissions.txt" r + FileReadUTF16LE $0 $1 1024 + FileReadUTF16LE $0 $2 1024 + FileClose $0 + DetailPrint "First read line is: $1" + DetailPrint "Second read line is: $2" + FileOpen $0 "$TEMP\qTox-install-file-permissions.txt" w + FileWriteUTF16LE $0 "$INSTDIR" + FileWriteUTF16LE $0 "$\r$\n" + DetailPrint "Writing to file: $2" + FileWriteUTF16LE $0 "$2" + FileClose $0 + nsExec::Exec 'icacls "" /restore "$TEMP\qTox-install-file-permissions.txt"' + SectionEnd + + Section -openlogfile + CreateDirectory "$INSTDIR" + IfFileExists "$INSTDIR\${UninstLog}" +3 + FileOpen $UninstLog "$INSTDIR\${UninstLog}" w + Goto +4 + SetFileAttributes "$INSTDIR\${UninstLog}" NORMAL + FileOpen $UninstLog "$INSTDIR\${UninstLog}" a + FileSeek $UninstLog 0 END + SectionEnd + ################# #INSTALL ################# @@ -285,7 +278,7 @@ Section "Install" ${WriteRegStr} "${REG_ROOT}" "${REG_APP_PATH}" "" "$INSTDIR\${MAIN_APP_EXE}" ${WriteRegStr} "${REG_ROOT}" "${REG_APP_PATH}" "Path" "$INSTDIR\bin\" ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayName" "qTox" - ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "1.17.4" + ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "1.17.5" ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "Publisher" "The qTox Project" ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "UninstallString" "$INSTDIR\uninstall.exe" ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "URLInfoAbout" "https://qtox.github.io" @@ -322,7 +315,7 @@ Section Uninstall GetLineCount: ClearErrors - FileRead $UninstLog $R0 + FileReadUTF16LE $UninstLog $R0 IntOp $R1 $R1 + 1 StrCpy $R0 $R0 -2 Push $R0 diff --git a/windows/qtox64.nsi b/windows/qtox64.nsi index 34f6677ca..df4fd15fa 100755 --- a/windows/qtox64.nsi +++ b/windows/qtox64.nsi @@ -1,3 +1,4 @@ +Unicode True ################### #META ################### @@ -30,76 +31,90 @@ VIAddVersionKey "FileDescription" "${DESCRIPTION}" VIAddVersionKey "FileVersion" "${VERSION}" ############## -#UNINSTALL LOG +#DEFINE MACROS ############## +;Set the name of the uninstall log + !define UninstLog "uninstall.log" + Var UninstLog + ;AddItem macro !macro AddItem Path - FileWrite $UninstLog "${Path}$\r$\n" + FileWriteUTF16LE $UninstLog "${Path}$\r$\n" !macroend + !define AddItem "!insertmacro AddItem" ;File macro !macro File FileName IfFileExists "$OUTDIR\${FileName}" +2 - FileWrite $UninstLog "$OUTDIR\${FileName}$\r$\n" + FileWriteUTF16LE $UninstLog "$OUTDIR\${FileName}$\r$\n" File "${FileName}" !macroend + !define File "!insertmacro File" ;CreateShortcut macro !macro CreateShortcut FilePath FilePointer Pamameters Icon IconIndex - FileWrite $UninstLog "${FilePath}$\r$\n" + FileWriteUTF16LE $UninstLog "${FilePath}$\r$\n" CreateShortcut "${FilePath}" "${FilePointer}" "${Pamameters}" "${Icon}" "${IconIndex}" !macroend + !define CreateShortcut "!insertmacro CreateShortcut" ;Copy files macro !macro CopyFiles SourcePath DestPath IfFileExists "${DestPath}" +2 - FileWrite $UninstLog "${DestPath}$\r$\n" + FileWriteUTF16LE $UninstLog "${DestPath}$\r$\n" CopyFiles "${SourcePath}" "${DestPath}" !macroend + !define CopyFiles "!insertmacro CopyFiles" ;Rename macro !macro Rename SourcePath DestPath IfFileExists "${DestPath}" +2 - FileWrite $UninstLog "${DestPath}$\r$\n" + FileWriteUTF16LE $UninstLog "${DestPath}$\r$\n" Rename "${SourcePath}" "${DestPath}" !macroend + !define Rename "!insertmacro Rename" ;CreateDirectory macro !macro CreateDirectory Path CreateDirectory "${Path}" - FileWrite $UninstLog "${Path}$\r$\n" + FileWriteUTF16LE $UninstLog "${Path}$\r$\n" !macroend + !define CreateDirectory "!insertmacro CreateDirectory" ;SetOutPath macro !macro SetOutPath Path SetOutPath "${Path}" - FileWrite $UninstLog "${Path}$\r$\n" + FileWriteUTF16LE $UninstLog "${Path}$\r$\n" !macroend + !define SetOutPath "!insertmacro SetOutPath" ;WriteUninstaller macro !macro WriteUninstaller Path WriteUninstaller "${Path}" - FileWrite $UninstLog "${Path}$\r$\n" + FileWriteUTF16LE $UninstLog "${Path}$\r$\n" !macroend + !define WriteUninstaller "!insertmacro WriteUninstaller" ;WriteIniStr macro !macro WriteIniStr IniFile SectionName EntryName NewValue IfFileExists "${IniFile}" +2 - FileWrite $UninstLog "${IniFile}$\r$\n" + FileWriteUTF16LE $UninstLog "${IniFile}$\r$\n" WriteIniStr "${IniFile}" "${SectionName}" "${EntryName}" "${NewValue}" !macroend ;WriteRegStr macro !macro WriteRegStr RegRoot UnInstallPath Key Value - FileWrite $UninstLog "${RegRoot} ${UnInstallPath}$\r$\n" + FileWriteUTF16LE $UninstLog "${RegRoot} ${UnInstallPath}$\r$\n" WriteRegStr "${RegRoot}" "${UnInstallPath}" "${Key}" "${Value}" !macroend + !define WriteRegStr "!insertmacro WriteRegStr" ;WriteRegDWORD macro !macro WriteRegDWORD RegRoot UnInstallPath Key Value - FileWrite $UninstLog "${RegRoot} ${UnInstallPath}$\r$\n" + FileWriteUTF16LE $UninstLog "${RegRoot} ${UnInstallPath}$\r$\n" WriteRegDWORD "${RegRoot}" "${UnInstallPath}" "${Key}" "${Value}" !macroend + !define WriteRegDWORD "!insertmacro WriteRegDWORD" ;BackupFile macro !macro BackupFile FILE_DIR FILE BACKUP_TO @@ -108,93 +123,35 @@ VIAddVersionKey "FileVersion" "${VERSION}" IfFileExists "${FILE_DIR}\${FILE}" 0 +2 Rename "${FILE_DIR}\${FILE}" "${BACKUP_TO}\${FILE}" !macroend + !define BackupFile "!insertmacro BackupFile" ;RestoreFile macro !macro RestoreFile BUP_DIR FILE RESTORE_TO IfFileExists "${BUP_DIR}\${FILE}" 0 +2 Rename "${BUP_DIR}\${FILE}" "${RESTORE_TO}\${FILE}" !macroend + !define RestoreFile "!insertmacro RestoreFile" ;BackupFiles macro !macro BackupFiles FILE_DIR FILE BACKUP_TO IfFileExists "${BACKUP_TO}\*.*" +2 CreateDirectory "22222" IfFileExists "${FILE_DIR}\${FILE}" 0 +7 - FileWrite $UninstLog "${FILE_DIR}\${FILE}$\r$\n" - FileWrite $UninstLog "${BACKUP_TO}\${FILE}$\r$\n" - FileWrite $UninstLog "FileBackup$\r$\n" + FileWriteUTF16LE $UninstLog "${FILE_DIR}\${FILE}$\r$\n" + FileWriteUTF16LE $UninstLog "${BACKUP_TO}\${FILE}$\r$\n" + FileWriteUTF16LE $UninstLog "FileBackup$\r$\n" Rename "${FILE_DIR}\${FILE}" "${BACKUP_TO}\${FILE}" SetOutPath "${FILE_DIR}" File "${FILE}" #After the Original file is backed up write the new file. !macroend + !define BackupFiles "!insertmacro BackupFiles" ;RestoreFiles macro !macro RestoreFiles BUP_FILE RESTORE_FILE IfFileExists "${BUP_FILE}" 0 +2 CopyFiles "${BUP_FILE}" "${RESTORE_FILE}" !macroend - -################### -#PREPARE UNINST LOG -################### - ;Set the name of the uninstall log - !define UninstLog "uninstall.log" - Var UninstLog - - ;Uninstall log file missing. - LangString UninstLogMissing ${LANG_ENGLISH} "${UninstLog} not found!$\r$\nUninstallation cannot proceed!" - - ;AddItem macro - !define AddItem "!insertmacro AddItem" - - ;BackupFile macro - !define BackupFile "!insertmacro BackupFile" - - ;BackupFiles macro - !define BackupFiles "!insertmacro BackupFiles" - - ;Copy files macro - !define CopyFiles "!insertmacro CopyFiles" - - ;CreateDirectory macro - !define CreateDirectory "!insertmacro CreateDirectory" - - ;CreateShortcut macro - !define CreateShortcut "!insertmacro CreateShortcut" - - ;File macro - !define File "!insertmacro File" - - ;Rename macro - !define Rename "!insertmacro Rename" - - ;RestoreFile macro - !define RestoreFile "!insertmacro RestoreFile" - - ;RestoreFiles macro - !define RestoreFiles "!insertmacro RestoreFiles" - - ;SetOutPath macro - !define SetOutPath "!insertmacro SetOutPath" - - ;WriteRegDWORD macro - !define WriteRegDWORD "!insertmacro WriteRegDWORD" - - ;WriteRegStr macro - !define WriteRegStr "!insertmacro WriteRegStr" - - ;WriteUninstaller macro - !define WriteUninstaller "!insertmacro WriteUninstaller" - - Section -openlogfile - CreateDirectory "$INSTDIR" - IfFileExists "$INSTDIR\${UninstLog}" +3 - FileOpen $UninstLog "$INSTDIR\${UninstLog}" w - Goto +4 - SetFileAttributes "$INSTDIR\${UninstLog}" NORMAL - FileOpen $UninstLog "$INSTDIR\${UninstLog}" a - FileSeek $UninstLog 0 END - SectionEnd + !define RestoreFiles "!insertmacro RestoreFiles" ############## #MODERN UI @@ -243,6 +200,42 @@ FunctionEnd !insertmacro MUI_LANGUAGE "English" +################### +#PREPARE UNINST LOG +################### + ;Uninstall log file missing. + LangString UninstLogMissing ${LANG_ENGLISH} "${UninstLog} not found!$\r$\nUninstallation cannot proceed!" + + Section "Create install directory" + CreateDirectory "$INSTDIR" + nsExec::ExecToStack 'icacls "$PROGRAMFILES64" /save "$TEMP\program-files-permissions.txt"' + Pop $0 # return value/error/timeout + Pop $1 # printed text, up to ${NSIS_MAX_STRLEN} + FileOpen $0 "$TEMP\program-files-permissions.txt" r + FileReadUTF16LE $0 $1 1024 + FileReadUTF16LE $0 $2 1024 + FileClose $0 + DetailPrint "First read line is: $1" + DetailPrint "Second read line is: $2" + FileOpen $0 "$TEMP\qTox-install-file-permissions.txt" w + FileWriteUTF16LE $0 "$INSTDIR" + FileWriteUTF16LE $0 "$\r$\n" + DetailPrint "Writing to file: $2" + FileWriteUTF16LE $0 "$2" + FileClose $0 + nsExec::Exec 'icacls "" /restore "$TEMP\qTox-install-file-permissions.txt"' + SectionEnd + + Section -openlogfile + CreateDirectory "$INSTDIR" + IfFileExists "$INSTDIR\${UninstLog}" +3 + FileOpen $UninstLog "$INSTDIR\${UninstLog}" w + Goto +4 + SetFileAttributes "$INSTDIR\${UninstLog}" NORMAL + FileOpen $UninstLog "$INSTDIR\${UninstLog}" a + FileSeek $UninstLog 0 END + SectionEnd + ################# #INSTALL ################# @@ -286,7 +279,7 @@ Section "Install" ${WriteRegStr} "${REG_ROOT}" "${REG_APP_PATH}" "" "$INSTDIR\${MAIN_APP_EXE}" ${WriteRegStr} "${REG_ROOT}" "${REG_APP_PATH}" "Path" "$INSTDIR\bin\" ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayName" "qTox" - ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "1.17.4" + ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "1.17.5" ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "Publisher" "The qTox Project" ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "UninstallString" "$INSTDIR\uninstall.exe" ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "URLInfoAbout" "https://qtox.github.io"