Windows installer 产品赢得';在以前的产品安装期间卸载产品时,请不要从windows卸载

Windows installer 产品赢得';在以前的产品安装期间卸载产品时,请不要从windows卸载,windows-installer,installation,installshield,uninstallation,basic-msi,Windows Installer,Installation,Installshield,Uninstallation,Basic Msi,我有一个Installshield基本MSI安装程序,可以安装我们产品的新版本。如果用户仍然使用旧版本(由Installscript安装程序安装),安装程序将在继续安装新产品之前执行旧产品的卸载字符串 当用户卸载我们产品的新版本时,这会导致一些问题。当要添加/删除程序并运行卸载程序时,卸载程序会运行并删除文件,但在刷新添加/删除列表时,产品似乎仍在安装中。这些文件已被删除,但注册表中仍有该产品的残余 有效卸载该产品的唯一方法是通过第三方注册表清理器(可能还有基于此构建的脚本)。奇怪的是,如果用户

我有一个Installshield基本MSI安装程序,可以安装我们产品的新版本。如果用户仍然使用旧版本(由Installscript安装程序安装),安装程序将在继续安装新产品之前执行旧产品的卸载字符串

当用户卸载我们产品的新版本时,这会导致一些问题。当要添加/删除程序并运行卸载程序时,卸载程序会运行并删除文件,但在刷新添加/删除列表时,产品似乎仍在安装中。这些文件已被删除,但注册表中仍有该产品的残余

有效卸载该产品的唯一方法是通过第三方注册表清理器(可能还有基于此构建的脚本)。奇怪的是,如果用户在安装新产品之前手动卸载旧产品,卸载新产品就可以了。此外,在机器上安装新产品而不安装旧产品也会导致完全卸载


这两种产品有不同的产品代码。你知道这是什么原因吗?谢谢

如果在“添加/删除程序”中有任何内容显示为未卸载,则此处的注册表项仍然存在:

HTLM/Software/Microsoft/Windows/CurrentVersion/Uninstall/{ProductGUID or Name}
或对于64位系统:

HKLM/Software/Wow6432Node/Microsoft/Windows/CurrentVersion/Uninstall/{ProductGUID or Name}
在新软件包的卸载部分,确保:

  • 没有相同的产品ID(您已经声明了,但请确保;)
  • 如果需要,在代码中添加一行以删除剩余的注册表项 您可以将文件嵌套到Installshield和Wise package studio中。您可以编写一个.bat文件,将其放入临时目录中,对其进行编码,以便在运行时删除剩余的最后一位,例如注册表项

    创建一个虚拟机,安装新产品,用Wise捕获它,并以此方式部署它

    没有看到Installshield中的代码,我不知道我能给出什么详细的解释


    德国劳埃德船级社

    如果在“添加/删除程序”中有任何内容显示为未卸载,则此处的注册表项仍然存在:

    HTLM/Software/Microsoft/Windows/CurrentVersion/Uninstall/{ProductGUID or Name}
    
    或对于64位系统:

    HKLM/Software/Wow6432Node/Microsoft/Windows/CurrentVersion/Uninstall/{ProductGUID or Name}
    
    在新软件包的卸载部分,确保:

  • 没有相同的产品ID(您已经声明了,但请确保;)
  • 如果需要,在代码中添加一行以删除剩余的注册表项 您可以将文件嵌套到Installshield和Wise package studio中。您可以编写一个.bat文件,将其放入临时目录中,对其进行编码,以便在运行时删除剩余的最后一位,例如注册表项

    创建一个虚拟机,安装新产品,用Wise捕获它,并以此方式部署它

    没有看到Installshield中的代码,我不知道我能给出什么详细的解释


    德国劳埃德船级社

    > P>您可能在新产品安装的中间调用旧产品卸载字符串。MSI安装脚本记录所有更改,还包括“卸载旧”更改。卸载新产品时,这些更改将被还原,因此MSI将还原开始安装之前存在的注册表项。这些条目包括旧产品卸载条目

    我对InstallShield基本MSI模式知之甚少。如果它能够更改安装顺序或设置执行操作的时间,则应确保在InstallValidate和InstallInitialize标准操作之间卸载旧产品。如果InstallShield不提供这种控制,您可能需要要求用户手动卸载旧版本

    请参阅有关卸载操作放置的这篇文章:

    您可能在新产品安装的中间调用旧产品卸载字符串。MSI安装脚本记录所有更改,还包括“卸载旧”更改。卸载新产品时,这些更改将被还原,因此MSI将还原开始安装之前存在的注册表项。这些条目包括旧产品卸载条目

    我对InstallShield基本MSI模式知之甚少。如果它能够更改安装顺序或设置执行操作的时间,则应确保在InstallValidate和InstallInitialize标准操作之间卸载旧产品。如果InstallShield不提供这种控制,您可能需要要求用户手动卸载旧版本

    请参阅有关卸载操作放置的这篇文章:

    我假设您没有在新安装程序中正确设置升级机制。也许您在“升级”菜单的项目上选择了“安装安装程序,然后删除不需要的文件”。 如果是这样,请将其更改为“先删除旧设置”,并检查您是否使用了正确的升级代码。
    或者只需为以前版本的安装程序创建一个新的专用升级项目,并在安装之前将其删除。

    我假定您尚未在新安装程序中正确设置升级机制。也许您在“升级”菜单的项目上选择了“安装安装程序,然后删除不需要的文件”。 如果是这样,请将其更改为“先删除旧设置”,并检查您是否使用了正确的升级代码。
    或者只需为以前版本的安装程序创建一个新的专用升级项目,并在安装之前将其删除。

    谢谢您的评论。我已尝试删除您提到的卸载注册表路径中的条目,这会将其从“添加/删除程序”列表中永久删除,但是,当我重新安装产品时,安装程序会在维护模式下启动,就好像产品仍在安装一样。感谢您的评论。我已尝试删除您提到的卸载注册表路径中的条目,这会将其从添加/删除页面中删除