ess*_*LAH 5 installation vdproj visual-studio
我有一个Windows Forms应用程序,其中包含已使用Visual Studio创建的安装程序(.msi).我现在正在为2.0版创建一个新的安装程序,其属性RemovePreviousVersions设置为true.
现在,当我在1.0上安装2.0时,它会删除1.0并完全安装2.0.
有没有办法可以告诉安装程序,如果你发现已经安装了一些文件(比如用于数据的.xml文件),那么不要覆盖它们?
我试图让我的2.0安装程序服务于两个目的:
Rad*_*ado 13
VS中的部署项目不会覆盖文件.发生的情况是,由于您将RemovePreviousVersions设置为true,因此当您更改程序文件版本和安装项目的ProductCode GUID时,它将首先卸载以前的版本,然后执行新版本的全新安装.
为了确保某些文件不会被覆盖,我通常将它们从内容或主要输出文件(无论它们位于何处)中排除,然后将它们分别添加到安装项目中.这样做,您可以单独设置这些文件的属性.您正在寻找的属性称为永久"如果设置为true将永远不会卸载有问题的文件,因此永远不会用新版本覆盖它.唯一的缺点是当您卸载产品时,永久文件不会从目标位置删除,但在我的情况下(通常是本地DB文件),这是一件好事;)
干杯!
[编辑]以上适用于VS 2008 SP1.没有在其他版本上尝试过,所以希望你使用相同的VS版本,或者它适用于你使用的版本.
[edit2]哦,你也可以使用"条件"属性来实现类似的东西.如果这样做,请确保将"Transitive"设置为True,以便始终评估Condition.没有尝试过条件,但这是你可以看到的另一种选择.除了这两个,我认为这几乎适用于VS部署项目.
当我遇到类似情况时,我所做的是:
由每个用户自定义且安装程序不应触及的文件不包含在 MSI 中(不包含在 Visual Studio 安装项目中)。当应用程序第一次运行时,我通过代码生成了 XML 文件。
我将静态文件(例如用于填充下拉列表的数据)包含在 MSI 中,并且可以通过使用 Visual Studio 构建新的 MSI 来更新这些文件。
基本上不要在 MSI 项目中包含可自定义的文件。在代码中为新用户创建它们。
我从未考虑过告诉 MSI 不要更新 MSI 文件中包含的某些文件。我想出的解决方案对我来说是完美的。我不知道是否可以做到。
我希望这有帮助。
| 归档时间: |
|
| 查看次数: |
9697 次 |
| 最近记录: |