From f5fabc2fe24b6f01e47a527b982395a5305d31f6 Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Thu, 10 Feb 2022 17:24:38 -0800 Subject: [PATCH 01/18] fix: Update video API usage for newer libavcodec Newer version of avformat_open_input, av_find_input_format, avcodec_find_decoder previously used non-const pointers that are now const. Support both version for compatibiltiy with other platforms. Backported from 15673a52b6b4805d482b69281e21947fb7096e05 --- src/video/cameradevice.cpp | 9 ++++++--- src/video/cameradevice.h | 1 - src/video/camerasource.cpp | 3 +-- 3 files changed, 7 insertions(+), 6 deletions(-) diff --git a/src/video/cameradevice.cpp b/src/video/cameradevice.cpp index 6f4370e36..15edb1470 100644 --- a/src/video/cameradevice.cpp +++ b/src/video/cameradevice.cpp @@ -28,6 +28,9 @@ extern "C" { #include "cameradevice.h" #include "src/persistence/settings.h" +// no longer needed when avformat version < 59 is no longer supported +using AvFindInputFormatRet = decltype(av_find_input_format("")); + #if defined(Q_OS_LINUX) || defined(Q_OS_FREEBSD) #define USING_V4L 1 #else @@ -68,8 +71,8 @@ extern "C" { QHash CameraDevice::openDevices; QMutex CameraDevice::openDeviceLock, CameraDevice::iformatLock; -AVInputFormat* CameraDevice::iformat{nullptr}; -AVInputFormat* CameraDevice::idesktopFormat{nullptr}; +static AvFindInputFormatRet idesktopFormat{nullptr}; +static AvFindInputFormatRet iformat{nullptr}; CameraDevice::CameraDevice(const QString& devName, AVFormatContext* context) : devName{devName} @@ -89,7 +92,7 @@ CameraDevice* CameraDevice::open(QString devName, AVDictionary** options) goto out; } - AVInputFormat* format; + AvFindInputFormatRet format; if (devName.startsWith("x11grab#")) { devName = devName.mid(8); format = idesktopFormat; diff --git a/src/video/cameradevice.h b/src/video/cameradevice.h index 3ea59b3f2..a721152e1 100644 --- a/src/video/cameradevice.h +++ b/src/video/cameradevice.h @@ -65,7 +65,6 @@ private: std::atomic_int refcount; static QHash openDevices; static QMutex openDeviceLock, iformatLock; - static AVInputFormat *iformat, *idesktopFormat; }; #endif // CAMERADEVICE_H diff --git a/src/video/camerasource.cpp b/src/video/camerasource.cpp index a37856bd8..17d03dbac 100644 --- a/src/video/camerasource.cpp +++ b/src/video/camerasource.cpp @@ -277,7 +277,6 @@ void CameraSource::openDevice() } // We need to create a new CameraDevice - AVCodec* codec; device = CameraDevice::open(deviceName, mode); if (!device) { @@ -321,7 +320,7 @@ void CameraSource::openDevice() AVCodecParameters* cparams = device->context->streams[videoStreamIndex]->codecpar; codecId = cparams->codec_id; #endif - codec = avcodec_find_decoder(codecId); + const AVCodec* codec = avcodec_find_decoder(codecId); if (!codec) { qWarning() << "Codec not found"; emit openFailed(); From d0d288a9b61aea2ec1ff388d19ee07baead4136a Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Mon, 14 Feb 2022 02:16:41 -0800 Subject: [PATCH 02/18] refactor(settings): Use IGroupSettings in GroupChatForm Move interface signals from Settings to be declared by the interface itself Backported from e5df648e1a38fe1e804b8ca97b65fc919e037963 --- src/persistence/igroupsettings.h | 4 ++++ src/persistence/settings.h | 4 +++- src/widget/form/groupchatform.cpp | 15 +++++++-------- src/widget/form/groupchatform.h | 6 ++++-- src/widget/widget.cpp | 2 +- test/model/groupmessagedispatcher_test.cpp | 7 ++++++- 6 files changed, 25 insertions(+), 13 deletions(-) diff --git a/src/persistence/igroupsettings.h b/src/persistence/igroupsettings.h index ce9a94db5..ab48b3d10 100644 --- a/src/persistence/igroupsettings.h +++ b/src/persistence/igroupsettings.h @@ -20,6 +20,8 @@ #ifndef IGROUP_SETTINGS_H #define IGROUP_SETTINGS_H +#include "src/model/interface.h" + #include class IGroupSettings @@ -30,6 +32,8 @@ public: virtual void setBlackList(const QStringList& blist) = 0; virtual bool getGroupAlwaysNotify() const = 0; virtual void setGroupAlwaysNotify(bool newValue) = 0; + + DECLARE_SIGNAL(blackListChanged, QStringList const& blist); }; #endif /*IGROUP_SETTINGS_H*/ diff --git a/src/persistence/settings.h b/src/persistence/settings.h index 0effc96c1..a8fd1525d 100644 --- a/src/persistence/settings.h +++ b/src/persistence/settings.h @@ -232,7 +232,6 @@ signals: // Privacy void typingNotificationChanged(bool enabled); void dbSyncTypeChanged(Db::syncType type); - void blackListChanged(QStringList& blist); public: bool applyCommandLineOptions(const QCommandLineParser& parser); @@ -462,9 +461,12 @@ public: // Privacy bool getTypingNotification() const; void setTypingNotification(bool enabled); + QStringList getBlackList() const override; void setBlackList(const QStringList& blist) override; + SIGNAL_IMPL(Settings, blackListChanged, QStringList const& blist) + // State QByteArray getWindowGeometry() const; void setWindowGeometry(const QByteArray& value); diff --git a/src/widget/form/groupchatform.cpp b/src/widget/form/groupchatform.cpp index 054e2a6b0..3795a4f36 100644 --- a/src/widget/form/groupchatform.cpp +++ b/src/widget/form/groupchatform.cpp @@ -37,7 +37,7 @@ #include "src/widget/style.h" #include "src/widget/tool/croppinglabel.h" #include "src/widget/translator.h" -#include "src/persistence/settings.h" +#include "src/persistence/igroupsettings.h" #include #include @@ -82,10 +82,11 @@ QString editName(const QString& name) * @brief Timeout = peer stopped sending audio. */ -GroupChatForm::GroupChatForm(Group* chatGroup, IChatLog& chatLog, IMessageDispatcher& messageDispatcher) +GroupChatForm::GroupChatForm(Group* chatGroup, IChatLog& chatLog, IMessageDispatcher& messageDispatcher, IGroupSettings& _settings) : GenericChatForm(chatGroup, chatLog, messageDispatcher) , group(chatGroup) , inCall(false) + , settings(_settings) { nusersLabel = new QLabel(); @@ -129,7 +130,7 @@ GroupChatForm::GroupChatForm(Group* chatGroup, IChatLog& chatLog, IMessageDispat connect(group, &Group::userLeft, this, &GroupChatForm::onUserLeft); connect(group, &Group::peerNameChanged, this, &GroupChatForm::onPeerNameChanged); connect(group, &Group::numPeersChanged, this, &GroupChatForm::updateUserCount); - connect(&Settings::getInstance(), &Settings::blackListChanged, this, &GroupChatForm::updateUserNames); + settings.connectTo_blackListChanged(this, [this](QStringList const&) { this->updateUserNames(); }); updateUserNames(); setAcceptDrops(true); @@ -198,12 +199,11 @@ void GroupChatForm::updateUserNames() label->setTextFormat(Qt::PlainText); label->setContextMenuPolicy(Qt::CustomContextMenu); - const Settings& s = Settings::getInstance(); connect(label, &QLabel::customContextMenuRequested, this, &GroupChatForm::onLabelContextMenuRequested); if (peerPk == selfPk) { label->setProperty("peerType", LABEL_PEER_TYPE_OUR); - } else if (s.getBlackList().contains(peerPk.toString())) { + } else if (settings.getBlackList().contains(peerPk.toString())) { label->setProperty("peerType", LABEL_PEER_TYPE_MUTED); } @@ -415,8 +415,7 @@ void GroupChatForm::onLabelContextMenuRequested(const QPoint& localPos) const QPoint pos = label->mapToGlobal(localPos); const QString muteString = tr("mute"); const QString unmuteString = tr("unmute"); - Settings& s = Settings::getInstance(); - QStringList blackList = s.getBlackList(); + QStringList blackList = settings.getBlackList(); QMenu* const contextMenu = new QMenu(this); const ToxPk selfPk = Core::getInstance()->getSelfPublicKey(); ToxPk peerPk; @@ -457,7 +456,7 @@ void GroupChatForm::onLabelContextMenuRequested(const QPoint& localPos) blackList << peerPk.toString(); } - s.setBlackList(blackList); + settings.setBlackList(blackList); } } diff --git a/src/widget/form/groupchatform.h b/src/widget/form/groupchatform.h index e163c48cd..d039bcffe 100644 --- a/src/widget/form/groupchatform.h +++ b/src/widget/form/groupchatform.h @@ -33,13 +33,14 @@ class FlowLayout; class QTimer; class GroupId; class IMessageDispatcher; -class Message; +struct Message; +class IGroupSettings; class GroupChatForm : public GenericChatForm { Q_OBJECT public: - explicit GroupChatForm(Group* chatGroup, IChatLog& chatLog, IMessageDispatcher& messageDispatcher); + GroupChatForm(Group* chatGroup, IChatLog& chatLog, IMessageDispatcher& messageDispatcher, IGroupSettings& _settings); ~GroupChatForm(); void peerAudioPlaying(ToxPk peerPk); @@ -79,6 +80,7 @@ private: QLabel* nusersLabel; TabCompleter* tabber; bool inCall; + IGroupSettings& settings; }; #endif // GROUPCHATFORM_H diff --git a/src/widget/widget.cpp b/src/widget/widget.cpp index a48ac5cfe..1ba25ee58 100644 --- a/src/widget/widget.cpp +++ b/src/widget/widget.cpp @@ -2115,7 +2115,7 @@ Group* Widget::createGroup(uint32_t groupnumber, const GroupId& groupId) connect(messageDispatcher.get(), &IMessageDispatcher::messageReceived, notifyReceivedCallback); groupAlertConnections.insert(groupId, notifyReceivedConnection); - auto form = new GroupChatForm(newgroup, *groupChatLog, *messageDispatcher); + auto form = new GroupChatForm(newgroup, *groupChatLog, *messageDispatcher, settings); connect(&settings, &Settings::nameColorsChanged, form, &GenericChatForm::setColorizedNames); form->setColorizedNames(settings.getEnableGroupChatsColor()); groupMessageDispatchers[groupId] = messageDispatcher; diff --git a/test/model/groupmessagedispatcher_test.cpp b/test/model/groupmessagedispatcher_test.cpp index 30591b373..323cd0f2b 100644 --- a/test/model/groupmessagedispatcher_test.cpp +++ b/test/model/groupmessagedispatcher_test.cpp @@ -22,6 +22,8 @@ #include "src/model/groupmessagedispatcher.h" #include "src/model/message.h" #include "src/persistence/settings.h" +#include "src/persistence/igroupsettings.h" +#include "src/model/interface.h" #include #include @@ -126,8 +128,10 @@ public: } }; -class MockGroupSettings : public IGroupSettings +class MockGroupSettings : public QObject, public IGroupSettings { + Q_OBJECT + public: QStringList getBlackList() const override { @@ -145,6 +149,7 @@ public: } void setGroupAlwaysNotify(bool newValue) override {} + SIGNAL_IMPL(MockGroupSettings, blackListChanged, QStringList const& blist) private: QStringList blacklist; From 916e797c10d10ba556e9a3339353f1bd97663d15 Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Mon, 14 Feb 2022 02:28:57 -0800 Subject: [PATCH 03/18] feat(Settings): Add setting for hiding group join and leave system messages Messages can become spammy is long lasting quiet groups, drowning out real user messages Backported from 1be5b99d1741b0f4c92f9e8b51150e0d44ca0a42 --- src/persistence/igroupsettings.h | 4 ++++ src/persistence/settings.cpp | 17 +++++++++++++++++ src/persistence/settings.h | 6 +++++- test/model/groupmessagedispatcher_test.cpp | 4 ++++ 4 files changed, 30 insertions(+), 1 deletion(-) diff --git a/src/persistence/igroupsettings.h b/src/persistence/igroupsettings.h index ab48b3d10..59ea3a24b 100644 --- a/src/persistence/igroupsettings.h +++ b/src/persistence/igroupsettings.h @@ -33,7 +33,11 @@ public: virtual bool getGroupAlwaysNotify() const = 0; virtual void setGroupAlwaysNotify(bool newValue) = 0; + virtual bool getShowGroupJoinLeaveMessages() const = 0; + virtual void setShowGroupJoinLeaveMessages(bool newValue) = 0; + DECLARE_SIGNAL(blackListChanged, QStringList const& blist); + DECLARE_SIGNAL(showGroupJoinLeaveMessagesChanged, bool show); }; #endif /*IGROUP_SETTINGS_H*/ diff --git a/src/persistence/settings.cpp b/src/persistence/settings.cpp index e724775f3..0d8bbe3e3 100644 --- a/src/persistence/settings.cpp +++ b/src/persistence/settings.cpp @@ -203,6 +203,7 @@ void Settings::loadGlobal() lightTrayIcon = s.value("lightTrayIcon", false).toBool(); useEmoticons = s.value("useEmoticons", true).toBool(); statusChangeNotificationEnabled = s.value("statusChangeNotificationEnabled", false).toBool(); + showGroupJoinLeaveMessages = s.value("showGroupJoinLeaveMessages", false).toBool(); spellCheckingEnabled = s.value("spellCheckingEnabled", true).toBool(); themeColor = s.value("themeColor", 0).toInt(); style = s.value("style", "").toString(); @@ -680,6 +681,7 @@ void Settings::saveGlobal() s.setValue("style", style); s.setValue("nameColors", nameColors); s.setValue("statusChangeNotificationEnabled", statusChangeNotificationEnabled); + s.setValue("showGroupJoinLeaveMessages", showGroupJoinLeaveMessages); s.setValue("spellCheckingEnabled", spellCheckingEnabled); } s.endGroup(); @@ -1155,6 +1157,21 @@ void Settings::setStatusChangeNotificationEnabled(bool newValue) } } +bool Settings::getShowGroupJoinLeaveMessages() const +{ + QMutexLocker locker{&bigLock}; + return showGroupJoinLeaveMessages; +} + +void Settings::setShowGroupJoinLeaveMessages(bool newValue) +{ + QMutexLocker locker{&bigLock}; + if (newValue != showGroupJoinLeaveMessages) { + showGroupJoinLeaveMessages = newValue; + emit showGroupJoinLeaveMessagesChanged(showGroupJoinLeaveMessages); + } +} + bool Settings::getSpellCheckingEnabled() const { const QMutexLocker locker{&bigLock}; diff --git a/src/persistence/settings.h b/src/persistence/settings.h index a8fd1525d..30d1f246d 100644 --- a/src/persistence/settings.h +++ b/src/persistence/settings.h @@ -464,9 +464,12 @@ public: QStringList getBlackList() const override; void setBlackList(const QStringList& blist) override; - SIGNAL_IMPL(Settings, blackListChanged, QStringList const& blist) + bool getShowGroupJoinLeaveMessages() const override; + void setShowGroupJoinLeaveMessages(bool newValue) override; + SIGNAL_IMPL(Settings, showGroupJoinLeaveMessagesChanged, bool show) + // State QByteArray getWindowGeometry() const; void setWindowGeometry(const QByteArray& value); @@ -654,6 +657,7 @@ private: QString timestampFormat; QString dateFormat; bool statusChangeNotificationEnabled; + bool showGroupJoinLeaveMessages; bool spellCheckingEnabled; // Privacy diff --git a/test/model/groupmessagedispatcher_test.cpp b/test/model/groupmessagedispatcher_test.cpp index 323cd0f2b..50c6efa45 100644 --- a/test/model/groupmessagedispatcher_test.cpp +++ b/test/model/groupmessagedispatcher_test.cpp @@ -151,6 +151,10 @@ public: void setGroupAlwaysNotify(bool newValue) override {} SIGNAL_IMPL(MockGroupSettings, blackListChanged, QStringList const& blist) + bool getShowGroupJoinLeaveMessages() const override { return true; }; + void setShowGroupJoinLeaveMessages(bool newValue) override {}; + SIGNAL_IMPL(MockGroupSettings, showGroupJoinLeaveMessagesChanged, bool show) + private: QStringList blacklist; }; From 423049db50ffea14ec222e1a83ee976029a6afaf Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Mon, 14 Feb 2022 02:34:30 -0800 Subject: [PATCH 04/18] feat(UI): Add UI For controlling group join and leave system messages setting Backported from 069ab92fd013b915855723f20ac72ad30838d325 --- src/widget/form/settings/generalform.cpp | 6 ++++++ src/widget/form/settings/generalform.h | 1 + src/widget/form/settings/generalsettings.ui | 8 ++++++++ 3 files changed, 15 insertions(+) diff --git a/src/widget/form/settings/generalform.cpp b/src/widget/form/settings/generalform.cpp index f4623fe5e..a719a3d41 100644 --- a/src/widget/form/settings/generalform.cpp +++ b/src/widget/form/settings/generalform.cpp @@ -144,6 +144,7 @@ GeneralForm::GeneralForm(SettingsWidget* myParent) bodyUI->closeToTray->setEnabled(showSystemTray); bodyUI->statusChanges->setChecked(s.getStatusChangeNotificationEnabled()); + bodyUI->groupJoinLeaveMessages->setChecked(s.getShowGroupJoinLeaveMessages()); bodyUI->autoAwaySpinBox->setValue(s.getAutoAwayTime()); bodyUI->autoSaveFilesDir->setText(s.getGlobalAutoAcceptDir()); @@ -215,6 +216,11 @@ void GeneralForm::on_statusChanges_stateChanged() Settings::getInstance().setStatusChangeNotificationEnabled(bodyUI->statusChanges->isChecked()); } +void GeneralForm::on_groupJoinLeaveMessages_stateChanged() +{ + Settings::getInstance().setShowGroupJoinLeaveMessages(bodyUI->groupJoinLeaveMessages->isChecked()); +} + void GeneralForm::on_autoAwaySpinBox_editingFinished() { int minutes = bodyUI->autoAwaySpinBox->value(); diff --git a/src/widget/form/settings/generalform.h b/src/widget/form/settings/generalform.h index 7cf1d7de2..264154a00 100644 --- a/src/widget/form/settings/generalform.h +++ b/src/widget/form/settings/generalform.h @@ -52,6 +52,7 @@ private slots: void on_autoAwaySpinBox_editingFinished(); void on_minimizeToTray_stateChanged(); void on_statusChanges_stateChanged(); + void on_groupJoinLeaveMessages_stateChanged(); void on_autoacceptFiles_stateChanged(); void on_maxAutoAcceptSizeMB_editingFinished(); void on_autoSaveFilesDir_clicked(); diff --git a/src/widget/form/settings/generalsettings.ui b/src/widget/form/settings/generalsettings.ui index 5b663abf7..7e4747a29 100644 --- a/src/widget/form/settings/generalsettings.ui +++ b/src/widget/form/settings/generalsettings.ui @@ -222,6 +222,13 @@ instead of closing itself. + + + + Add a chat message when a user joins or leaves a group + + + @@ -364,6 +371,7 @@ instead of closing itself. minimizeToTray closeToTray statusChanges + groupJoinLeaveMessages autoAwaySpinBox autoSaveFilesDir autoacceptFiles From ee0334acc55215ed8e94bae8fa4ff8976834af20 Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Mon, 14 Feb 2022 02:35:02 -0800 Subject: [PATCH 05/18] feat(chatlog): Disable join and leave system messages based on setting Backported from 069ab92fd013b915855723f20ac72ad30838d325 --- src/widget/form/groupchatform.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/widget/form/groupchatform.cpp b/src/widget/form/groupchatform.cpp index 3795a4f36..ba5fc15cc 100644 --- a/src/widget/form/groupchatform.cpp +++ b/src/widget/form/groupchatform.cpp @@ -235,13 +235,17 @@ void GroupChatForm::updateUserNames() void GroupChatForm::onUserJoined(const ToxPk& user, const QString& name) { - addSystemInfoMessage(tr("%1 has joined the group").arg(name), ChatMessage::INFO, QDateTime::currentDateTime()); + if (settings.getShowGroupJoinLeaveMessages()) { + addSystemInfoMessage(tr("%1 has joined the group").arg(name), ChatMessage::INFO, QDateTime::currentDateTime()); + } updateUserNames(); } void GroupChatForm::onUserLeft(const ToxPk& user, const QString& name) { - addSystemInfoMessage(tr("%1 has left the group").arg(name), ChatMessage::INFO, QDateTime::currentDateTime()); + if (settings.getShowGroupJoinLeaveMessages()) { + addSystemInfoMessage(tr("%1 has left the group").arg(name), ChatMessage::INFO, QDateTime::currentDateTime()); + } updateUserNames(); } From 5526d131a7e56acf39474062d7ba5c86aa3325b1 Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Wed, 2 Mar 2022 20:26:13 -0800 Subject: [PATCH 06/18] refactor(Windows): Define installer macros right after creating them Breaks an inter-dependency between "MODERN UI" section needing CreateShortcut and "PREPARE UNINST LOG" section needing LANG_ENGLISH, allowing "MODERN UI" section to be done first. --- windows/qtox.nsi | 59 +++++++++++++--------------------------------- windows/qtox64.nsi | 59 +++++++++++++--------------------------------- 2 files changed, 32 insertions(+), 86 deletions(-) diff --git a/windows/qtox.nsi b/windows/qtox.nsi index 5eacc7a0e..91d8b76e8 100644 --- a/windows/qtox.nsi +++ b/windows/qtox.nsi @@ -30,12 +30,14 @@ VIAddVersionKey "FileDescription" "${DESCRIPTION}" VIAddVersionKey "FileVersion" "${VERSION}" ############## -#UNINSTALL LOG +#DEFINE MACROS ############## + ;AddItem macro !macro AddItem Path FileWrite $UninstLog "${Path}$\r$\n" !macroend + !define AddItem "!insertmacro AddItem" ;File macro !macro File FileName @@ -43,12 +45,14 @@ VIAddVersionKey "FileVersion" "${VERSION}" FileWrite $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" CreateShortcut "${FilePath}" "${FilePointer}" "${Pamameters}" "${Icon}" "${IconIndex}" !macroend + !define CreateShortcut "!insertmacro CreateShortcut" ;Copy files macro !macro CopyFiles SourcePath DestPath @@ -56,6 +60,7 @@ VIAddVersionKey "FileVersion" "${VERSION}" FileWrite $UninstLog "${DestPath}$\r$\n" CopyFiles "${SourcePath}" "${DestPath}" !macroend + !define CopyFiles "!insertmacro CopyFiles" ;Rename macro !macro Rename SourcePath DestPath @@ -63,24 +68,28 @@ VIAddVersionKey "FileVersion" "${VERSION}" FileWrite $UninstLog "${DestPath}$\r$\n" Rename "${SourcePath}" "${DestPath}" !macroend + !define Rename "!insertmacro Rename" ;CreateDirectory macro !macro CreateDirectory Path CreateDirectory "${Path}" FileWrite $UninstLog "${Path}$\r$\n" !macroend + !define CreateDirectory "!insertmacro CreateDirectory" ;SetOutPath macro !macro SetOutPath Path SetOutPath "${Path}" FileWrite $UninstLog "${Path}$\r$\n" !macroend + !define SetOutPath "!insertmacro SetOutPath" ;WriteUninstaller macro !macro WriteUninstaller Path WriteUninstaller "${Path}" FileWrite $UninstLog "${Path}$\r$\n" !macroend + !define WriteUninstaller "!insertmacro WriteUninstaller" ;WriteIniStr macro !macro WriteIniStr IniFile SectionName EntryName NewValue @@ -94,12 +103,14 @@ VIAddVersionKey "FileVersion" "${VERSION}" FileWrite $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" WriteRegDWORD "${RegRoot}" "${UnInstallPath}" "${Key}" "${Value}" !macroend + !define WriteRegDWORD "!insertmacro WriteRegDWORD" ;BackupFile macro !macro BackupFile FILE_DIR FILE BACKUP_TO @@ -108,12 +119,14 @@ 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 @@ -127,12 +140,14 @@ VIAddVersionKey "FileVersion" "${VERSION}" 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 + !define RestoreFiles "!insertmacro RestoreFiles" ################### #PREPARE UNINST LOG @@ -144,48 +159,6 @@ VIAddVersionKey "FileVersion" "${VERSION}" ;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 diff --git a/windows/qtox64.nsi b/windows/qtox64.nsi index d7e7e619d..8fc76b276 100755 --- a/windows/qtox64.nsi +++ b/windows/qtox64.nsi @@ -30,12 +30,14 @@ VIAddVersionKey "FileDescription" "${DESCRIPTION}" VIAddVersionKey "FileVersion" "${VERSION}" ############## -#UNINSTALL LOG +#DEFINE MACROS ############## + ;AddItem macro !macro AddItem Path FileWrite $UninstLog "${Path}$\r$\n" !macroend + !define AddItem "!insertmacro AddItem" ;File macro !macro File FileName @@ -43,12 +45,14 @@ VIAddVersionKey "FileVersion" "${VERSION}" FileWrite $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" CreateShortcut "${FilePath}" "${FilePointer}" "${Pamameters}" "${Icon}" "${IconIndex}" !macroend + !define CreateShortcut "!insertmacro CreateShortcut" ;Copy files macro !macro CopyFiles SourcePath DestPath @@ -56,6 +60,7 @@ VIAddVersionKey "FileVersion" "${VERSION}" FileWrite $UninstLog "${DestPath}$\r$\n" CopyFiles "${SourcePath}" "${DestPath}" !macroend + !define CopyFiles "!insertmacro CopyFiles" ;Rename macro !macro Rename SourcePath DestPath @@ -63,24 +68,28 @@ VIAddVersionKey "FileVersion" "${VERSION}" FileWrite $UninstLog "${DestPath}$\r$\n" Rename "${SourcePath}" "${DestPath}" !macroend + !define Rename "!insertmacro Rename" ;CreateDirectory macro !macro CreateDirectory Path CreateDirectory "${Path}" FileWrite $UninstLog "${Path}$\r$\n" !macroend + !define CreateDirectory "!insertmacro CreateDirectory" ;SetOutPath macro !macro SetOutPath Path SetOutPath "${Path}" FileWrite $UninstLog "${Path}$\r$\n" !macroend + !define SetOutPath "!insertmacro SetOutPath" ;WriteUninstaller macro !macro WriteUninstaller Path WriteUninstaller "${Path}" FileWrite $UninstLog "${Path}$\r$\n" !macroend + !define WriteUninstaller "!insertmacro WriteUninstaller" ;WriteIniStr macro !macro WriteIniStr IniFile SectionName EntryName NewValue @@ -94,12 +103,14 @@ VIAddVersionKey "FileVersion" "${VERSION}" FileWrite $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" WriteRegDWORD "${RegRoot}" "${UnInstallPath}" "${Key}" "${Value}" !macroend + !define WriteRegDWORD "!insertmacro WriteRegDWORD" ;BackupFile macro !macro BackupFile FILE_DIR FILE BACKUP_TO @@ -108,12 +119,14 @@ 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 @@ -127,12 +140,14 @@ VIAddVersionKey "FileVersion" "${VERSION}" 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 + !define RestoreFiles "!insertmacro RestoreFiles" ################### #PREPARE UNINST LOG @@ -144,48 +159,6 @@ VIAddVersionKey "FileVersion" "${VERSION}" ;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 From 1353fc934ed70e9bfab3e50e42dba5eb139cd59e Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Wed, 2 Mar 2022 20:51:41 -0800 Subject: [PATCH 07/18] fix(Windows): Define installer language before trying to access it LangString UninstLogMissing statement was accessing LANG_ENGLISH before it was defined by the MUI_LANGUAGE macro. It caused a warning, but still defaulted to English. --- windows/qtox.nsi | 39 +++++++++++++++++++-------------------- windows/qtox64.nsi | 39 +++++++++++++++++++-------------------- 2 files changed, 38 insertions(+), 40 deletions(-) diff --git a/windows/qtox.nsi b/windows/qtox.nsi index 91d8b76e8..15001e4ee 100644 --- a/windows/qtox.nsi +++ b/windows/qtox.nsi @@ -32,6 +32,9 @@ VIAddVersionKey "FileVersion" "${VERSION}" ############## #DEFINE MACROS ############## +;Set the name of the uninstall log + !define UninstLog "uninstall.log" + Var UninstLog ;AddItem macro !macro AddItem Path @@ -149,26 +152,6 @@ VIAddVersionKey "FileVersion" "${VERSION}" !macroend !define RestoreFiles "!insertmacro RestoreFiles" -################### -#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!" - - 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 - ############## #MODERN UI ############## @@ -216,6 +199,22 @@ FunctionEnd !insertmacro MUI_LANGUAGE "English" +################### +#PREPARE UNINST LOG +################### + ;Uninstall log file missing. + LangString UninstLogMissing ${LANG_ENGLISH} "${UninstLog} not found!$\r$\nUninstallation cannot proceed!" + + 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 ################# diff --git a/windows/qtox64.nsi b/windows/qtox64.nsi index 8fc76b276..0f113f319 100755 --- a/windows/qtox64.nsi +++ b/windows/qtox64.nsi @@ -32,6 +32,9 @@ VIAddVersionKey "FileVersion" "${VERSION}" ############## #DEFINE MACROS ############## +;Set the name of the uninstall log + !define UninstLog "uninstall.log" + Var UninstLog ;AddItem macro !macro AddItem Path @@ -149,26 +152,6 @@ VIAddVersionKey "FileVersion" "${VERSION}" !macroend !define RestoreFiles "!insertmacro RestoreFiles" -################### -#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!" - - 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 - ############## #MODERN UI ############## @@ -216,6 +199,22 @@ FunctionEnd !insertmacro MUI_LANGUAGE "English" +################### +#PREPARE UNINST LOG +################### + ;Uninstall log file missing. + LangString UninstLogMissing ${LANG_ENGLISH} "${UninstLog} not found!$\r$\nUninstallation cannot proceed!" + + 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 ################# From 9f84184ba815bfc892691fa611c6756721ba1333 Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Wed, 2 Mar 2022 20:11:19 -0800 Subject: [PATCH 08/18] fix(Windows): Build NSIS installer in Unicode mode ANSI mode is deprecated. --- windows/cross-compile/build.sh | 2 +- windows/qtox.nsi | 1 + windows/qtox64.nsi | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/windows/cross-compile/build.sh b/windows/cross-compile/build.sh index f11e5458f..33609e754 100644 --- a/windows/cross-compile/build.sh +++ b/windows/cross-compile/build.sh @@ -1101,7 +1101,7 @@ else echo "Using cached build of NSIS ShellExecAsUser plugin `cat $NSISSHELLEXECASUSER_PREFIX_DIR/done`" fi # Install ShellExecAsUser plugin -cp "$NSISSHELLEXECASUSER_PREFIX_DIR/bin/ShellExecAsUser.dll" /usr/share/nsis/Plugins/x86-ansi/ +cp "$NSISSHELLEXECASUSER_PREFIX_DIR/bin/ShellExecAsUser.dll" /usr/share/nsis/Plugins/x86-unicode/ # mingw-ldd diff --git a/windows/qtox.nsi b/windows/qtox.nsi index 15001e4ee..d15543ccb 100644 --- a/windows/qtox.nsi +++ b/windows/qtox.nsi @@ -1,3 +1,4 @@ +Unicode True ################### #META ################### diff --git a/windows/qtox64.nsi b/windows/qtox64.nsi index 0f113f319..843e28971 100755 --- a/windows/qtox64.nsi +++ b/windows/qtox64.nsi @@ -1,3 +1,4 @@ +Unicode True ################### #META ################### From 2c2c6f6818aec3403f215eda98fdedb436924949 Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Wed, 2 Mar 2022 20:16:16 -0800 Subject: [PATCH 09/18] refactor(Windows): Use UTF16 strings with files in Windows installer Windows uses UTF16, so may have caused issues if users installed to paths with non-ANSI characters. It is also needed for interacting with any OS files. --- windows/qtox.nsi | 30 +++++++++++++++--------------- windows/qtox64.nsi | 28 ++++++++++++++-------------- 2 files changed, 29 insertions(+), 29 deletions(-) diff --git a/windows/qtox.nsi b/windows/qtox.nsi index d15543ccb..676cefdb7 100644 --- a/windows/qtox.nsi +++ b/windows/qtox.nsi @@ -39,21 +39,21 @@ VIAddVersionKey "FileVersion" "${VERSION}" ;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" @@ -61,7 +61,7 @@ VIAddVersionKey "FileVersion" "${VERSION}" ;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" @@ -69,7 +69,7 @@ VIAddVersionKey "FileVersion" "${VERSION}" ;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" @@ -77,41 +77,41 @@ VIAddVersionKey "FileVersion" "${VERSION}" ;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" @@ -137,9 +137,9 @@ VIAddVersionKey "FileVersion" "${VERSION}" 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. @@ -290,7 +290,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 843e28971..0796650ef 100755 --- a/windows/qtox64.nsi +++ b/windows/qtox64.nsi @@ -39,21 +39,21 @@ VIAddVersionKey "FileVersion" "${VERSION}" ;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" @@ -61,7 +61,7 @@ VIAddVersionKey "FileVersion" "${VERSION}" ;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" @@ -69,7 +69,7 @@ VIAddVersionKey "FileVersion" "${VERSION}" ;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" @@ -77,41 +77,41 @@ VIAddVersionKey "FileVersion" "${VERSION}" ;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" @@ -137,9 +137,9 @@ VIAddVersionKey "FileVersion" "${VERSION}" 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. From 553bd47e8171fd4f15e062e4faf734e32002f6fb Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Wed, 2 Mar 2022 20:20:46 -0800 Subject: [PATCH 10/18] fix(Windows): Restrict non-default install directory permissions Installations to Program Files (default) inherit restrictive permissions, disallowing regular users from writing to files in the install location. If a user installs to other directories with more lax permissions though, i.e. C:\, the install directory can be writable by non-admins, causing a privilege escalation opportunity. An unprivileged user could modify or replace the qTox binary or a dll, that would then be run by any other user on the system. Clone Program Files permissions rather than trying to craft sane permissions manually for simplicity and compatibility. --- windows/qtox.nsi | 20 ++++++++++++++++++++ windows/qtox64.nsi | 20 ++++++++++++++++++++ 2 files changed, 40 insertions(+) diff --git a/windows/qtox.nsi b/windows/qtox.nsi index 676cefdb7..701fb21c9 100644 --- a/windows/qtox.nsi +++ b/windows/qtox.nsi @@ -206,6 +206,26 @@ FunctionEnd ;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 diff --git a/windows/qtox64.nsi b/windows/qtox64.nsi index 0796650ef..8e3f3168b 100755 --- a/windows/qtox64.nsi +++ b/windows/qtox64.nsi @@ -206,6 +206,26 @@ FunctionEnd ;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 From b581a9c6f8ae9f1a9883b9b64b8010f23d6c70cc Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Sat, 5 Mar 2022 04:18:05 -0800 Subject: [PATCH 11/18] chore(release): Update qTox version number to v1.17.5 --- README.md | 10 +++++----- osx/info.plist | 4 ++-- res/io.github.qtox.qTox.appdata.xml | 2 +- windows/qtox.nsi | 2 +- windows/qtox64.nsi | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index f8c7d7ac1..8f6d1ea7b 100644 --- a/README.md +++ b/README.md @@ -158,18 +158,18 @@ AED3 1134 9C23 A123 E5C4 AA4B 139C A045 3DA2 D773 ``` [#qtox@freenode]: https://webchat.freenode.net/?channels=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.5/setup-qtox-x86_64-release.exe +[32 bit release]: https://github.com/qTox/qTox/releases/download/v1.17.5/setup-qtox-i686-release.exe [32nightly]: https://build.tox.chat/view/qtox/job/qTox-cmake-nightly_build_windows_x86_release/lastSuccessfulBuild/artifact/qTox-cmake-nightly_build_windows_x86_release.zip [64nightly]: https://build.tox.chat/view/qtox/job/qTox-cmake-nightly_build_windows_x86-64_release/lastSuccessfulBuild/artifact/qTox-cmake-nightly_build_windows_x86-64_release.zip -[Flatpak]: https://github.com/qTox/qTox/releases/download/v1.17.4/qTox-v1.17.4.x86_64.flatpak -[AppImage]: https://github.com/qTox/qTox/releases/download/v1.17.4/qTox-v1.17.4.x86_64.AppImage +[Flatpak]: https://github.com/qTox/qTox/releases/download/v1.17.5/qTox-v1.17.5.x86_64.flatpak +[AppImage]: https://github.com/qTox/qTox/releases/download/v1.17.5/qTox-v1.17.5.x86_64.AppImage [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.5/qTox.dmg [Fedora]: /INSTALL.md#fedora [Gentoo]: /INSTALL.md#gentoo [openSUSE]: /INSTALL.md#opensuse diff --git a/osx/info.plist b/osx/info.plist index c05b6c976..8cde9e7c3 100644 --- a/osx/info.plist +++ b/osx/info.plist @@ -65,7 +65,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.17.4 + 1.17.5 CFBundleSignature toxq CFBundleURLTypes @@ -84,7 +84,7 @@ CFBundleVersion - 1.17.4 + 1.17.5 NSPrincipalClass NSApplication NSCameraUsageDescription diff --git a/res/io.github.qtox.qTox.appdata.xml b/res/io.github.qtox.qTox.appdata.xml index 8d68ca5dc..2d99cb6dd 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 701fb21c9..c97e02190 100644 --- a/windows/qtox.nsi +++ b/windows/qtox.nsi @@ -273,7 +273,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" diff --git a/windows/qtox64.nsi b/windows/qtox64.nsi index 8e3f3168b..edab58827 100755 --- a/windows/qtox64.nsi +++ b/windows/qtox64.nsi @@ -274,7 +274,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" From a83ef30476012d3840582ddea64cf180285beb4f Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Sat, 5 Mar 2022 04:20:45 -0800 Subject: [PATCH 12/18] chore(release): Add changelog --- CHANGELOG.md | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 78299e12d..837f7c7a5 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,23 @@ + +## 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) From 1063b3d7f902ab4ce28cfec98bdc56d2b734ba31 Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Sat, 5 Mar 2022 23:52:17 -0800 Subject: [PATCH 13/18] chore(build): Remove check for QtVer It is unused, and brew now installs to Cella/qt@5 so this check causes an error. --- osx/qTox-Mac-Deployer-ULTIMATE.sh | 4 ---- 1 file changed, 4 deletions(-) diff --git a/osx/qTox-Mac-Deployer-ULTIMATE.sh b/osx/qTox-Mac-Deployer-ULTIMATE.sh index 47eb9ecc9..57fdde3d7 100755 --- a/osx/qTox-Mac-Deployer-ULTIMATE.sh +++ b/osx/qTox-Mac-Deployer-ULTIMATE.sh @@ -35,10 +35,6 @@ else MAIN_DIR="$(dirname $(readlink -f $0))/../.." QTOX_DIR="${MAIN_DIR}/qTox${SUBGIT}" fi -QT_DIR="/usr/local/Cellar/qt5" # Folder name of QT install -# Figure out latest version -QT_VER=($(ls ${QT_DIR} | sed -n -e 's/^\([0-9]*\.([0-9]*\.([0-9]*\).*/\1/' -e '1p;$p')) -QT_DIR_VER="${QT_DIR}/${QT_VER[1]}" TOXCORE_DIR="${MAIN_DIR}/toxcore" # Change to Git location From 47406e742297b167a0a6c606ddd9a20823959a06 Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Sat, 5 Mar 2022 19:03:12 -0800 Subject: [PATCH 14/18] fix(Windows): Correct Program Files directory for 32-bit Windows Both installers accidentally try to get permissions from the 64-bit Program Files, introduced in 553bd47e8171fd4f15e062e4faf734e32002f6fb. --- windows/qtox.nsi | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/windows/qtox.nsi b/windows/qtox.nsi index c97e02190..044e7ed92 100644 --- a/windows/qtox.nsi +++ b/windows/qtox.nsi @@ -208,7 +208,7 @@ FunctionEnd Section "Create install directory" CreateDirectory "$INSTDIR" - nsExec::ExecToStack 'icacls "$PROGRAMFILES64" /save "$TEMP\program-files-permissions.txt"' + nsExec::ExecToStack 'icacls "$PROGRAMFILES" /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 From c282c6e96f06206a8806265bcd12cbaccc87ba0b Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Sat, 5 Mar 2022 22:27:30 -0800 Subject: [PATCH 15/18] chore(release): Remove support for macOS 10.14 macOS 10.14 is EOL by Apple, and brew no longer supports it. We can no longer build qTox on 10.14 using our brew-based release process. Instead we will release from 10.15, which loses compatibility with 10.14 with our current build process. --- INSTALL.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/INSTALL.md b/INSTALL.md index 1fbe9b329..fd693a8c0 100644 --- a/INSTALL.md +++ b/INSTALL.md @@ -566,7 +566,7 @@ See [AppArmor] to enable confinement for increased security. ## OS X -Supported OS X versions: >=10.8. (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). From 484ea7ce9be971266a890c9bb76b4e23d0c8a622 Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Sun, 27 Jun 2021 11:20:17 -0700 Subject: [PATCH 16/18] fix(macos): update deprecated AVFoundation API Backported from 65ff532a54122a09357a0240b287219c0306c0be --- CMakeLists.txt | 11 +++++++++++ src/platform/camera/avfoundation.mm | 8 ++++++++ 2 files changed, 19 insertions(+) diff --git a/CMakeLists.txt b/CMakeLists.txt index c5191d58a..29858c416 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -614,6 +614,17 @@ if (NOT DEFINED ENABLE_STATUSNOTIFIER AND UNIX AND NOT APPLE) endif() if(AVFOUNDATION_FOUND) + # used for AVFoundation compile time deprecation check + execute_process( + COMMAND sw_vers -productVersion + OUTPUT_VARIABLE MACOS_VER + ) + string(REPLACE "." ";" VERSION_LIST ${MACOS_VER}) + list(GET VERSION_LIST 0 MACOS_VERSION_MAJOR) + list(GET VERSION_LIST 1 MACOS_VERSION_MINOR) + add_definitions(-DMACOS_VERSION_MAJOR=${MACOS_VERSION_MAJOR}) + add_definitions(-DMACOS_VERSION_MINOR=${MACOS_VERSION_MINOR}) + set(${PROJECT_NAME}_SOURCES ${${PROJECT_NAME}_SOURCES} src/platform/camera/avfoundation.mm src/platform/camera/avfoundation.h) diff --git a/src/platform/camera/avfoundation.mm b/src/platform/camera/avfoundation.mm index e856197e9..2f4b90b62 100644 --- a/src/platform/camera/avfoundation.mm +++ b/src/platform/camera/avfoundation.mm @@ -27,7 +27,15 @@ QVector > avfoundation::getDeviceList() { QVector > result; +#if MACOS_VERSION_MAJOR > 10 || (MACOS_VERSION_MAJOR == 10 && MACOS_VERSION_MINOR > 14) + AVCaptureDevice* device = [AVCaptureDevice defaultDeviceWithMediaType:AVMediaTypeVideo]; + id objects[] = {device}; + NSUInteger count = sizeof(objects) / sizeof(id); + NSArray* devices = [NSArray arrayWithObjects:objects count:count]; +#else NSArray* devices = [AVCaptureDevice devicesWithMediaType:AVMediaTypeVideo]; +#endif + for (AVCaptureDevice* device in devices) { result.append({ QString::fromNSString([device uniqueID]), QString::fromNSString([device localizedName]) }); } From f68be0ab33c2af7b1e9e3cc675175be1a3ad2003 Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Sat, 5 Mar 2022 22:15:09 -0800 Subject: [PATCH 17/18] chore(release): Update qTox version number to v1.17.6 --- README.md | 10 +++++----- osx/info.plist | 4 ++-- res/io.github.qtox.qTox.appdata.xml | 2 +- windows/qtox.nsi | 2 +- windows/qtox64.nsi | 2 +- 5 files changed, 10 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 8f6d1ea7b..5328923a5 100644 --- a/README.md +++ b/README.md @@ -158,18 +158,18 @@ AED3 1134 9C23 A123 E5C4 AA4B 139C A045 3DA2 D773 ``` [#qtox@freenode]: https://webchat.freenode.net/?channels=qtox -[64 bit release]: https://github.com/qTox/qTox/releases/download/v1.17.5/setup-qtox-x86_64-release.exe -[32 bit release]: https://github.com/qTox/qTox/releases/download/v1.17.5/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://build.tox.chat/view/qtox/job/qTox-cmake-nightly_build_windows_x86_release/lastSuccessfulBuild/artifact/qTox-cmake-nightly_build_windows_x86_release.zip [64nightly]: https://build.tox.chat/view/qtox/job/qTox-cmake-nightly_build_windows_x86-64_release/lastSuccessfulBuild/artifact/qTox-cmake-nightly_build_windows_x86-64_release.zip -[Flatpak]: https://github.com/qTox/qTox/releases/download/v1.17.5/qTox-v1.17.5.x86_64.flatpak -[AppImage]: https://github.com/qTox/qTox/releases/download/v1.17.5/qTox-v1.17.5.x86_64.AppImage +[Flatpak]: https://github.com/qTox/qTox/releases/download/v1.17.6/qTox-v1.17.6.x86_64.flatpak +[AppImage]: https://github.com/qTox/qTox/releases/download/v1.17.6/qTox-v1.17.6.x86_64.AppImage [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.5/qTox.dmg +[Latest release]: https://github.com/qTox/qTox/releases/download/v1.17.6/qTox.dmg [Fedora]: /INSTALL.md#fedora [Gentoo]: /INSTALL.md#gentoo [openSUSE]: /INSTALL.md#opensuse diff --git a/osx/info.plist b/osx/info.plist index 8cde9e7c3..3e1789820 100644 --- a/osx/info.plist +++ b/osx/info.plist @@ -65,7 +65,7 @@ CFBundlePackageType APPL CFBundleShortVersionString - 1.17.5 + 1.17.6 CFBundleSignature toxq CFBundleURLTypes @@ -84,7 +84,7 @@ CFBundleVersion - 1.17.5 + 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 2d99cb6dd..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 044e7ed92..9309710d8 100644 --- a/windows/qtox.nsi +++ b/windows/qtox.nsi @@ -273,7 +273,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.5" + ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "1.17.6" ${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" diff --git a/windows/qtox64.nsi b/windows/qtox64.nsi index edab58827..3b77607a8 100755 --- a/windows/qtox64.nsi +++ b/windows/qtox64.nsi @@ -274,7 +274,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.5" + ${WriteRegStr} ${REG_ROOT} "${UNINSTALL_PATH}" "DisplayVersion" "1.17.6" ${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" From 54345d1085628950af4176e6b4873513db0de4f3 Mon Sep 17 00:00:00 2001 From: Anthony Bilinski Date: Sun, 6 Mar 2022 06:31:31 -0800 Subject: [PATCH 18/18] chore(release): Add changelog --- CHANGELOG.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 837f7c7a5..f336ad6e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,14 @@ + +## 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)