installshield卸载 360强力卸载大师
installshield卸载 360强力卸载大师
1、1.Component的属性Permanent设置为Yes。
2、2.Component的ID为空。
3、3.Component被其他应用程序或者Feature使用。
4、4.设置了一个Condition,在安装时启用某个Feature,卸载时禁用该Feature。
5、意思就是卸载的时候不卸载某个Feature,所有它对应的文件也会保留。
6、5.Component的关键文件在这个键值下有先前的引用HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/SharedDLLs.6.Component安装在系统文件夹下面,它的某个文件在这个键值下有先前的引用HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/SharedDLLs.7.该文件受Windows Resource Protection (WRP)或Windows File Protection (WFP)保护。
7、我解释一下5和6点,因为我遇到的问题就是因为这个原因。
installshield卸载 360强力卸载大师
8、我在工程里开启了“Only for me”和"For All Users"的功能。
9、当用户选择Only for me,第一次安装可以正常卸载,但是第二次安装在同一路径的话,卸载后文件都保留了下来。
10、原因是在InstallShield里新建一个组件的时候,Shared属性默认为YES。
installshield卸载 360强力卸载大师
11、这就意味着这个组件成为了一个SharedDLL。
12、安装的时候,InstallShield会在注册表的HKEY_LOCAL_MACHINE/Software/Microsoft/Windows/CurrentVersion/SharedDLLs 这个键值下为每一个SharedDLL写一条信息。
13、如果在卸载的时候该用户并没有删除这个键值的权限,结果这些键值都保留了下来。
14、第一次卸载是没有问题的,文件被删除了。
15、但是当用户第二次安装在同一个目录的时候,就会出现5和6的情况,每一个Component都有一个先前的引用,这个时候卸载的话,文件都会保留下来。
16、解决的方法就是把Component的Shared属性设置为NO。