在Inno Setup安装程序中更改安装程序类型,具体取决于它是“全新安装”还是“更新”?

奥斯卡奖

我使用Inno Setup创建了一个安装程序来安装数据库。我的脚本编写技能非常基础。现在,我需要提供更新,并且需要安装程序执行以下操作:

  1. 检查是否存在现有安装;
  2. 检查现有安装是否较旧;
  3. 如果存在现有安装,则将Update作为选项提供;如果不存在,则将Admin或General数据库(新安装)作为选项提供。

我将下面的代码拼凑在一起,在下拉列表/组合框中显示了这三个选项。我无法弄清楚如何更改wpSelectComponents页面组合框中提供的选项

[Code]
function InitializeSetup(): Boolean;
var
    OldVersion, NewVersion: String;
begin
    Result := True;

    //Check in the registry for the uninstaller of PME Database. Compare version, exit if installed version is the same or newer.
    if RegKeyExists(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{pmedatabase201}}_is1') then
    begin
        RegQueryStringValue(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{pmedatabase201}}_is1', 'DisplayVersion', OldVersion)
        NewVersion := '{#MyAppVersion}'
        If NewVersion < OldVersion then
        begin
            MsgBox(('This version (' + NewVersion + ') is older than the installed version (' + OldVersion +') - setup will close.'), mbError, MB_Ok)
            Result := False;
            exit;
        end;
        If NewVersion = OldVersion then
        begin
            MsgBox(('This version (' + NewVersion + ') is the same as the installed version - setup will close.'), mbError, MB_Ok)
            Result := False;
            exit;
        end;
        If NewVersion > OldVersion then
        begin
            if MsgBox(('The database will be updated from version ' + OldVersion + ' to version ' + NewVersion + '.' + chr(13) + chr(13) + 'Continue?'), mbInformation, MB_YesNo) = idNo then
            begin
                Result := False;
                exit;
            end;
        end;
    end;
...more code, to check Windows / Office versions...

[Code]
Procedure CurPageChanged(CurPage: Integer);
begin
  if CurPage = wpSelectComponents then 
  begin
      if RegKeyExists(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{pmedatabase201}}_is1') then
      begin
//Do something: only show Update as combobox option - HOW???
      end else begin
//Do something: only show Admin and General as combobox options - HOW???
      end;
  end;
end;

[Types]
Name: "Other1"; Description: "General Database"; Languages: en
Name: "Admin1"; Description: "Administrator Database"; Languages: en
Name: "Update1"; Description: "Database update"; Languages: en
Name: "Other2"; Description: "Base de Données Générale"; Languages: fr
Name: "Admin2"; Description: "Base de Données de L'administrateur"; Languages: fr
Name: "Update2"; Description: "Mise à jour de Base de Données"; Languages: fr
Name: "Other3"; Description: "Base de Dados Geral"; Languages: pt
Name: "Admin3"; Description: "Base de Dados do Administrador"; Languages: pt
Name: "Update3"; Description: "Atualização da Base de Dados"; Languages: pt

[Components]
Name: "General"; Description: "General"; Types: other1 other2 other3; Flags: fixed disablenouninstallwarning
Name: "Admin"; Description: "Admin"; Types: admin1 admin2 admin3; Flags: fixed disablenouninstallwarning
Name: "Update"; Description: "Update"; Types: update1 update2 update3; Flags: fixed disablenouninstallwarning

[Files]
; Database files.
Source: "C:\PME SETUP\pme versions\v2.02\PME Database.accde"; DestDir: "{app}"; Components: admin general update
; Data files are ONLY copied for a new installation of the central administrator database.
Source: "C:\PME SETUP\pme versions\v2.02\PME Data Storage.accdb"; DestDir: "{app}"; Components: admin
Source: "C:\PME SETUP\pme versions\v2.02\PME Data Storage.accdb"; DestDir: "{app}\System Files"; Components: admin
Source: "C:\PME SETUP\pme versions\v2.02\PME Data Storage.accdb"; DestDir: "{app}\Exchange"; Components: admin 
...more follows for different component-combinations...
马丁·普里克里(Martin Prikryl)

您正在寻找Check参数

[Types]
Name: "Other"; Description: "General Database"; Check: not IsUpdate
Name: "Admin"; Description: "Administrator Database"; Check: not IsUpdate
Name: "Update"; Description: "Database update"; Check: IsUpdate

[Code]

function IsUpdate: Boolean;
begin
  Result :=
    RegKeyExists(HKEY_CURRENT_USER, 'Software\Microsoft\Windows\CurrentVersion\Uninstall\{pmedatabase201}}_is1') and
    /*IsNewer*/;
