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;
 }
Ejemplo n.º 7
0
 public ScriptResolver(Package package)
 {
     _package = package;
 }
Ejemplo n.º 8
0
 public static bool IsInstalled(Package package)
 {
     return EnumeratePackages().Where(pkg => pkg.PackagePath == package.PackagePath).Any();
 }
Ejemplo n.º 9
0
 public static bool IsConflictingWithInstalledPackage(Package package)
 {
     return EnumeratePackages().Where(pkg => pkg.ExtendsFriendlyName == package.ExtendsFriendlyName &&
     pkg.PackagePath != package.PackagePath).Any();
 }
Ejemplo n.º 10
0
 public static void Delete(Package package)
 {
     Registry.CurrentUser.CreateSubKey(KeyName).DeleteSubKey(package.ExtendsFriendlyName);
 }
Ejemplo n.º 11
0
 public static void Add(Package package)
 {
     Registry.CurrentUser.CreateSubKey(KeyName).
         CreateSubKey(package.ExtendsFriendlyName).SetValue(PackagePathName, package.PackagePath);
 }