mirror of
https://github.com/etlegacy/Update-Installer.git
synced 2025-02-01 20:10:42 +00:00
9650a492a9
Previously the application was run from outside a bundle and hence did not have an app icon - so OS X displayed the generic 'terminal' icon in the elevation dialog. The app icon in the dock was set at runtime, but disappeared temporarily on shutdown when the overridden app icon was replaced with the default icon. This commit fixes the problem by detecting whether the executable is being run from within a bundle and if not, creating a minimal app bundle in /tmp and re-launching the updater from there.
35 lines
906 B
C++
35 lines
906 B
C++
#pragma once
|
|
|
|
#include <string>
|
|
|
|
/** Class for creating minimal Mac app bundles. */
|
|
class MacBundle
|
|
{
|
|
public:
|
|
/** Create a MacBundle instance representing the bundle
|
|
* in <path>/<appName>.app
|
|
*/
|
|
MacBundle(const std::string& path, const std::string& appName);
|
|
|
|
/** Create a simple Mac bundle.
|
|
*
|
|
* @param infoPlist The content of the Info.plist file
|
|
* @param icon The content of the app icon
|
|
* @param exePath The path of the file to use for the main app in the bundle.
|
|
*/
|
|
void create(const std::string& infoPlist,
|
|
const std::string& icon,
|
|
const std::string& exePath);
|
|
|
|
/** Returns the path of the main executable within the Mac bundle. */
|
|
std::string executablePath() const;
|
|
|
|
/** Returns the path of the bundle */
|
|
std::string bundlePath() const;
|
|
|
|
private:
|
|
std::string m_path;
|
|
std::string m_appName;
|
|
std::string m_exePath;
|
|
};
|
|
|