Создать WiX Msi с WiX Sharp
Моя программа WiX Sharp для создания MSI:
static public void BuildMsi(string FolderPath)
{
string InstallationDirectoryPath = @"D:\Program";
var project = new Project("MyProduct",
new Dir(InstallationDirectoryPath,
new Files(System.IO.Path.Combine(FolderPath,"**"))));
Compiler.BuildMsi(project);
}
В этом коде, если я передам путь к папке, которую я хочу освободить, то он создаст MSI, который работает нормально.
Мой вопрос заключается в том, что я хочу передать путь к нескольким папкам, чтобы моя основная функция выглядела так, но я не могу понять, что мне нужно изменить в середине кода
static public void BuildMsi(list<string> folderPath)
1 ответ
Вы можете попробовать что-то вроде этого, но код не идеален. Он получит основной каталог с файлами и все подкаталоги с файлами.
static string sRootDir = @"<Path of main directory>";
static public void BuildMsi(string FolderPath)
{
WixEntity[] weDir = new WixEntity[0];
weDir = BuildDirInfo(sRootDir, weDir);
var project = new Project("MyProduct", weDir);
Compiler.BuildMsi(project);
}
static WixEntity[] BuildDirInfo(string sRootDir, WixEntity[] weDir)
{
DirectoryInfo RootDirInfo = new DirectoryInfo(sRootDir);
if (RootDirInfo.Exists)
{
DirectoryInfo[] DirInfo = RootDirInfo.GetDirectories();
List<string> lMainDirs = new List<string>();
foreach (DirectoryInfo DirInfoSub in DirInfo)
lMainDirs.Add(DirInfoSub.FullName);
int cnt = lMainDirs.Count;
weDir = new WixEntity[cnt + 1];
if (cnt == 0)
weDir[0] = new DirFiles(RootDirInfo.FullName + @"\*.*");
else
{
weDir[cnt] = new DirFiles(RootDirInfo.FullName + @"\*.*");
for (int i = 0; i < cnt; i++)
{
DirectoryInfo RootSubDirInfo = new DirectoryInfo(lMainDirs[i]);
if (!RootSubDirInfo.Exists)
continue;
WixEntity[] weSubDir = new WixEntity[0];
weSubDir = BuildDirInfo(RootSubDirInfo.FullName, weSubDir);
weDir[i] = new Dir(RootSubDirInfo.Name, weSubDir);
}
}
}
return weDir;
}