mac-virtualcam: Handle missing DAL plugin destination directory
This commit is contained in:
parent
7f27963caa
commit
516ed4458d
@ -27,32 +27,30 @@ static bool check_dal_plugin()
|
||||
|
||||
NSString *dalPluginDestinationPath =
|
||||
@"/Library/CoreMediaIO/Plug-Ins/DAL/";
|
||||
NSString *dalPluginFileName = [dalPluginDestinationPath
|
||||
stringByAppendingString:@"obs-mac-virtualcam.plugin"];
|
||||
NSString *dalPluginFileName =
|
||||
@"/Library/CoreMediaIO/Plug-Ins/DAL/obs-mac-virtualcam.plugin";
|
||||
|
||||
BOOL dalPluginDirExists =
|
||||
[fileManager fileExistsAtPath:dalPluginDestinationPath];
|
||||
BOOL dalPluginInstalled =
|
||||
[fileManager fileExistsAtPath:dalPluginFileName];
|
||||
BOOL dalPluginUpdateNeeded = NO;
|
||||
|
||||
if (dalPluginInstalled) {
|
||||
NSString *dalPluginPlistPath = [dalPluginFileName
|
||||
stringByAppendingString:@"/Contents/Info.plist"];
|
||||
NSDictionary *dalPluginInfoPlist = [NSDictionary
|
||||
dictionaryWithContentsOfURL:
|
||||
[NSURL fileURLWithPath:dalPluginPlistPath]
|
||||
error:nil];
|
||||
[NSURL fileURLWithPath:
|
||||
@"/Library/CoreMediaIO/Plug-Ins/DAL/obs-mac-virtualcam.plugin/Contents/Info.plist"]];
|
||||
NSString *dalPluginVersion = [dalPluginInfoPlist
|
||||
valueForKey:@"CFBundleShortVersionString"];
|
||||
const char *obsVersion = obs_get_version_string();
|
||||
|
||||
if (![dalPluginVersion isEqualToString:@(obsVersion)]) {
|
||||
dalPluginUpdateNeeded = YES;
|
||||
}
|
||||
} else {
|
||||
dalPluginUpdateNeeded = YES;
|
||||
dalPluginUpdateNeeded =
|
||||
![dalPluginVersion isEqualToString:@(obsVersion)];
|
||||
}
|
||||
|
||||
if (dalPluginUpdateNeeded) {
|
||||
if (!dalPluginInstalled || dalPluginUpdateNeeded) {
|
||||
// TODO: Remove this distinction once OBS is built into an app bundle by cmake by default
|
||||
NSString *dalPluginSourcePath;
|
||||
NSRunningApplication *app =
|
||||
[NSRunningApplication currentApplication];
|
||||
@ -74,12 +72,27 @@ static bool check_dal_plugin()
|
||||
withString:@""];
|
||||
}
|
||||
|
||||
NSString *createPluginDirCmd =
|
||||
(!dalPluginDirExists)
|
||||
? [NSString stringWithFormat:
|
||||
@"mkdir -p '%@' && ",
|
||||
dalPluginDestinationPath]
|
||||
: @"";
|
||||
NSString *deleteOldPluginCmd =
|
||||
(dalPluginUpdateNeeded)
|
||||
? [NSString stringWithFormat:@"rm -rf '%@' && ",
|
||||
dalPluginFileName]
|
||||
: @"";
|
||||
NSString *copyPluginCmd =
|
||||
[NSString stringWithFormat:@"cp -R '%@' '%@'",
|
||||
dalPluginSourcePath,
|
||||
dalPluginDestinationPath];
|
||||
if ([fileManager fileExistsAtPath:dalPluginSourcePath]) {
|
||||
NSString *copyCmd = [NSString
|
||||
stringWithFormat:
|
||||
@"do shell script \"rm -rf '%@' && cp -R '%@' '%@'\" with administrator privileges",
|
||||
dalPluginFileName, dalPluginSourcePath,
|
||||
dalPluginDestinationPath];
|
||||
@"do shell script \"%@%@%@\" with administrator privileges",
|
||||
createPluginDirCmd, deleteOldPluginCmd,
|
||||
copyPluginCmd];
|
||||
|
||||
NSDictionary *errorDict;
|
||||
NSAppleEventDescriptor *returnDescriptor = NULL;
|
||||
|
Loading…
x
Reference in New Issue
Block a user