Compare commits

...

4 Commits

Author SHA1 Message Date
vladimir.kuznetsov fdf4b8a5bd added processing of file opening event from context menu for windows 2024-05-11 11:28:59 +03:00
vladimir.kuznetsov 7da9539f2a added processing of file opening event from context menu for macos 2024-04-25 00:03:54 +05:00
vladimir.kuznetsov 12083c098a added processing of Info.plist 2024-04-24 17:19:44 +05:00
vladimir.kuznetsov dfdb89d7a9 added CFBundleDocumentTypes for macos 2024-04-24 11:59:52 +05:00
6 changed files with 93 additions and 32 deletions
+1 -1
View File
@@ -233,7 +233,7 @@ jobs:
- name: 'Setup xcode'
uses: maxim-lobanov/setup-xcode@v1
with:
xcode-version: '13.4'
xcode-version: '14.3.1'
- name: 'Install Qt'
uses: jurplel/install-qt-action@v3
+17
View File
@@ -293,6 +293,23 @@ QQmlApplicationEngine *AmneziaApplication::qmlEngine() const
return m_engine;
}
#ifdef Q_OS_MACOS
bool AmneziaApplication::event(QEvent *event)
{
if (event->type() == QEvent::FileOpen) {
QFileOpenEvent *openEvent = static_cast<QFileOpenEvent *>(event);
const QUrl url = openEvent->url();
if (url.isLocalFile()) {
m_pageController->replaceStartPage();
m_importController->extractConfigFromFile(url.toLocalFile());
m_pageController->goToPageViewConfig();
}
}
return QApplication::event(event);
}
#endif
void AmneziaApplication::initModels()
{
m_containersModel.reset(new ContainersModel(this));
+5
View File
@@ -5,6 +5,7 @@
#include <QQmlApplicationEngine>
#include <QQmlContext>
#include <QThread>
#include <QFileOpenEvent>
#if defined(Q_OS_ANDROID) || defined(Q_OS_IOS)
#include <QGuiApplication>
#else
@@ -74,6 +75,10 @@ public:
QQmlApplicationEngine *qmlEngine() const;
#ifdef Q_OS_MACOS
bool event(QEvent *event) override;
#endif
signals:
void translationsUpdated();
+13
View File
@@ -1,5 +1,7 @@
message("MAC build")
set(APPLE_PROJECT_VERSION ${CMAKE_PROJECT_VERSION_MAJOR}.${CMAKE_PROJECT_VERSION_MINOR}.${CMAKE_PROJECT_VERSION_PATCH})
find_library(FW_SYSTEMCONFIG SystemConfiguration)
find_library(FW_SERVICEMGMT ServiceManagement)
find_library(FW_SECURITY Security)
@@ -19,6 +21,17 @@ set(LIBS ${LIBS}
)
set_target_properties(${PROJECT} PROPERTIES MACOSX_BUNDLE TRUE)
set_target_properties(${PROJECT} PROPERTIES
MACOSX_BUNDLE_INFO_PLIST ${CMAKE_CURRENT_SOURCE_DIR}/macos/app/Info.plist
XCODE_ATTRIBUTE_PRODUCT_NAME "AmneziaVPN"
XCODE_ATTRIBUTE_BUNDLE_INFO_STRING "AmneziaVPN"
MACOSX_BUNDLE_GUI_IDENTIFIER "${BUILD_OSX_APP_IDENTIFIER}"
MACOSX_BUNDLE_BUNDLE_VERSION "${CMAKE_PROJECT_VERSION_TWEAK}"
MACOSX_BUNDLE_LONG_VERSION_STRING "${APPLE_PROJECT_VERSION}-${CMAKE_PROJECT_VERSION_TWEAK}"
MACOSX_BUNDLE_SHORT_VERSION_STRING "${APPLE_PROJECT_VERSION}"
)
set(CMAKE_OSX_ARCHITECTURES "x86_64" CACHE INTERNAL "" FORCE)
set(CMAKE_OSX_DEPLOYMENT_TARGET 10.15)
+51 -31
View File
@@ -2,49 +2,69 @@
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>CFBundleDevelopmentRegion</key>
<string>$(DEVELOPMENT_LANGUAGE)</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundlePackageType</key>
<string>APPL</string>
<key>CFBundleAllowMixedLocalizations</key>
<true/>
<key>CFBundleName</key>
<string>${MACOSX_BUNDLE_BUNDLE_NAME}</string>
<key>CFBundleExecutable</key>
<string>${EXECUTABLE_NAME}</string>
<key>CFBundleIdentifier</key>
<string>${MACOSX_BUNDLE_GUI_IDENTIFIER}</string>
<key>CFBundleIdentifier</key>
<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
<key>CFBundleExecutable</key>
<string>${MACOSX_BUNDLE_EXECUTABLE_NAME}</string>
<key>CFBundleInfoDictionaryVersion</key>
<string>6.0</string>
<key>CFBundleVersion</key>
<string>${MACOSX_BUNDLE_BUNDLE_VERSION}</string>
<key>CFBundleName</key>
<string>$(PRODUCT_NAME)</string>
<key>CFBundleShortVersionString</key>
<string>${MACOSX_BUNDLE_SHORT_VERSION_STRING}</string>
<key>CFBundlePackageType</key>
<string>$(PRODUCT_BUNDLE_PACKAGE_TYPE)</string>
<key>CFBundleDocumentTypes</key>
<array>
<dict>
<key>CFBundleTypeExtensions</key>
<array>
<string>conf</string>
<string>vpn</string>
<string>ovpn</string>
<string>backup</string>
</array>
<key>CFBundleTypeRole</key>
<string>Viewer</string>
<key>CFBundleTypeName</key>
<string>AmneziaVPN configuration file</string>
<key>LSItemContentTypes</key>
<array>
<string>org.amnezia.AmneziaVPN.amnezia-config</string>
<string>org.amnezia.AmneziaVPN.wireguard-config</string>
<string>org.amnezia.AmneziaVPN.openvpn-config</string>
<string>org.amnezia.AmneziaVPN.backup-config</string>
</array>
</dict>
</array>
<key>CFBundleShortVersionString</key>
<string>$(MARKETING_VERSION)</string>
<key>LSMinimumSystemVersion</key>
<string>${CMAKE_OSX_DEPLOYMENT_TARGET}</string>
<key>CFBundleVersion</key>
<string>$(CURRENT_PROJECT_VERSION)</string>
<key>NSHumanReadableCopyright</key>
<string>${MACOSX_BUNDLE_COPYRIGHT}</string>
<key>ITSAppUsesNonExemptEncryption</key>
<false/>
<key>CFBundleIconFile</key>
<string>${MACOSX_BUNDLE_ICON_FILE}</string>
<key>LSApplicationCategoryType</key>
<string>public.app-category.utilities</string>
<key>CFBundleDevelopmentRegion</key>
<string>en</string>
<key>LSMinimumSystemVersion</key>
<string>${MACOSX_DEPLOYMENT_TARGET}</string>
<key>CFBundleAllowMixedLocalizations</key>
<true/>
<key>LSMultipleInstancesProhibited</key>
<true/>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSPrincipalClass</key>
<string>NSApplication</string>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
<key>NSSupportsAutomaticGraphicsSwitching</key>
<true/>
</dict>
</plist>
@@ -84,6 +84,12 @@ Component.prototype.createOperations = function()
console.log("Microsoft Visual C++ 2017 Redistributable already installed");
}
component.addElevatedOperation("GlobalConfig", "Classes\Applications\@Publisher@", "@Title@", "shell/open/command", "@TargetDir@/@Name@.exe")
component.addElevatedOperation("GlobalConfig", "Classes\Applications\@Publisher@", "@Title@", "SupportedTypes", ".vpn")
component.addElevatedOperation("GlobalConfig", "Classes\Applications\@Publisher@", "@Title@", "SupportedTypes", ".conf")
component.addElevatedOperation("GlobalConfig", "Classes\Applications\@Publisher@", "@Title@", "SupportedTypes", ".ovpn")
component.addElevatedOperation("GlobalConfig", "Classes\Applications\@Publisher@", "@Title@", "SupportedTypes", ".backup")
let pu_path = installer.value("TargetDir").replace(/\//g, '\\') + "\\"
component.addElevatedOperation("Execute",
["sc", "create", serviceName(), "binpath=", pu_path + serviceName() + ".exe",