Răsfoiți Sursa

codesign --remove-signature will cause broken binary (#2530)

* codesign --remove-signature will cause broken binary

* fix
Le Tan 1 an în urmă
părinte
comite
a7600fa7f7
3 a modificat fișierele cu 22 adăugiri și 12 ștergeri
  1. 7 0
      .github/workflows/ci-macos.yml
  2. 1 1
      src/CPackMacDeployQt.cmake.in
  3. 14 11
      src/utils/widgetutils.cpp

+ 7 - 0
.github/workflows/ci-macos.yml

@@ -72,6 +72,13 @@ jobs:
           git clone https://github.com/tamlok/macdeployqtfix.git macdeployqtfix --depth=1
         working-directory: ${{runner.workspace}}
 
+      - name: Install optool
+        run: |
+          wget --no-verbose https://github.com/alexzielenski/optool/releases/download/0.1/optool.zip
+          unzip ./optool.zip
+          sudo ln -s ./optool /usr/local/bin/optool
+        working-directory: ${{runner.workspace}}
+
       - name: Cache Qt
         id: cache-qt
         uses: actions/cache@v1  # not v2!

+ 1 - 1
src/CPackMacDeployQt.cmake.in

@@ -1,4 +1,4 @@
-execute_process(COMMAND "codesign" --remove-signature ${CMAKE_CURRENT_BINARY_DIR}/VNote.app
+execute_process(COMMAND "optool" strip -t ${CMAKE_CURRENT_BINARY_DIR}/VNote.app
     WORKING_DIRECTORY ${CPACK_PACKAGE_DIRECTORY}
 )
 execute_process(COMMAND "${MACDEPLOYQT_EXECUTABLE}" ${CMAKE_CURRENT_BINARY_DIR}/VNote.app -dmg

+ 14 - 11
src/utils/widgetutils.cpp

@@ -25,6 +25,7 @@
 #include <QPushButton>
 #include <QSplitter>
 #include <QFormLayout>
+#include <QFileInfo>
 
 #include <core/global.h>
 #include <widgets/messageboxhelper.h>
@@ -78,19 +79,21 @@ QSize WidgetUtils::availableScreenSize(QWidget *p_widget)
 void WidgetUtils::openUrlByDesktop(const QUrl &p_url)
 {
     const auto scheme = p_url.scheme();
-    if (scheme != "http" && scheme != "https") {
-        // Prompt for user.
-        int ret = MessageBoxHelper::questionYesNo(MessageBoxHelper::Warning,
-                                                  MainWindow::tr("Are you sure to open link (%1)?").arg(p_url.toString()),
-                                                  MainWindow::tr("Malicious link might do harm to your device."),
-                                                  QString(),
-                                                  nullptr);
-        if (ret == QMessageBox::No) {
-            return;
-        }
+    if (scheme == "http" || scheme == "https" ||
+        (p_url.isLocalFile() && QFileInfo(p_url.toLocalFile()).isDir())) {
+        QDesktopServices::openUrl(p_url);
+        return;
     }
 
-    QDesktopServices::openUrl(p_url);
+    // Prompt for user.
+    int ret = MessageBoxHelper::questionYesNo(MessageBoxHelper::Warning,
+                                              MainWindow::tr("Are you sure to open link (%1)?").arg(p_url.toString()),
+                                              MainWindow::tr("Malicious link might do harm to your device."),
+                                              QString(),
+                                              nullptr);
+    if (ret == QMessageBox::No) {
+        return;
+    }
 }
 
 bool WidgetUtils::processKeyEventLikeVi(QWidget *p_widget,