InstallShield打包升级时不覆盖原有文件的解决方案

news2025/1/23 10:39:29

一个.NET Framework的Devexpress UI Windows Form项目,用的InstallShield,前些个版本都好好的,最近几个版本突然就没法更新了,每次更新的时候都覆盖不了原文件,而且这样更新后第一次打开程序(虽然是老程序)还会执行一遍安装,如果安装介质已经没有了,程序都进不去了。折腾了一阵,终于把这个事情的来龙去脉弄清楚了。

为什么没法覆盖

这里得说到InstallShield打的包有两种升级模式,一种是Minor Upgrade,也就是小版本更新,这种更新通常采用覆盖安装的方式,上面说的没法覆盖原文件就是在这种安装方式下出现的,通常1.1更新到1.2这样的就会采用Minor Upgrade;另一种是Major Upgrade,大版本更新,这种更新会先卸载原有的安装,然后装新版本,通常1.x更新到2.x就会采用这种更新方式。

原因:官方文档里有一段话

If any components or features have been deleted from the latest version of the setup, you must perform a major upgrade to avoid potential problems associated with leaving resources and registrations on a machine. Also note that if you move a feature or component to another location in the setup, you have effectively deleted it from its original location.

意思是如果删了某个组件,就没法使用Minor Upgrade了,就得用Major Upgrade。看到这个的时候我是迷茫的,我啥也没删呀。

删了什么?

好在InstallShield可以自己对比两个版本。在Upgrade里加一个Minor Upgrade,然后在Setup To Upgrade里选择之前版本的安装包。
在这里插入图片描述

设置好之后Build一下,他就会报错,表示新版本比旧版本缺东西,但是很可惜他不会告诉我们缺什么,只会告诉GUID,如下图。
在这里插入图片描述

找回文件

上面的GUID并不会和缺失的文件名关联起来,我们依旧不知道删了什么,那么怎么找回来呢?嗯。。找不回来,不过,有个操作可以抢救一下。

  1. 安装旧版本的软件;
  2. 用新版本的软件更新;
  3. 卸载软件;
  4. 看安装目录下剩下什么。
    这个的原理是在更新成新版本后卸载时只会卸载新版本里有的组件,新版本里没有的东西他就会留着,所以剩下的就是删掉的东西。

恢复组件

找到删了什么之后就是得把这些文件加进来了,有可能是文件,也有可能是需要添加引用,然后在InstallShield里把文件加进来。重新加进来的组件他会重新随机生成一个GUID,需要手动改回原来的GUID。理论上是没法严格对应的,我也不知道需不需要严格对应,我就是按着文件名的排序一个个改下来,确实能用。

写在最后

我应该是没有手动删过什么东西的,但还是出现了这个问题,丢失的全是Devexpress的dll,我猜是我在开发过程种尝试了一些组件,某个版本虽然把引用删了,但是没有清理项目,就一直都在,我又加进了InstallShield,后来清理了一下,就没了。或者也有可能是Vistual Studio 和 InstallShield同时开着,突然的变动就导致InstallShield侦测到文件没了,再出现也重新给了我个GUID。有知道原因的大哥请指教一下。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1006922.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

ReID网络:MGN网络(5): 一点延伸: 缩减特征维度, 提高匹配效率

1. MGN网络输出 在实际使用MGN时,是将网络尾部的特征进行导出,并进行相关的相似性度量。 如图1所示,MGN特网络在析出特征的结尾处执行了concat操作。如果每一条特征维度是256的话,那么MGN最终输出将是2048维的特征。 图1 MGN特征…

香港汇丰银行开户

作为香港较知名的银行之一,汇丰银行提供了丰富的金融服务,包括个人银行服务、企业银行服务以及国际银行服务等。对于需要在香港开展业务或投资的人来说,开立一个汇丰银行账户是必不可少的。那么,开立汇丰银行账户需要哪些资料&…

医院用泛微构建数字化信创平台,人财物、医教研、文事会统一管理

近年来,国家多次发布政策,驱动医疗行业的智慧化转型。医疗行业作为重点领域,正在大力推进信创发展,数字化和信创将共同助力医院的高质量发展。 国家卫健委发布的《医院智慧管理分级评估标准体系(试行)》、…

【算法训练-数组 五】【二分查找】:旋转排序数组的最小数字、旋转排序数组的指定数字

废话不多说,喊一句号子鼓励自己:程序员永不失业,程序员走向架构!本篇Blog的主题是【数组的二分查找】,使用【数组】这个基本的数据结构来实现,这个高频题的站点是:CodeTop,筛选条件为…

fast-lio2添加wheel在发散时轨迹约束

fast-lio2主要算法为迭代误差卡尔曼滤波算法,imu作为预测,点云更新,当点云发散时输出位姿异常,漂移很大,后端在融合出现崩溃情况,加入轮速计约束发散时位姿。 1.订阅wheel话题 2.发散检测,检测…

mybatisplus配置拦截器实现保存加密,输出解密,模糊查询

前言:因公司需求需要把某些实体类的某些字段值进行加密保存,在查询时解密明文输出。现记录两种方式。 一、第一种方式: (1)使用TableField(typeHandler TypeHandler.class)注解自带的字段类型处理器,写一…

