Skip to content

Commit 4da3073

Browse files
committed
Adds Application::minimumOSVersion()
1 parent 2a5c4bb commit 4da3073

2 files changed

Lines changed: 25 additions & 3 deletions

File tree

AltSign/Application.cpp

Lines changed: 22 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ extern std::vector<unsigned char> readFile(const char* filename);
2121

2222
namespace fs = std::filesystem;
2323

24-
Application::Application()
24+
Application::Application() : _minimumOSVersion(0, 0, 0)
2525
{
2626
}
2727

@@ -33,12 +33,13 @@ Application::~Application()
3333
}
3434
}
3535

36-
Application::Application(const Application& app)
36+
Application::Application(const Application& app) : _minimumOSVersion(0, 0, 0)
3737
{
3838
_name = app.name();
3939
_bundleIdentifier = app.bundleIdentifier();
4040
_version = app.version();
4141
_path = app.path();
42+
_minimumOSVersion = app.minimumOSVersion();
4243

4344
// Don't assign _entitlementsString or _entitlements,
4445
// since each copy will create its own entitlements lazily.
@@ -56,11 +57,12 @@ Application& Application::operator=(const Application& app)
5657
_bundleIdentifier = app.bundleIdentifier();
5758
_version = app.version();
5859
_path = app.path();
60+
_minimumOSVersion = app.minimumOSVersion();
5961

6062
return *this;
6163
}
6264

63-
Application::Application(std::string appBundlePath)
65+
Application::Application(std::string appBundlePath) : _minimumOSVersion(0, 0, 0)
6466
{
6567
fs::path path(appBundlePath);
6668
path.append("Info.plist");
@@ -97,6 +99,7 @@ Application::Application(std::string appBundlePath)
9799

98100
// Optional properties
99101
auto versionNode = plist_dict_get_item(plist, "CFBundleShortVersionString");
102+
auto minimumOSVersionNode = plist_dict_get_item(plist, "MinimumOSVersion");
100103

101104
std::string version("1.0");
102105
if (versionNode != nullptr)
@@ -108,10 +111,21 @@ Application::Application(std::string appBundlePath)
108111
free(versionString);
109112
}
110113

114+
OperatingSystemVersion minimumOSVersion(1, 0, 0);
115+
if (minimumOSVersionNode != nullptr)
116+
{
117+
char* minOSVersionString = nullptr;
118+
plist_get_string_val(minimumOSVersionNode, &minOSVersionString);
119+
minimumOSVersion = OperatingSystemVersion(minOSVersionString);
120+
121+
free(minOSVersionString);
122+
}
123+
111124
_name = name;
112125
_bundleIdentifier = bundleIdentifier;
113126
_version = version;
114127
_path = appBundlePath;
128+
_minimumOSVersion = minimumOSVersion;
115129

116130
free(name);
117131
free(bundleIdentifier);
@@ -194,6 +208,11 @@ std::vector<std::shared_ptr<Application>> Application::appExtensions() const
194208
return appExtensions;
195209
}
196210

211+
OperatingSystemVersion Application::minimumOSVersion() const
212+
{
213+
return _minimumOSVersion;
214+
}
215+
197216
std::string Application::entitlementsString()
198217
{
199218
if (_entitlementsString == "")

AltSign/Application.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@
2020
#include <plist/plist.h>
2121

2222
#include "ProvisioningProfile.hpp"
23+
#include "Device.hpp"
2324

2425
class Application
2526
{
@@ -40,6 +41,7 @@ class Application
4041
std::shared_ptr<ProvisioningProfile> provisioningProfile();
4142
std::vector<std::shared_ptr<Application>> appExtensions() const;
4243

44+
OperatingSystemVersion minimumOSVersion() const;
4345
std::map<std::string, plist_t> entitlements();
4446

4547
bool isAltStoreApp() const;
@@ -54,6 +56,7 @@ class Application
5456

5557
std::shared_ptr<ProvisioningProfile> _provisioningProfile;
5658

59+
OperatingSystemVersion _minimumOSVersion;
5760
std::string _entitlementsString;
5861
std::map<std::string, plist_t> _entitlements;
5962

0 commit comments

Comments
 (0)