C# 使用WiX Sharp创建WiX Msi
用于创建msi的我的WiX Sharp程序:C# 使用WiX Sharp创建WiX Msi,c#,wix,windows-installer,wixsharp,C#,Wix,Windows Installer,Wixsharp,用于创建msi的我的WiX Sharp程序: static public void BuildMsi(string FolderPath) { string InstallationDirectoryPath = @"D:\Program"; var project = new Project("MyProduct", new Dir(InstallationDirectoryPath,
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
我的问题是我想传递多个文件夹路径,所以我的主要函数看起来是这样的,但我无法确定在代码中间需要更改什么
静态public void BuildMsi(list folderPath)
您可以尝试类似的方法,但代码并不完美。。
它将获得包含文件的主目录和包含文件的所有子目录
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;
}
静态字符串sRootDir=@;
静态公共void BuildMsi(字符串FolderPath)
{
WixEntity[]weDir=新WixEntity[0];
weDir=BuildDirInfo(sRootDir,weDir);
var项目=新项目(“我的产品”,weDir);
编译器.BuildMsi(项目);
}
静态WixEntity[]BuildDirInfo(字符串sRootDir,WixEntity[]weDir)
{
DirectoryInfo RootDirInfo=新的DirectoryInfo(sRootDir);
if(RootDirInfo.Exists)
{
DirectoryInfo[]DirInfo=RootDirInfo.GetDirectories();
List lMainDirs=新列表();
foreach(DirInfo中的DirectoryInfo DirInfoSub)
lMainDirs.Add(DirInfoSub.FullName);
int cnt=lMainDirs.Count;
weDir=新的WixEntity[cnt+1];
如果(cnt==0)
weDir[0]=新的目录文件(RootDirInfo.FullName+@“\*.*);
其他的
{
weDir[cnt]=新的目录文件(RootDirInfo.FullName+@“\*.*);
对于(int i=0;i