安装Mysql Connector后InnoSetup错误193

问题描述 投票:0回答:1

早上好... 需要帮忙... 我正在尝试使用 inno setup 。但我没有太多编程经验。

想法是...安装程序,最后安装必要的组件(.net、mysql 连接器、mysql 服务器...) 有一个程序(先看看程序是否存在,然后安装),在任何一个程序中(无论是否退出),程序都会继续安装...

.net 运行良好并且正在运行 当我去安装 mysql 连接器时,它最初给出的代码是 192,它不是有效的 Win32

在阅读了一些帖子后,我设法解决了这个问题。 此时,出现安装窗口。 由于我已经安装了连接器,因此我将单击“取消”... “您确定要取消 mysql 连接器吗?” 我单击“是...”,然后单击“完成”。 当它应该关闭 mysql 安装程序并返回到程序安装程序时,我收到错误 193 %1 不是有效的 win 32 应用程序..

我不知道我还能做什么... 有人可以帮助我吗? 请...

[Run]
Filename: "{app}\dotnet-sdk-8.0.203-win-x64.exe"; Flags: skipifdoesntexist; BeforeInstall: CheckDotNet
Filename: "{app}\mysql-connector-net-8.3.0.msi"; Flags: skipifdoesntexist; BeforeInstall: InstallMySQLConnectorNet
Filename: "{app}\{#MyAppExeName}"; Description: "{cm:LaunchProgram,{#StringChange(MyAppName, '&', '&&')}}"; Flags: nowait postinstall skipifsilent runascurrentuser

[Code]
function IsDotNetInstalled(): Boolean;
var
  DotNetVersion: Cardinal;
begin
  DotNetVersion := GetWindowsVersion;
  Result := (DotNetVersion >= $0008000300); // 8.0.3
end;

function IsMySQLConnectorInstalled(): Boolean;
begin
  Result := FileExists(ExpandConstant('{app}\mysql-connector-net-8.3.0.msi'));
end;

procedure CheckDotNet;
begin
  if not IsDotNetInstalled() then
  begin
    MsgBox('A instalação do .NET Runtime 8.0.3 é necessária para continuar. A instalação será cancelada.', mbError, MB_OK);
    Abort;
  end;
end;

[Code]
function IsMySQLConnectorNetInstalled: Boolean;
begin
  Result := RegKeyExists(HKEY_LOCAL_MACHINE, 'SOFTWARE\MySQL AB\MySQL Connector/Net');
end;

procedure InstallMySQLConnectorNet;
var
  ResultCode: Integer;
begin
  if not IsMySQLConnectorNetInstalled then
  begin
    if not ShellExec('', ExpandConstant('{app}\mysql-connector-net-8.3.0.msi'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then
    begin
      MsgBox('Falha ao iniciar a instalação do MySQL Connector .NET 8.3.0.', mbError, MB_OK);
      Abort;
    end;
  end;
end;

function InitializeSetup: Boolean;
begin
  Result := True;
end;
inno-setup mysql-connector
1个回答
0
投票

即使我也面临同样的问题。我刚刚添加

shellexec
作为 [运行] 部分中的标志之一。然后我就没有遇到那个错误了。

© www.soinside.com 2019 - 2024. All rights reserved.