Я пытаюсь удалить приложение Silverlight Out Of Browser, программно передающее аргументы sllauncher в следующем сообщении: http://timheuer.com/blog/archive/2010/03/25/using-sllauncher-for-silent-install-silverlight-application.aspx Однако он не удалит приложение, если ему задано начало координат.Невозможно удалить SIlverlight из приложения для браузера Программно
0
A
ответ
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
+1 для ответа на свой вопрос :) –