0

我试图将给定路径的所有输出文件添加到以 .exe、.dll 或 .config 结尾的安装中,但到目前为止我尝试过的方法都没有奏效。

这是我尝试过的:

private static WixEntity[] getContents(string directory)
    {
        WixEntity[] contents = System.IO.Directory.GetFiles(directory)
                        .Where(f => f.EndsWith(".dll")
                                    || f.EndsWith(".exe")
                                    || f.EndsWith(".config"))
                        .Select(f => new File(f))
                        .ToArray();
        contents = contents.Concat(System.IO.Directory.GetDirectories(directory, string.Empty, System.IO.SearchOption.TopDirectoryOnly)
                        .Select(d => new Dir(d.Split('\\').Last(), getContents(d)))
                        .ToArray()).ToArray();
        return contents;
    }

private static string buildMsi()
        {
            var project =
                new ManagedProject(productName,
                    new Dir($"%ProgramFiles%\\{companyName}",
                        new Dir($"{productName} Files", getContents(clientFolderPath)),
        ***some other irrellevant stuff***);
        }

以及简单地做

private static string buildMsi()
            {
                var project =
                    new ManagedProject(productName,
                        new Dir($"%ProgramFiles%\\{companyName}",
                            new Dir($"{productName} Files", new Files(clientFolderPath, f => f.EndsWith(".dll")
                                || f.EndsWith(".exe")
                                || f.EndsWith(".config")),
            ***some other irrellevant stuff***);
            }

使用第一种方法,我只从文件夹中获取所有文件,而不是嵌套文件夹或其内容。使用第二种方法,我什么也得不到。

我该如何解决这些问题,或者我可以通过什么完全不同的方式来解决这些问题?

谢谢!

4

1 回答 1

0

你可以只使用Files.FromBuildDir(@"your\build\dir\", ".exe|.dll|.config"). 这应该递归收集所有文件并保留目录结构。您还可以检查相应的示例Files- 存在一些构造函数,这也可能会有所帮助。

于 2021-07-13T19:05:53.123 回答