如何让两个安装程序setup共享同一个component—— installing shared files(version:installshield develop8.0)...

如何让两个安装程序(setup.exe),共享同一个component?
  要实现的效果是,两个程序共享同一个dll,当两个程序中有一个被卸载掉时,这个dll仍存在,不随着第一个卸载而从系统中删除,因为另一个程序还要用它嘛。而当两个程序都被卸载时,这个dll被卸载掉。
  原谅我几乎用了8个多小时才搞明白...痛苦地搜索和阅读过程就不赘述了,总之在帮助里找到一条靠谱的信息,帮助里的索引是Refcounting Shared Files内容如下

Windows Installer has a built-in mechanism for installing shared files. If the component is installed and its Shared property is set to Yes, a reference count in the registry is created, if necessary, and incremented for the component's key file .The installer increments the reference count for any file in a component whether or not you mark the component as shared. However, if no reference count exists, the installer does not create one unless you specify that the component's key file is shared. To specify that your component's key file is a shared file:In the Setup Design view or Components view, select the component in the tree view.In the Components view, select the component in the tree view. Its property sheet opens to the right. Click on the Shared property to display a drop-down list below the property sheet. Select Yes from the drop-down list to set that component's key file as shared. The changes you make are reflected in the property sheet. Windows logo guidelines require you to increment a reference count when installing shared files and to decrement the count when uninstalling. Core component files (which they recommend you not install) should not be refcounted.

  文中我需要的内容就是:“Windows Installer has a built-in mechanism for installing shared files. ...a reference count in the registry is created, if necessary, and incremented for the component's key file”多么靠谱的Windows Installer!!多么靠谱的功能啊!!!
  这个机制就是:如果是shared files,在安装它之后,windows installer就会在注册表的一个键值里为它记数,不管被哪个安装程序安装,装一次加1,装一次加1(incremented)。同理,卸载一次减去1,卸载一次减去1。直到减少到0,此时,这个shared files就会被从系统中删除了。
  所以,实现的过程,有几个问题需要解决:
  如何让一个file成为 shared file?

    这个file是该component的 key file (Set Key File)
    component的GUID是分辨component的唯一标志,也就是说GUID号相同的component,即使是不同的SETUP中也认为是同一个component。就是这条我想通了之后问题才解决的……

  究竟注册表里改了哪个数呢?好奇!
    用我的猥琐小工具终于找到了,提供给大家:
    HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls\

---------------修改如下------------------------------------------
1、把两个SETUP工程中需要共享的文件的component Code改为同一个。
2、把该文件设为KEY FILE
3、把注册表中因为调试而导致HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls\)的该文件的记数不对的那条信息删除
---------------搞定!嘎嘎嘎---------------------------------------

转载于:https://www.cnblogs.com/boldness/archive/2013/01/22/2871274.html

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

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

相关文章

世界十大无法科学解释灵异事件(进来发表自己看发)

