public static void OpenFileInShellWith(PackageFile file)
{
// copy to temporary file
// create package in the temprary file first in case the operation fails which would
// override existing file with a 0-byte file.
string tempFileName = Path.Combine(GetTempFilePath(), file.Name);
using (Stream tempFileStream = File.Create(tempFileName))
{
file.GetStream().CopyTo(tempFileStream);
}
if (File.Exists(tempFileName))
{
var info = new ProcessStartInfo("rundll32.exe")
{
ErrorDialog = true,
UseShellExecute = false,
Arguments =
"shell32.dll,OpenAs_RunDLL " + tempFileName
};
Process.Start(info);
}
}