Przeglądaj źródła

Fixed minor bugs & added manifests for admin rights for binaries

Ivan Arkhipov 3 lat temu
rodzic
commit
03bed6a69d

+ 2 - 0
Legacy_v2.pro

@@ -12,3 +12,5 @@ SUBDIRS += \
 #    src/Legacy-advanced \
     src/LegacyLauncher \
     src/LegacyForwardHelper
+
+# DO NOT FORGET TO set appropriate value for variable WINDOWS_SDK_MT_EXE_PATH in common.pri

+ 9 - 0
common.pri

@@ -44,3 +44,12 @@ DEFINES += QT_DEPRECATED_WARNINGS
 # You can also select to disable deprecated APIs only up to a certain version of Qt.
 #DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0
 
+win32 {
+    # Installing manifests
+
+    # This variable should navigate to mt.exe file
+    WINDOWS_SDK_MT_EXE_PATH = C:/Program Files (x86)/Windows Kits/10/bin/10.0.18362.0/x64/mt.exe
+    MANIFESTS_DIR = $$replace(PROJECT_ROOT_PATH, /, \\)\\manifests
+    BUILD_DIR= $$replace(BIN_PATH, /, \\)
+    QMAKE_POST_LINK = "\"$$WINDOWS_SDK_MT_EXE_PATH\" -manifest $$quote($$MANIFESTS_DIR\\$$basename(TARGET).manifest) -outputresource:$$quote($$BUILD_DIR\\$$basename(TARGET).exe;1)"
+}

+ 18 - 0
manifests/Legacy.manifest

@@ -0,0 +1,18 @@
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
+
+<trustInfo>
+<security>
+<requestedPrivileges>
+<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
+</requestedPrivileges>
+</security>
+</trustInfo>
+
+
+<asmv3:application  xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
+    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
+      <dpiAware>true/pm</dpiAware>
+    </asmv3:windowsSettings>
+  </asmv3:application>
+  
+</assembly>

+ 18 - 0
manifests/LegacyForwardHelper.manifest

@@ -0,0 +1,18 @@
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
+
+<trustInfo>
+<security>
+<requestedPrivileges>
+<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
+</requestedPrivileges>
+</security>
+</trustInfo>
+
+
+<asmv3:application  xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
+    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
+      <dpiAware>true/pm</dpiAware>
+    </asmv3:windowsSettings>
+  </asmv3:application>
+  
+</assembly>

+ 18 - 0
manifests/LegacyLauncher.manifest

@@ -0,0 +1,18 @@
+<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0" xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
+
+<trustInfo>
+<security>
+<requestedPrivileges>
+<requestedExecutionLevel level="requireAdministrator" uiAccess="false"/>
+</requestedPrivileges>
+</security>
+</trustInfo>
+
+
+<asmv3:application  xmlns:asmv3="urn:schemas-microsoft-com:asm.v3" >
+    <asmv3:windowsSettings xmlns="http://schemas.microsoft.com/SMI/2005/WindowsSettings">
+      <dpiAware>true/pm</dpiAware>
+    </asmv3:windowsSettings>
+  </asmv3:application>
+  
+</assembly>

+ 0 - 1
src/Legacy/Legacy.pro

@@ -10,7 +10,6 @@ greaterThan(QT_MAJOR_VERSION, 4): QT += widgets
 TARGET = Legacy
 TEMPLATE = app
 
-CXXFLAGS += -O2 -fno-stack-limit
 CONFIG += resources_big
 
 SOURCES += \

+ 2 - 0
src/LegacyForwardHelper/LegacyForwardHelper.pro

@@ -3,6 +3,8 @@ include( ../../app.pri )
 
 QT += core widgets
 QMAKE_LFLAGS += -static -static-libgcc -static-libstdc++
+TARGET = LegacyForwardHelper
+TEMPLATE = app
 
 # The following define makes your compiler emit warnings if you use
 # any feature of Qt which as been marked deprecated (the exact warnings

+ 20 - 20
src/LegacyForwardHelper/main.cpp

@@ -63,26 +63,7 @@ void logMessageHandler(QtMsgType type, const QMessageLogContext &context, const
 }
 
 int main(int argc, char** argv) {
-    if (argc <= 1 || (argc > 1 && std::string(argv[1]) != "-prelaunched")) {
-        QApplication a(argc, argv);
-        QMessageBox msgBox;
-        msgBox.setIcon(QMessageBox::Warning);
-
-        #ifdef DEBUG
-            msgBox.setText("ЭТО ТЕСТОВАЯ ВЕРСИЯ ЛАУНЧЕРА! НЕ ДЛЯ РАСПРОСТРАНЕНИЯ!");
-            msgBox.exec();
-            long long cur_time = time(0);
-            if (cur_time >= DEBUG_EXPIRE)
-                return 0;
-        #else
-            msgBox.setText("Запуск Наследия невозможен без лаунчера. Используйте лаунчер Наследия для запуска приложения!");
-            msgBox.exec();
-            a.exit(0);
-            return 0;
-        #endif
-    }
-
-    QCoreApplication a(argc, argv);
+    QApplication app(argc, argv);
     qInstallMessageHandler(logMessageHandler);
     QThread::currentThread()->sleep(1); // Sleep 2 seconds to ensure that application-caller finished its work
     const QString app_path = QCoreApplication::applicationDirPath();
@@ -102,6 +83,25 @@ int main(int argc, char** argv) {
         }
     }
 
+
+    if (argc <= 1 || (argc > 1 && std::string(argv[1]) != "-prelaunched")) {
+        QMessageBox msgBox;
+        msgBox.setIcon(QMessageBox::Warning);
+
+        #ifdef DEBUG
+            msgBox.setText("ЭТО ТЕСТОВАЯ ВЕРСИЯ ЛАУНЧЕРА! НЕ ДЛЯ РАСПРОСТРАНЕНИЯ!");
+            msgBox.exec();
+            long long cur_time = time(0);
+            if (cur_time >= DEBUG_EXPIRE)
+                return 0;
+        #else
+            msgBox.setText("Запуск Наследия невозможен без лаунчера. Используйте лаунчер Наследия для запуска приложения!");
+            msgBox.exec();
+            return 0;
+        #endif
+    }
+
+    qInfo() << "Starting ./Legacy.exe";
     QProcess process;
     process.setProgram("./Legacy.exe");
     process.setArguments({"-prelaunched"});

+ 2 - 0
src/LegacyLauncher/LegacyLauncher.pro

@@ -3,6 +3,8 @@ include( ../../app.pri )
 
 QT += core gui widgets network multimedia multimediawidgets
 QMAKE_LFLAGS += -static -static-libgcc -static-libstdc++
+TARGET = LegacyLauncher
+TEMPLATE = app
 
 # The following define makes your compiler emit warnings if you use
 # any feature of Qt which as been marked deprecated (the exact warnings

+ 5 - 0
src/LegacyLauncher/launcher.cpp

@@ -95,6 +95,11 @@ void GIFAnimationDemoWidget::downloadNextEnqueuedFile()
     files_to_download.pop_front();
     const QString target_file_path = target_folder + QString(file_path).replace("release/", "");
     data_downloader->setUrl(QUrl(base_url + file_path));
+    FileSystem::createFilePath(target_file_path);
+    if (!(QFileInfo(target_file_path) == QFileInfo(QApplication::applicationFilePath()))) {
+        QFile::remove(target_file_path);
+    }
+
     data_downloader->targetFile = new QFile(target_file_path);
     data_downloader->targetFile->open(QIODevice::WriteOnly);
     if (!data_downloader->targetFile->isOpen() || !data_downloader->targetFile->isWritable()) {