1、法老咒语(世界最大灵异事件) 2、葡萄牙灵异事件(在网上引起了极大的轰动) 3、伦敦塔闹鬼(超著名) 4、20世纪上海滩灵异事件(孟小冬照片灵异事件) 5、鬼脸(墙壁上出…

宝塔linux面板假设nextcloud,宝塔面板部署NextCloud(14.0.3)逐一解决后台安全及设置警告...

刚刚把NextCloud更新到14.0.3,后台又出现了一堆警告,也是够烦的。之前写过 宝塔面板部署NextCloud逐一解决后台安全及设置警告,那个是基于Nextcloud 13.x的,所以就再补充记录一下解决如下的警告。Use of the the built in php mai…

ASP.NET Core启动地址配置方法及优先级顺序

前言默认情况下,ASP.NET Core使用下列2个启动地址:http://localhost:5000 https://localhost:5001同时,我们也可以通过配置或代码方式修改启动地址。那么,这几种修改方式都是什么?谁最后起作用呢?设置方法1.applicatio…

那些喜欢少妇的男生......

1 听说你喜欢少妇?▼2 没错!就是它!▼3 你还缺男朋友吗?▼4 还能怎么样?(via:臭人脸上的鼻涕)▼5 特效还能这样玩?▼6 哈哈哈哈哈(via:Guide&…

Openfire3.10beta版源码在eclipse上部署编译

一、源码下载 最近由于需求,需进行openfire的插件开发,于是需将openfire的源码进行部署,目前最新的openfire稳定版本是3.9.3,官方下载地址是http://www.igniterealtime.org/downloads/index.jsp,下载页面如图&#xff…

怎样理解Linux的文件系统

怎样理解Linux的文件系统Linux所有文件都从root开始,用/代表, 并且延伸到子目录。DOS/Windows有不同的分区同时目录都存于分区上。Linux则通过加载的方式把所有分区都放置在root下制定的目录里。windows下最接近于root的是c:。一句话总结:Windows下&…

POJ 1850 Code(组合数学)

题目链接 这个题目的组合解法,太巧妙了。长度为n的方案数总和为C(26,n),我竟没有发现。。然后长度和字符串相等的时候的情况,第一位默认,以后默认为前一位1,这样才能保证递增特性。 网上还有DP解法,智商拙计…

(10) 需求征集 -- 权限管理

权限管理,都碰到过哪些需求?我们汇总看看,能汇总出多少需求来?将权限管理、工作流管理做到我能力的极致,一个人只能做好那么很少的几件事情。转载于:https://blog.51cto.com/jirigala/787926

c语言中英文的作用,C语言中英文对照.doc

C语言中英文对照一File(文件) Load 加载 F3 Pick(选择) Alt-F3New 新文件Save 存盘 F2 Write To 写文件Directory 目录Change Dir 改变目录OS Shell 暂时退出Quit 退出 Alt-x二Edit 编辑 Line n Col n Insert Indent Tab Fill Unindent * D;FILE1.CLine n 光标处在文件的第n行C…

首次公开!人教版1-9年级绝密编写:被重点中小学永久收录的数学教案和试题...

全世界只有3.14 % 的人关注了爆炸吧知识在中国的教育历史上,不少人都会有感慨:“我是读着人教版教材长大的”。(人教版即由人民教育出版社出版。)的确,由毛泽东主席亲笔题写社名的人民教育出版社,自1950年1…

如何通过 C# 自动捕获一个文件的变更?

咨询区 PaulB:请问在 C# 中如何实现当一个磁盘文件的变更,让我的程序马上能感知到?回答区 Dirk Vollmar:在 C# 中有一个 FileSystemWatcher 类,它专门用来做文件的变更感知,大概有如下四类通知事件&#xf…

新随笔

2012年2月27日 岁数大了,特别愁得慌。 转载于:https://www.cnblogs.com/laozhang/archive/2012/02/27/2369771.html

Rails 开发小贴士积累

Model (ActiveRecord) 中 Boolean 类型的属性,在做是否存在的校验的时候,不能使用 presence: true ,而是要使用 inclusion: { in: [true, false] }。否则,当值为 false 的时候,会校验失败。 ClienSideValidations 对 Boolean 类型…

安装分布式文件系统MooseFS

示意图#4种角色共有的安装步骤yum install gcc zlib zlib-devel fuse fuse-devel fuse-libs libpcap libpcap-devel net-tools useradd mfs -s /sbin/nologin cd /download/ tar xf moosefs-2.0.80.tar.gz cd moosefs-2.0.80 ./configure \ --prefix/usr/local/mfs \ --with-de…

太爽了!宅男醒来后,发现自己变成了……

全世界只有3.14 % 的人关注了爆炸吧知识小编这两天看了一本关于数学家的故事后开了一个脑洞:如果把那些数学大神的故事写成爽文会是什么样?以下内容,纯属娱乐和虚构。前方高能预警第一章 称王冠原来是这样的“阿基米德,国王叫你呢…

陈睿学长在CUIT建校70周年校庆上的演讲

【个人成长】| 总结/Edison Zhou1睿叔演讲背景10月23号,我的母校成都信息工程大学(以下简称CUIT)举行了建校70周年(1951~2021)校庆,B站(哔哩哔哩)董事长兼CEO陈睿(睿叔&a…

SSH基本原理和免密码登录

SSH基本原理和免密码登录SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全…

poj2442Sequence(优先队列)

http://poj.org/problem?id2442 题解http://www.cnblogs.com/372465774y/archive/2012/07/09/2583866.html 本来写的二维数组 &#xff0c;直接対一维排序 不知道为嘛一直WA 只好该为一维的 就AC了 View Code 1 #include <iostream>2 #include<cstdio>3 #includ…

ExtJS 4.0

基本组件&#xff1a; xtype Class 描述 button Ext.Button 按钮 splitbutton Ext.SplitButton 带下拉菜单的按钮 cycle Ext.CycleButton 带下拉选项菜单的按钮 buttongroup Ext.ButtonGroup 编组…

967c语言程序设计是什么,2018年湖南师范大学数学与计算机科学院967C语言程序设计和数据结构[专硕]之C程序设计考研核心题库...

一、选择题1&#xff0e; 设有以下函数&#xff1a;则下面对函数指针的定义和赋值均是正确的是( )。A.B.C. D. 【答案】D【解析】函数指针的一般定义形式为&#xff1a;数据类型(*指针变量名)( )。定义函数指针时&#xff0c;对应的类型名以及 返回值类型都要和对应函数的参数列…