Windows安装程序(MSI)不会复制配置文件

时间:2018-04-13 14:31:30

标签: c# windows-installer visual-studio-setup-proje

我在2017年的visual studio上安装了MSI buillder工具,并开始使用生成的MSI部署我的桌面应用程序。 istaller能够复制重要文件并添加注册密钥,但它不会复制记录器所需的一些其他配置文件。根据此page,将“复制到输出目录属性”切换为“始终复制”应该注意该问题,但它仍然不会将配置文件复制到客户端计算机上的输出目录中。

The file is not being copied to output file in client's computer

有人可以就如何诊断这个问题提出建议吗?

修改

我认为我可以使用以下方法明确地将日志文件添加到MSI中,但我对此有两个顾虑。我会将文件添加到具有全局或相对路径的MSI中吗?那么这是一个好习惯吗?

enter image description here

编辑2:

对于具有相同问题的开发人员的参考,看起来上述方法会添加具有相对路径的文件。我在源代码管理中添加了差异页面的截图。

enter image description here

1 个答案:

答案 0 :(得分:1)

将单个文件添加到VS安装项目是完全正常的。生成MSI的每个工具都以这种方式工作。 VS设置可能是他们的"项目输出"输入选择的类型,您不知道将要安装的实际文件。因此,您可以通过单独添加每个文件(包括该配置文件)来获得对MSI内容的最佳控制。此外,某些文件实际上并不属于“应用程序文件夹”(默认为“程序文件”),因为它们是属于用户应用程序数据等某些位置的数据文件。

MSI构建从中获取文件的路径与在目标系统上部署该文件的位置无关。您可以使用目标计算机上的文件系统视图告诉MSI构建文件将在目标系统上部署的位置,您可以在其中获取要添加文件的目标文件夹列表。

此外,复制到输出目录的东西与MSI文件的构建无关。据我所知,其主要原因是允许您在代码的输出构建位置拥有所有依赖项,以便程序可以从该位置正常工作,并且它恰好让您有机会获取所有文件从同一个地方进入设置。它并不意味着将文件复制到某个地方,使其自动包含在MSI构建中并部署在目标系统上。#34;。

一旦MSI正在运行并安装配置文件,您可能会遇到Windows Installer文件覆盖规则,这些规则会阻止您覆盖安装后已更新的文件。