2013-08-07 10 views
0

Я пытаюсь удалить приложение Silverlight Out Of Browser, программно передающее аргументы sllauncher в следующем сообщении: http://timheuer.com/blog/archive/2010/03/25/using-sllauncher-for-silent-install-silverlight-application.aspx Однако он не удалит приложение, если ему задано начало координат.Невозможно удалить SIlverlight из приложения для браузера Программно

ответ

3

Оказалось, что при автоматическом обновлении приложения Out-Of-Browser Silverlight маркирует каждое приложение Uri меткой времени, которая может быть найдена в папке приложения в C: \ Users \ Trevor \ AppData \ Local \ Microsoft \ Silverlight \ OutOfBrowser (AppFolderName) файла метаданных. Таким образом, чтобы облегчить удаление нашего приложения в рамках подготовки к нашей новой, я осуществил следующее:

UninstallExisting(GetInstalledAppUri()); // This is how it's called 
//This is the two method's implementation 

// TODO: Change to your app name.  
const string appName = "YourAppNameHere"; 

static string silverlightOutOfBrowserFolder = 
    Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData) 
    + @"\Microsoft\Silverlight\OutOfBrowser"; 

private static string GetInstalledAppUri() 
    { 
     string xapFolderPath = Path.Combine(silverlightOutOfBrowserFolder, GetXapFolder()); 
     string[] lines = File.ReadAllLines(Path.Combine(xapFolderPath, "metadata"), Encoding.Unicode); 
     string finalAppUriLine = lines.First(i => i.Contains("FinalAppUri=")); 
     return "\"" + finalAppUriLine.Replace("FinalAppUri=", "") + "\""; 
    } 

    private static string GetXapFolder() 
    { 
     string AppXapFolder = ""; 
     foreach (var dir in Directory.GetDirectories(silverlightOutOfBrowserFolder)) 
     { 
      if (dir.Contains(appName)) 
      { 
       AppXapFolder = dir; 
      } 
     } 
     return AppXapFolder ; 
    } 

private static string silverlightExe 
    { 
     get 
     { 
      return Path.Combine(
      Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles), 
      @"Microsoft Silverlight\sllauncher.exe"); 
     } 
    } 

private static void UninstallExisting(string xapUriToRemove) 
    { 
     string installArgs = "/uninstall" + " /origin:" + xapUriToRemove; 
     ProcessStartInfo pstart = new ProcessStartInfo(silverlightExe, installArgs); 
     Process p = new Process(); 
     pstart.UseShellExecute = false; 
     p.StartInfo = pstart; 
     p.Start(); 
     p.WaitForExit(); 
    } 

Я надеюсь, что это служит, чтобы спасти кого-то часы времени потребовалось мне, чтобы выяснить о файле метаданных и все особенности sllauncher.exe

+0

+1 для ответа на свой вопрос :) –