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