盲盒游戏开发方案

盲盒游戏是一种新兴的游戏类型,其核心机制是让玩家在购买时不知道会获得哪一种物品,从而产生一种探索的乐趣。那么,如何开发一个盲盒游戏呢?以下是一些步骤和要点。 一、确定游戏目标和规则 在开发盲盒游戏时,…

前端:nodejs多版本管理工具nvm

nvm是什么 nvm全英文也叫node.js version management,是一个nodejs的版本管理工具。nvm和n都是node.js版本管理工具,为了解决node.js各种版本存在不兼容现象可以通过它可以安装和切换不同版本的node.js。 nvm下载 可在点此在github上下载最新版本,本次…

拷贝构造函数(深拷贝+浅拷贝)

目录 拷贝构造函数浅拷贝深拷贝 拷贝构造函数 拷贝构造函数: Myclass(const Myclass& myclass) {amyclass.a;bmyclass.b;cmyclass.c; }浅拷贝 浅拷贝的思路就是和默认的拷贝构造函数一样: 即将原对象的值直接赋值给新对象,这样做一般情况下是没什…

加拿大儿童床垫认证标准要求介绍SOR/2016-152

儿童床垫是专为儿童设计的睡眠配件,用于提供舒适的睡眠环境和正确的睡眠支持 SOR/2016-152是加拿大政府发布的法规,旨在确保儿童床垫的安全性和质量。SOR/2016-152标准要求儿童床垫具有足够的安全性能,能够保护儿童免受潜在的危险和伤害。 标…

ArcGIS10.1软件安装教程

ArcGIS10.1中英文(32/64位)下载地址: 链接: https://pan.baidu.com/s/1Ksm112WaKMMk6La9ircCng 密码:t70f 安装步骤: 1、我们对安装包进行解压,直接鼠标右击解压即可。 2、 打开我们解压的文件夹&#…

瞄准办公场景,未来智能靠“AI+耳机”后来居上?

如何在广阔红海中开拓出蓝海?未来智能或可作为参考案例。 作为TWS耳机玩家,未来智能成立于2021年,日前完成了由天际资本领投的数千万元Pre-A轮融资,这也是该公司成立以来完成的第二轮融资。 从成立时间来看,在广阔的…

Python学习之路 01如何安装Python

😀前言 在当今数字化的时代,编程已成为一项基本技能。Python,因其简洁易学、功能强大和高度可扩展性而闻名,已成为许多初学者和专业开发人员的首选编程语言。不仅如此,Python拥有一个庞大而活跃的社群,提供…

科学中的人工智能:量子、原子和连续体技术概述

人工智能(AI)的进步正在推动自然科学领域的一种新的发现范式。如今,AI已经开始通过改进、加速和促进我们对各种空间和时间尺度上自然现象的理解来推动自然科学的发展,催生了一个被称为AI for science(AI4Science&#…

SpringMVC之JSON数据返回及异常处理机制

目录 一.JSON数据的返回 二.异常处理机制 2.1 异常处理方式一 2.2 异常处理方式二 2.3 异常处理方式三 一.JSON数据的返回 JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,常用于Web应用程序和服务之间的数据传输。通过使用…

MATLAB R2022b遇到“License Manager Error -8”怎么解决

电脑系统更新过后,matlab突然用不了了,报Error -8错误 将破解文件中的 libmwlmgrimpl.dll 复制 粘贴到 安装目录/R2022b/bin/win64/matlab_startup_plugins/lmgrimpl 直接替换 然后直接在 安装目录/R2022b/bin/ 打开matlab.exe

mingw 编译 curl ,Qt 工程使用

mingw 编译 curl 下载curl 源码 https://github.com/curl/curl 我使用8.3版 CMake-gui 配置 源码路径:D:/workspace/CPP/curl-8.3.0 生成路径: D:/workspace/CPP/curl-8.3.0/mingw-build 点击 Configure ,弹窗配置,选择 MinGW Makefiles 选择 Spec…

Codeforces Round 896 (Div. 2)

A.Make It Zero 思维题 当n为偶数时,对1到n异或使得1到n全部变成一样的数,再对1到n异或,使得全部变成0 当n为奇数时,对1到2异或使得1到2全部变成一样的,再对1到2异或,使得1到2都变成0,然后再两次对2到n AC代码: #include<iostream> #include<algorithm> #incl…

建筑模板国家标准GB/T 17656-2018

建筑模板国家标准GB/T 17656-2018《混凝土模板用胶合板》的重要性与应用 GB/T 17656-2018《混凝土模板用胶合板》国家标准是建筑模板行业的重要指导性文件&#xff0c;旨在确保混凝土模板的质量、安全和可靠性&#xff0c;促进建筑施工的高效进行。该标准详细规定了混凝土模板用…

DuDuTalk:4G语音工牌,如何实现家庭上门维修服务过程的智能化管理?

随着上门按摩、上门养老、上门买菜、上门维修等互联网上门服务的兴起&#xff0c;越来越多的居民开始采用线上下单&#xff0c;享受企业安排人员上门到家的服务。而家庭维修作为到家服务里面典型的一个场景&#xff0c;已成为许多人不可或缺的一部分。然而&#xff0c;与此同时…