0

这是我所拥有的

var project =
            new ManagedProject(productName,
                new Dir($"%ProgramFiles%\\{companyName}",
                    new Dir($"{productName}",
                        new Files(clientFolderPath,
                                f => f.EndsWith(".dll") ||
                                        f.EndsWith(".exe") ||
                                        f.EndsWith(".config"))))

如果我使用 File 而不是 Files 并且只包含一个 .exe 文件,它可以正常工作,但显然我的应用程序无法正常工作。

如何确保包含引用的输出路径中的所有文件。我确定路径是正确的,因为安装会创建输出文件夹中存在的文件夹,但没有文件。

4

2 回答 2

0

而不是使用

new Files(clientFolderPath,
          f => f.EndsWith(".dll") ||
               f.EndsWith(".exe") ||
               f.EndsWith(".config"))))

我用了

    System.IO.Directory.GetFiles(clientFolderPath) 
          .Where(f => f.EndsWith(".dll") || f.EndsWith(".exe") || f.EndsWith(".config")) 
          .Select(f => new File(f))
          .ToArray()

而是解决问题

于 2021-06-10T11:08:12.090 回答
0

改用 heat.exe 来收集所有文件。

您可以将其添加到您的 csproj,以便它自动获取文件并创建一个 wxs

<HeatDirectory OutputFile="ComponentsGenerated.wxs" DirectoryRefId="clientFolderPath" 
 ComponentGroupName="PublishedComponents" SuppressCom="true" 
 Directory="..\..\directory\to\your\folder\to\harvest"
 SuppressFragments="true" SuppressRegistry="true" 
 SuppressRootDirectory="true" AutoGenerateGuids="false" GenerateGuidsNow="true" ToolPath="$(WixToolPath)" 
/>

请注意在执行此操作之前设置 DirectoryRefId,以便存在目录引用

您可以添加很多东西,例如 PreprocessorVariable 添加变量和使用 xls 过滤文件的 Transforms。

于 2021-06-09T09:53:12.060 回答