public static bool DeployPackageUnElevated(Package package, DeploymentAction action) { if (PackageDebugSettingsService.PackageOperationNeedsElevation(package)) { try { // Format: <path-to-this.exe> VERB "<path-to-package>" Process.Start(new ProcessStartInfo { FileName = Process.GetCurrentProcess().MainModule.FileName, Arguments = action.ToString().ToUpper() + " \"" + package.PackagePath + "\"", Verb = "runas" }); return true; } catch (Exception e) { Debug.WriteLine("Failed to start elevated worker instance:\n" + e.StackTrace); return false; } } else { DeployPackageElevated(package, action); return true; } }
private static string GenerateCommandLineForPackage(Package package) { if (!string.IsNullOrWhiteSpace(package.Manifest.Exe)) { return string.Format("\"{0}\" Exec \"{1}\"", Process.GetCurrentProcess().MainModule.FileName, package.PackagePath); } else { return string.Format("\"{0}\" Attach \"{1}\"", Process.GetCurrentProcess().MainModule.FileName, package.PackagePath); } }
private static void ValidatePackage(Package package) { if (!string.IsNullOrWhiteSpace(package.Manifest.Exe) && !string.IsNullOrWhiteSpace(package.Manifest.AppxPackageFamilyName)) { throw new ArgumentException("Package App and PackageName values cannnot both be set.", "package"); } if (string.IsNullOrWhiteSpace(package.Manifest.Exe) && string.IsNullOrWhiteSpace(package.Manifest.AppxPackageFamilyName)) { throw new ArgumentException("Package App and PackageName values cannnot both be null.", "package"); } }
public static void SetDebuggerForPackage(Package package) { ValidatePackage(package); if (package.IsExe) { ImageFileExecutionOptionsService.SetDebugger(package.Manifest.Exe, GenerateCommandLineForPackage(package)); } else { WinRtPackageDebugSettingsService.SetDebugger(AppxAppModel.PackageFullNameFromFamilyName(package.Manifest.AppxPackageFamilyName), GenerateCommandLineForPackage(package)); } }
public static void DeployPackageElevated(Package package, DeploymentAction action) { switch (action) { case DeploymentAction.Install_Package: PackageDebugSettingsService.SetDebuggerForPackage(package); PackageStoreService.Add(package); break; case DeploymentAction.Remove_Package: PackageDebugSettingsService.ClearDebuggerForPackage(package); PackageStoreService.Delete(package); break; default: throw new NotImplementedException(); } }
public static bool PackageOperationNeedsElevation(Package package) { return package.IsExe; }
public ScriptResolver(Package package) { _package = package; }
public static bool IsInstalled(Package package) { return EnumeratePackages().Where(pkg => pkg.PackagePath == package.PackagePath).Any(); }
public static bool IsConflictingWithInstalledPackage(Package package) { return EnumeratePackages().Where(pkg => pkg.ExtendsFriendlyName == package.ExtendsFriendlyName && pkg.PackagePath != package.PackagePath).Any(); }
public static void Delete(Package package) { Registry.CurrentUser.CreateSubKey(KeyName).DeleteSubKey(package.ExtendsFriendlyName); }
public static void Add(Package package) { Registry.CurrentUser.CreateSubKey(KeyName). CreateSubKey(package.ExtendsFriendlyName).SetValue(PackagePathName, package.PackagePath); }