在较小的升级中,Installshield不会更新相关的DLL [英] Installshield not updating related DLLs on minor upgrade

查看:54
本文介绍了在较小的升级中,Installshield不会更新相关的DLL的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我目前正在与InstallShield一起部署.NET Winforms应用程序.我是InstallShield的新手,并不喜欢学习曲线.Winforms应用程序具有三个相关的DLL,在较小的升级过程中不会更新这些DLL.对于较小的升级,例如,我将版本从1.0.001更改为1.0.002.每个构建的软件包代码都会自动更改.

I'm currently working with InstallShield to deploy a .NET Winforms app. I am new to InstallShield and have not enjoyed the learning curve. The Winforms app has three related DLL's which are not getting updated during a minor upgrade. For a minor upgrade I am changing the version from 1.0.001 to 1.0.002 for example. The package code is being changed for each build automatically.

我尝试将dll添加到[INSTALLDIR]并将属性设置为始终覆盖".由于某些原因,这会导致升级也不会更新主exe.

I have tried adding the dll's to the [INSTALLDIR] and setting the property to "always overwrite". For some reason this causes the upgrade to also not update the main exe.

试图更改产品代码以强制进行重大升级.这会在旧版本的基础上安装新版本,但新版本仍具有旧的dll.

Tried changing the product code to force a major upgrade. This installed a new version alongside the old version, but the new version still had the old dll's.

试图将ReinstallMode从"omus"更改为"vomus".这根本没有效果.

Tried changing ReinstallMode from "omus" to "vomus". This had no effect at all.

尝试使用REINSTALL = ALL,REINSTALLMODE = vomus.这没有更新dll,也导致新安装失败,并显示消息应用程序未标记为安装".

Tried using REINSTALL=ALL, REINSTALLMODE=vomus. This did not update the dll's and also caused new installs to fail with message that application "is not marked for installation".

试图将版本从1.0.00x更改为1.1.00x.dll仍未更新.

Tried changing the version from 1.0.00x to 1.1.00x. dll's still not updated.

我注意到,当我查看这些dll文件的属性时,它们的文件版本= 1.0.0.0和产品版本1.0.0.0.我是否需要手动增加这些版本,以使InstallShield识别它们已被更新?

I notice that when I view properties of these dll files, they have File Version = 1.0.0.0 and Product Version 1.0.0.0. Do I need to manually increase these versions in order for InstallShield to recognize that they have been updated?

推荐答案

  1. 每个文件使用一个组件,并将每个文件设置为其自身组件中的密钥文件.这样可以避免各种组件引用和文件替换问题.请注意,多文件程序集必须共享与用作一个原子"文件系统单元的组件相同的组件.
  2. 此外,您还必须为每个内部版本或设置 REINSTALLMODE 更改为 emus ,而不是默认的 omus .永远不要使用amus.
  3. 我的建议:与文件版本更新一起使用-它更加可靠.就像您声明使用文件版本一样,它必须增加.我喜欢自动增加内部版本号(最后一位).已经有一段时间了,但是我认为您只需将数字替换为*,它就会自动递增.我认为您可以从 Visual Studio项目属性视图来完成此操作.
  4. 也许可以在 上阅读文件版本控制规则 .本质上,对版本控制的文件进行版本比较,对于未版本控制的文件,将比较创建和修改日期戳,如果文件在磁盘上未更改,则将替换文件.更多示例信息.
  5. 删除为其启用了所有文件的始终覆盖"标志.如果您需要修补程序以及其他功能,则此标志可能无法很好地工作.
  6. 当重大升级创建两个并排安装时,它不起作用.您剩下的是同时安装两种不同的产品.Installshield本身在如何进行重大升级方面有很好的内联帮助.您正在使用哪个版本的Installshield?与Visual Studio捆绑在一起的版本可能没有此帮助材料.
  1. Use one component per file and set each file to be keyfile in its own component. This avoid all sorts of component referencing and file replacement issues. Be aware that multi-file assemblies must share the same component as they are intended as one "atomic" file system unit.
  2. In addition you must also increment the version number for each build or set REINSTALLMODE to emus instead of the default omus. Never use amus.
  3. My advice: go with the file version updates - it is much more reliable. Like you state the File Version is used, it must be incremented. I like to auto increment the build version number (last digit). It has been a while, but I think you just replace the number with * and it auto increments. I think you can do this from the Visual Studio project property view.
  4. Maybe read up on the file versioning rules as well. Essentially versioned files are version compared, and for unversioned files the create and modify date stamps are compared and the file is replaced if it is unchanged on disk. More sample info.
  5. Remove the "always overwrite" flag you enabled for all the files you enabled it for. This flag may work poorly with patches if you ever need them and also with other features.
  6. When a major upgrade creates two side-by-side installations it hasn't worked. What you are left with are two different products installed at the same time. There is good inline help in Installshield itself with regards to how a major upgrade is set up. Which version of Installshield are you using? The version bundled with Visual Studio may not feature this help material.

关于重大升级的注释和还原的文件" :

A note on major upgrades and "reverted files":

关于经典主要升级问题的警告:请注意,在主要升级期间,可能会卸载设置为在原始安装中永久不变的已更改,未版本控制的文件,然后重新安装,从而产生以下印象:已被替换,但实际上已删除并重新创建了它们.这些通常是重要的设置文件,例如XML文件或类似文件-人们在此问题上苦苦挣扎.重大升级本质上是一个序列.卸载旧产品,然后安装新产品,反之亦然.在前一种情况下,可以先卸载文件,然后再重新创建.如果正确完成了组件引用,则在后一种情况下不会发生这种情况,因为没有卸载产品之间匹配的文件,而是保留了它们,然后在需要时将其覆盖(根据

A warning on a classic major upgrade issue: be aware that changed, unversioned files not set to be permanent on original install may be uninstalled during a major upgrade and then reinstalled yielding the impression that they have been replaced, but they are actually deleted and recreated. These are typically important settings files like XML files or similar - and people struggle with this issue a lot. Major upgrades are essentially a sequence. The old product is uninstalled, and then the new one is installed or vice versa. In the former case the files may be uninstalled first and then recreated. This does not happen in the latter case if component referencing is done right because the files that are matching between products are not uninstalled, but retained and then overwritten if need be (according to the file replacement / versioning rules).

这篇关于在较小的升级中,Installshield不会更新相关的DLL的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