如何防止必备文件在应用程序部署文件夹中重复?

时间:2010-10-05 15:43:12

标签: winforms clickonce publishing prerequisites

我有一个.NET 3.5 SP1 WinForms应用程序。我已使用以下设置为ClickOnce部署进行了设置:

Prerequisite and deployment settings screenshot in Visual Studio 2008

  • 发布到位置:\\ fileserver \ installers \ myapp \
  • 先决条件:Windows Installer 3.1,.NET Framework 3.5 SP1
  • 从以下位置下载先决条件:\\ fileserver \ installers \ common \
  • 应用程序可脱机使用(安装到“添加/删除程序”和“开始”菜单)

我们的用户可能无法访问互联网或已安装3.5。由于他们都将在公司内部网上,我们已将必要的安装程序放在他们都能够访问的网络共享位置。

在缺少.NET 3.5的计算机上测试安装时,一切正常。它安装了先决条件和应用程序,它没有问题。

问题在于,每次部署应用程序时(通过“发布”按钮),Visual Studio 2008都会坚持将所有必备文件/文件夹从开发PC复制到网络位置(installers \ myapp)。这导致我的20MB应用程序在文件夹中大约200MB。这有效地复制了所有内容,因为~2002MB先决条件已经在installers \ common文件夹中。正如我所说,它安装得很好。如果我删除VS放在myapp文件夹中的先决条件,它甚至会安装得很好,可能是因为安装程序无论如何都是从公共位置获取它们(如先决条件对话框中所指定的)。

这可能是一个微不足道的问题,因为没有任何问题,它会工作正常,但它有两个原因令人讨厌:

  1. 它减慢了部署速度,因为每次我向应用程序发布一个小的更改时,我必须通过线路传输200多个meg
  2. 它浪费了我们文件服务器上的空间
  3. 我可以通过简单地每次删除文件夹来解决第二个问题,但这本身就是一个烦人的额外步骤。

1 个答案:

答案 0 :(得分:0)

您可以做的一件事是使用Bootstrapper Manifest Generator滚动您自己的先决条件。将URL设置为要为部署提供服务的位置。然后将VS中的选项设置为“从供应商位置下载”。

它将从您在BMG中设置的URL下载部署,并且不会在每次发布ClickOnce应用程序时部署先决条件。