【问题标题】:install the updates of the setup on the actual setup location在实际安装位​​置安装安装更新
【发布时间】:2013-01-02 01:38:19
【问题描述】:

我已经安装了一个 java 应用程序,我想在同一位置重新安装新的更新。但我无法读取安装软件的位置。

I want if the full application is being installed in d:/program files then
   the new setup    should also be installed to the same location  

【问题讨论】:

  • 这是基于 Inno Setup 的安装脚本,然后使用相同的 AppId - 默认情况下 AppId 与 AppName 相同。如果您的更新与主安装程序具有相同的AppId,它将读取应用程序位置。
  • 我正在为此使用 inno 设置,我不是编写脚本的专家。
  • 也可以使用同一个安装程序来执行更新和原始安装——这通常是小型应用程序的最佳选择。您可以使用DisableDirPage=auto 和DisableProgramGroupPage=auto 来帮助解决此问题;通常,您根本不需要做任何其他特殊的事情,但您可能需要添加一些使用GetVersionNumbers 的代码来检测当前版本(如果有)并防止意外降级。最后,请注意,您可以使用WizardForm.PrevAppDir 来检测以前的安装并获取其{app} 路径。

标签: installation inno-setup setuptools


【解决方案1】:

主应用安装脚本

[Setup]
AppId=MyMainApplicationId
AppName=MyApplicationName
AppVersion=MyApplicationVersion

更新安装脚本

[Setup]
AppId=MyMainApplicationId
AppName=MyUpdateName
AppVersion=MyUpdateVersion

由于两个安装脚本具有完全相同的AppId,因此更新将使用与主应用程序相同的目录。但是...如果安装了主应用程序,您应该执行检查以查找。 您可以尝试将此[Code] 放在更新安装脚本中:

[Code]
function InitializeSetup: Boolean;
var
sUnInstallString: String;
begin
  if RegValueExists(HKEY_LOCAL_MACHINE,
'Software\Microsoft\Windows\CurrentVersion\Uninstall\MyMainApplicationId_is1',
'UninstallString') then 
    begin
      Result := True;
    end
    else begin
      MsgBox('Main Application was not found!', mbInformation, MB_OK);
      Result := False;
      Exit;
    end;
end;

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-01-26
    • 2021-10-03
    • 1970-01-01
    • 2011-11-29
    • 1970-01-01
    • 1970-01-01
    • 2012-03-17
    • 1970-01-01
    相关资源
    最近更新 更多