我们有一个安装项目,目前从不同的Visual Studio项目添加项目输出。我们想要更改打包系统并使用包含一堆部署文件的文件夹,这些文件已准备好在设置中进行部署。 但这意味着我们需要逐个添加文件,并在有新文件时继续在每个版本上添加它们。 我在这个question中看到我们无法添加像* .aspx这样的规则的文件。 所以我正在考虑创建一个小工具,它将根据可用的文件更改vdproj文件。你能帮我看一下这个文件的格式吗?似乎有一些GUID与包含的每个文件相关联。 有没有人有更好的解决方案如何做到这一点? 我们还没有考虑使用不同的设置工具,我们只是寻找文件包装的简单解决方案。
要添加整个文件夹,只需打开Windows资源管理器窗口,然后将要添加的所有文件拖到文件系统视图中。
有关更多信息,请参阅以下链接https://dzone.com/articles/creating-msisetup-package-c
对于这个问题,似乎没有简单的解决方案。我们最终更改了设置工具并使用Advanced Installer来创建设置,它有一个很好的功能,可以同步部署文件夹中的文件。
我们遇到了同样的问题。你不能拖放..但你可以在Windows资源管理器中找到你想要的内容,复制项目(可以包括子文件夹),然后返回到VS安装程序并粘贴它们(例如应用程序文件夹)。
注意。如果您需要创建自定义文件夹(例如c:\ html),您也可以使用此方法,但必须首先在左窗格中创建自定义文件夹(将绝对路径指定为目标),然后再次转到左窗格,糊。
此方法用于打包一组文件夹,但不会同步具有不同内容的文件夹!如果内容在部署之间发生更改,则必须重新复制/粘贴以获取安装程序文件以包含所有内容!
你能用宏添加文件夹中的所有文件吗?
也许您可以清除安装项目中的文件(使用宏或加载项)并使用相同的方法添加文件夹中的文件。
我终于找到了解决这个问题的真正方法。我需要的是在给定的外部目录(不是项目的一部分)中将所有文件添加到构建时间的安装项目中,即如果文件被添加到该外部目录,它将自动包含在安装程序与下一个版本。
我所做的是我在解决方案(类库项目)中创建了一个新项目,并从中删除了所有内容:Class1.cs,AssemblyInfo.cs,以及包含上面文件的<Compile>
元素和<Reference>
元素的csproj文件的相关ItemGroups对于包括。
然后,我添加了一个新的ItemGroup:
<ItemGroup>
<Content Include="Path\To\The\Directory\**\*.*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
这样,这个新项目不包含任何文件,但它引用所有文件(递归地,由指示目录中的\**\
指示)作为内容文件。
因此,在构建时,这些文件被视为内容文件,因此被复制到新项目的输出目录中。
那么,为什么我要做以上所有?只是因为,Setup Project有一个选项可以包含来自另一个项目的内容文件!
因此,通过这种方式,您可以将任意外部文件作为解决方案的“部分”而不实际列出它们,在构建时评估文件列表,然后从安装项目中引用它们。
我有同样的问题。虽然不是理想的解决方案,但我有一个想法是拥有一个批处理文件来压缩文件,然后我的安装项目只是分发该zip文件。之后,您必须在安装后解压缩它们。
或者,您可以编写一个小应用程序将它们压缩为单个文件,并在应用程序第一次运行时解压缩它们。基本上是相同的解决方案,除了你自己编写,所以不需要使用第三方解压缩工具,安装过程有点清洁。
我想我实际上很快就会为我的项目做后一个解决方案,因为我不打算为更好的安装应用程序支付大笔费用。
OH没有你可以将文件和文件夹拖放到vs中的安装目录
以下工作完美:只需将文件夹拖放到安装目录(使用Windows资源管理器而不是解决方案资源管理器)。然后它将添加其中的所有文件和所有子文件夹。
您可以右键单击资源管理器中的文件夹,然后单击“复制”,然后在安装项目的文件系统视图中右键单击该文件夹,然后单击“粘贴”。拖放对我来说不起作用。