当我不更新现有安装时,Inno Setup会删除我在“卸载”注册表项中的更改

问题描述

我正在为我的应用程序使用Inno Setup。该安装程序用于安装和升级(当我启动它时,如果发现较旧的安装程序,请检查是否可以升级...)

我想知道Inno Setup在哪一步中将注册表项写入注册表项,因为即使安装失败,我也会在注册表中找到注册表项。

在安装结束时,我向注册表中的安装密钥添加了其他值(在安装后使用.bat脚本添加...)

而且,当我不更新安装程序时,Inno Setup会删除我的旧密钥并删除我的更改。

那么,使用Inno Setup在注册表中设置密钥的最佳实践是什么? 我应该怎么做才能将我的密钥保留在注册表中而无需在更新时通过Inno Setup进行更改?

我不使用[registry]部分

[编辑]

示例: 当我第一次安装应用程序时,安装程​​序(使用Inno Setup创建)将值(InstallLocation,Version ...)存储在注册表中:

"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{myApp_guid}_is1"

然后在postInstall上,使用.bat脚本添加其他信息,例如URL或其他程序的路径...

因此,当我做reg query时,我会遇到以下情况: reg查询

"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{myApp_guid}_is1"

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{myApp_guid}_is1
    Inno Setup: Setup Version    REG_SZ    6.0.3 (u)
    Inno Setup: App Path    REG_SZ    my_path
    InstallLocation    REG_SZ    my_path
    Inno Setup: Icon Group    REG_SZ    NameGroup
    Inno Setup: User    REG_SZ    User
    Inno Setup: Language    REG_SZ    english
    displayName    REG_SZ    Name App with version
    displayIcon    REG_SZ    my_icon_path
    UninstallString    REG_SZ    "my_uninstall_path"
    QuietUninstallString    REG_SZ    "my_unistall_path" /SILENT
    displayVersion    REG_SZ    1.0.0
    Publisher    REG_SZ    Publisher
    URLInfoAbout    REG_SZ    URL
    HelpLink    REG_SZ    URL Help
    URLUpdateInfo    REG_SZ    Url
    NoModify    REG_DWORD    0x1
    norepair    REG_DWORD    0x1
    InstallDate    REG_SZ    20200925
    MajorVersion    REG_DWORD    0x1
    MinorVersion    REG_DWORD    0x0
    VersionMajor    REG_DWORD    0x1
    VersionMinor    REG_DWORD    0x0
    EstimatedSize    REG_DWORD    0x3a04
    HERE_URL_curstom REG_SZ link
    HERE_PATH_TO_ANOTHER_PROGRAM REG_SZ path

但是,当我再次启动安装程序(以取消对我的应用程序的更新)时,它将在注册表中删除安装后(URL,其他程序的路径..)。 所以,当我做reg query时,我会有类似的东西:

"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{myApp_guid}_is1"

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{myApp_guid}_is1
    Inno Setup: Setup Version    REG_SZ    6.0.3 (u)
    Inno Setup: App Path    REG_SZ    my_path
    InstallLocation    REG_SZ    my_path
    Inno Setup: Icon Group    REG_SZ    NameGroup
    Inno Setup: User    REG_SZ    User
    Inno Setup: Language    REG_SZ    english
    displayName    REG_SZ    Name App with version
    displayIcon    REG_SZ    my_icon_path
    UninstallString    REG_SZ    "my_uninstall_path"
    QuietUninstallString    REG_SZ    "my_unistall_path" /SILENT
    displayVersion    REG_SZ    1.0.0
    Publisher    REG_SZ    Publisher
    URLInfoAbout    REG_SZ    URL
    HelpLink    REG_SZ    URL Help
    URLUpdateInfo    REG_SZ    Url
    NoModify    REG_DWORD    0x1
    norepair    REG_DWORD    0x1
    InstallDate    REG_SZ    20200925
    MajorVersion    REG_DWORD    0x1
    MinorVersion    REG_DWORD    0x0
    VersionMajor    REG_DWORD    0x1
    VersionMinor    REG_DWORD    0x0
    EstimatedSize    REG_DWORD    0x3a04

*没有最后2个值

所以我会知道什么时候做的,以及为什么Inno Setup不将我的更改保存在"HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{myApp_guid}_is1"

要进行更新,我不会执行首次安装时所用的脚本以及在注册表中进行密钥编辑的地方。

谢谢

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)