使用Inno Setup将 64位应用重新安装到32位安装上时,会要求选择一个新的目标路径
当我在没有安装我的应用的系统上使用Inno Setup安装程序时,向导会显示 "目标位置" 页面。如果在已经安装了我的应用的系统上运行安装程序,该页面将被跳过。
这是正常情况。
我的应用是64位的。一个32位安装程序仍会在 Program Files (x86) 下安装应用;这没问题。
我已经通过在 [Setup] 小节中添加这两行,将安装程序更新为64位模式:
ArchitecturesInstallIn64BitMode=x64compatible arm64
ArchitecturesAllowed=x64compatible arm64
现在安装程序并未检测到先前的安装,尽管 AppId 未改变。现在我在 Program Files 下安装有一个副本,在 Program Files (x86) 下又有一个副本。
此外,注册表中有两个卸载条目:分别位于以下键下:
HKLM\\SOFTWARE\\WOW6432Node\\...\\Uninstall\\{my-app-id}
HKLM\\SOFTWARE\\...\\Uninstall\\{my-app-id}
看起来64位模式的安装程序没有注意到现有的32位模式安装。这是预期的吗?根据 这个关于相关问题的回答,我的预期是升级后的应用会在 (x86) 下安装,因为旧的安装已经在那里。(关于注册表中的卸载键,我并不确切知道应当如何预期。)
DefaultDirName 位于 {autopf} 下,如果这有关系的话。
解决方案
根据文档,当应用程序具有以下相同条件时,才被视为同一个应用:
因此,确实是因为它们具有不同的 ArchitecturesInstallIn64BitMode,你的两个安装程序被视为在安装不同的应用。因此它们是独立的(并排安装)。
你可能想通过编程方式卸载先前的32位模式安装: How to automatically uninstall previous installed version in Inno Setup?
站内所有文章版权归属LeftHeroAI导航站,无授权禁止任何主体转载、抄袭、复制内容,亦不得私自架设镜像站点。一经侵权,本站将通过法律途径追责。