end;

请注意,您也应该检查HKEY_LOCAL_MACHINE以确定该应用程序是否已安装。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

使用Inno Setup创建透明的安装程序?

来自分类Dev

Inno Setup-用于多个安装程序的安装程序

来自分类Dev

Inno Setup-用于多个安装程序的安装程序

来自分类Dev

在Inno Setup中取消安装

来自分类Dev

Inno Setup:在卸载过程中从安装程序读取文件

来自分类Dev

Inno Setup-如何安装Windows Update脱机安装程序

来自分类Dev

使用 Inno Setup 安装程序安装 Windows shell 扩展 DLL

来自分类Dev

Inno Setup:在安装程序运行时更改安装程序语言

来自分类Dev

Inno Setup:在安装程序运行时更改安装程序语言

来自分类Dev

Inno安装程序中的等效升级代码

来自分类Dev

如果安装程序中的字体版本高于安装的字体版本,请使用Inno Setup安装字体

来自分类Dev

如果安装程序中的字体版本高于安装的字体版本,请使用Inno Setup安装字体

来自分类Dev

使用MSI / WiX安装升级Inno Setup安装时,已安装程序中的重复条目

来自分类Dev

使用Inno安装程序安装IIS

来自分类Dev

Inno Setup:如何将安装程序本身放入已安装的程序中

来自分类Dev

如何从Inno Setup安装JRE?

来自分类Dev

从Inno Setup中的临时文件夹安装包含的安装程序

来自分类Dev

Inno Setup .net Framework自动安装程序问题

来自分类Dev

如何在Inno Setup中最小化安装程序?

来自分类Dev

Microsoft SmartScreen-使用Inno Setup安装程序已暂停?

来自分类Dev

Inno Setup:/ verysilent安装后如何自动运行程序?

来自分类Dev

如何从Inno Setup安装程序设置全局环境变量?

来自分类Dev

Inno Setup在安装程序中指定日志名称

来自分类Dev

Inno Setup-防止同时执行多次安装程序

来自分类Dev

根据在线文件设置Inno Setup安装程序版本

来自分类Dev

使用Inno Setup为Python创建Windows安装程序

来自分类Dev

Inno Setup安装程序可以设置Windows安全组吗?

来自分类Dev

如何解压缩Inno Setup安装程序

来自分类Dev

Inno Setup - 避免显示子安装程序的文件名

Related 相关文章

  1. 1

    使用Inno Setup创建透明的安装程序?

  2. 2

    Inno Setup-用于多个安装程序的安装程序

  3. 3

    Inno Setup-用于多个安装程序的安装程序

  4. 4

    在Inno Setup中取消安装

  5. 5

    Inno Setup:在卸载过程中从安装程序读取文件

  6. 6

    Inno Setup-如何安装Windows Update脱机安装程序

  7. 7

    使用 Inno Setup 安装程序安装 Windows shell 扩展 DLL

  8. 8

    Inno Setup:在安装程序运行时更改安装程序语言

  9. 9

    Inno Setup:在安装程序运行时更改安装程序语言

  10. 10

    Inno安装程序中的等效升级代码

  11. 11

    如果安装程序中的字体版本高于安装的字体版本,请使用Inno Setup安装字体

  12. 12

    如果安装程序中的字体版本高于安装的字体版本,请使用Inno Setup安装字体

  13. 13

    使用MSI / WiX安装升级Inno Setup安装时,已安装程序中的重复条目

  14. 14

    使用Inno安装程序安装IIS

  15. 15

    Inno Setup:如何将安装程序本身放入已安装的程序中

  16. 16

    如何从Inno Setup安装JRE?

  17. 17

    从Inno Setup中的临时文件夹安装包含的安装程序

  18. 18

    Inno Setup .net Framework自动安装程序问题

  19. 19

    如何在Inno Setup中最小化安装程序?

  20. 20

    Microsoft SmartScreen-使用Inno Setup安装程序已暂停?

  21. 21

    Inno Setup:/ verysilent安装后如何自动运行程序?

  22. 22

    如何从Inno Setup安装程序设置全局环境变量?

  23. 23

    Inno Setup在安装程序中指定日志名称

  24. 24

    Inno Setup-防止同时执行多次安装程序

  25. 25

    根据在线文件设置Inno Setup安装程序版本

  26. 26

    使用Inno Setup为Python创建Windows安装程序

  27. 27

    Inno Setup安装程序可以设置Windows安全组吗?

  28. 28

    如何解压缩Inno Setup安装程序

  29. 29

    Inno Setup - 避免显示子安装程序的文件名

热门标签

归档