Files
ZuneShell.dll/ZuneHost/Program.cs
T
Yoshi Askharoun e18dd852b6 Fixed ZuneHost dependency issues...
... by copying the entire contents of Program Files\Zune
2022-06-03 02:23:11 -05:00

69 lines
2.4 KiB
C#

using System;
using System.IO;
using System.Threading;
namespace ZuneHost
{
internal class Program
{
static string _zuneProgramFolder;
[STAThread]
static int Main(string[] args)
{
Console.WriteLine("Creating splash window...");
string strArgs = string.Join(" ", args);
// Make sure that ZuneDBApi can find all the Zune native libraries
Console.WriteLine("Copying Zune files...");
_zuneProgramFolder = Path.Combine(
Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles),
"Zune");
foreach (var info in new DirectoryInfo(_zuneProgramFolder).GetFileSystemInfos())
{
if (info is DirectoryInfo dirInfo)
{
CopyAll(dirInfo, new DirectoryInfo(Path.Combine(Environment.CurrentDirectory, dirInfo.Name)));
}
else if (info is FileInfo fileInfo)
{
string fileName = fileInfo.Name;
if (fileInfo.Extension == ".dll")
{
string targetPath = Path.Combine(Environment.CurrentDirectory, fileName);
if (!File.Exists(targetPath) || fileName == "ZuneDbApi.dll")
fileInfo.CopyTo(targetPath);
}
}
}
Console.WriteLine("Starting Zune...");
return Microsoft.Zune.Shell.ZuneApplication.Launch(strArgs, IntPtr.Zero);
}
public static void CopyAll(DirectoryInfo source, DirectoryInfo target)
{
// Check if the target directory exists
if (Directory.Exists(target.FullName) == false)
{
Directory.CreateDirectory(target.FullName);
}
// Copy all the files into the new directory
foreach (FileInfo fi in source.GetFiles())
{
fi.CopyTo(Path.Combine(target.ToString(), fi.Name), true);
}
// Copy all the sub directories using recursion
foreach (DirectoryInfo diSourceDir in source.GetDirectories())
{
DirectoryInfo nextTargetDir = target.CreateSubdirectory(diSourceDir.Name);
CopyAll(diSourceDir, nextTargetDir);
}
}
}
}