簡體   English   中英

使用WiX Sharp創建WiX Msi

[英]Create WiX Msi with WiX Sharp

我的用於創建MSI的WiX Sharp程序:

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)

您可以嘗試類似的方法,但是代碼不是完美的。它將獲得包含文件的主目錄和包含文件的所有子目錄。

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;
        }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM