115122
Goto Top

Inno Setup Prüfe, ob 32 bzw. 64bit und starte jeweilige .exe will nicht funktionieren

Hallo liebe Leute,

denke der Titel ist recht aussagekräftig. Folgend mein Code:

[Code]
procedure RunAppInstaller;
var
  ResultCode: Integer;

function Is64BitInstallMode: Boolean;
begin
  if Is64BitInstallMode then
    begin
      if not Exec(ExpandConstant('{tmp}\App\appclient64bit.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)  
      then
      MsgBox('App-Installation ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK);  
  else
    begin
      if not Exec(ExpandConstant('{tmp}\App\appclient.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)  
      then
      MsgBox('App-Installation ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK);  
    end
end;

Wenn ich kompilieren möchte, bekomme ich bei
 function Is64BitInstallMode: Boolean; 
in Column 1 den Fehler 'BEGIN' expected angezeigt. Setze ich dann an diese Stelle ein "begin", gibts wieder Fehler.

Ich glaube ich mache bei dem Aufbau der begin - if - then blabla Geschichte irgendwas falsch, aber finde im Internet nichts, was auf meine Problematik passt.

Hoffe jemand weiß weiter und kann mir helfen.

Grüße,
lordzwieback

Content-Key: 231716

Url: https://administrator.de/contentid/231716

Printed on: April 24, 2024 at 22:04 o'clock

Member: Pjordorf
Pjordorf Mar 05, 2014 at 12:47:05 (UTC)
Goto Top
Hallo,

Zitat von @115122:
Wenn ich kompilieren möchte
Ich selbst habe Inno noch nie verwendet, aber ich Zähle bei dir 3 mal beginn aber nur 2 mal end wobei ein end; mit einem Semikolunm abgeschlossen ist. Auswirkung?

begin - if - then blabla Geschichte irgendwas falsch, aber finde im Internet nichts, was auf meine Problematik passt.
2+2 <> 5? face-smile (einfaches rechnen mt Zahlen face-smile)

Gruß,
Peter
Mitglied: 115122
115122 Mar 05, 2014 at 13:01:24 (UTC)
Goto Top
Ich selbst habe Inno noch nie verwendet, aber ich Zähle bei dir 3 mal beginn aber nur 2 mal end wobei ein end;
mit einem Semikolunm abgeschlossen ist. Auswirkung?


[Code]
procedure RunAppInstaller;
var
  ResultCode: Integer;

function Is64BitInstallMode: Boolean;
begin
  if Is64BitInstallMode then
    begin
      if not Exec(ExpandConstant('{tmp}\App\appclient64bit.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)  
      then
      MsgBox('App-Installation ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK);  
    end;
  else
    begin
      if not Exec(ExpandConstant('{tmp}\App\appclient.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode)  
      then
      MsgBox('App-Installation ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK);  
    end;
end;
[/Code]

Funktioniert genauso wenig. Über Auswirkungen vom Semikolon kann ich dir nichts berichten, habe mir die Schleifen größtenteils aus Foren abgeschaut. Bekomme mit dem obigen Code den gleichen Fehler wie vorher.
Member: Pjordorf
Pjordorf Mar 05, 2014 updated at 13:19:11 (UTC)
Goto Top
Hallo,

Über Auswirkungen vom Semikolon kann ich dir nichts berichten,
Aber die werden doch schon einen Zweck haben, oder meinst du die sind nur da weil die so schön aussehen?

habe mir die Schleifen größtenteils aus Foren abgeschaut.
Das ist der Nachteil von Kopieren. Man hat keinen Plan was man eigentlich tut und versteht noch weinger was da passieren tut.

; Dient wohl zum Abschluss der Befehlszeile
z.B. if not Exec(ExpandConstant('{tmp}\App\appclient64bit.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);

Bekomme mit dem obigen Code den gleichen Fehler wie vorher.
Fehlerbehebung oder ist das für dich auch nur ein Fremdwort?

Gruß,
Peter
Member: colinardo
Solution colinardo Mar 05, 2014, updated at Mar 10, 2014 at 10:03:06 (UTC)
Goto Top
Tach auch,
also das lässt sich eigentlich auch simpler machen. Schau dir unbedingt mal die 64Bit Beispiele im ScriptStudio an !
; "ArchitecturesInstallIn64BitMode=x64 ia64" requests that the install
; be done in "64-bit mode" on x64 & Itanium, meaning it should use the
; native 64-bit Program Files directory and the 64-bit view of the
; registry. On all other architectures it will install in "32-bit mode".
ArchitecturesInstallIn64BitMode=x64 ia64
und ob eine Anwendung bei 64bit oder 32bit gestartet werden soll kannst du so festlegen:
[Run]
Filename: "{app}\MyProg64.exe"; Flags: 64bit postinstall; Check: IsX64
Filename: "{app}\MyProg.exe"; Flags: 32bit postinstall; Check: IsOtherArch

[Code]
function IsX64: Boolean;
begin
  Result := Is64BitInstallMode and (ProcessorArchitecture = paX64);
end;
function IsOtherArch: Boolean;
begin
  Result := not IsX64 and not IsIA64;
end;
Grüße Uwe
Member: colinardo
Solution colinardo Mar 05, 2014, updated at Mar 10, 2014 at 10:03:00 (UTC)
Goto Top
Das ist Pascal-Code, etwas gewöhnungsbedürftig face-wink , so sollte deine Variante laufen:
[Code]
procedure RunAppinstaller;
var 
  ResultCode: Integer;
begin
    if (IsWin64) then
    begin
        if not Exec(ExpandConstant('{tmp}\App\appclient64bit.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then  
          MsgBox('App-Installation ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK)  
    end
    else
    begin
        if not Exec(ExpandConstant('{tmp}\App\appclient.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then  
          MsgBox('App-Installation ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK)  
    end
end;
und dann noch hinter dein letztes Source File die Procedure für das Ausführen deiner App hinzufügen (im Beispiel wird die Procedure zum Schluss des Setups ausgeführt)
[Files]
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; AfterInstall: RunAppInstaller  
http://www.jrsoftware.org/ishelp/topic_scriptinstall.htm
Mitglied: 115122
115122 Mar 07, 2014 at 07:56:39 (UTC)
Goto Top
Sorry dass ich mich die Tage über nicht melden konnte, werde mich heute nochmal ransetzen und euch berichten, falls alles geklappt hat. face-smile
Mitglied: 115122
115122 Mar 07, 2014 at 11:51:48 (UTC)
Goto Top
Habe es nun folgendermaßen umgebaut:

Source: "C:\App\appclient.exe"; DestDir: "{tmp}\App\"; Flags: ignoreversion; AfterInstall: RunAppInstaller  
Source: "C:\App\appclientx64.exe"; DestDir: "{tmp}\App\"; Flags: ignoreversion; AfterInstall: RunVPNInstaller  

Hier lade ich die jeweiligen Installationsdateien ins tmp-Verzeichnis, damit sie später wieder gelöscht werden können, nachdem die Routine vorbei ist.

Nachfolgend kommt das:

procedure RunVPNInstaller; 
var  
ResultCode: Integer; 
begin 
  if (IsWin64) then 
  begin 
    if not Exec(ExpandConstant('{tmp}\App\appclientx64.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then   
    MsgBox('App-Installation64 ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK)   
  end 
  else 
  begin 
    if not Exec(ExpandConstant('{tmp}\App\appclient.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then   
    MsgBox('App-Installation32 ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK)   
  end 
end;

Hier bringt er mir immer den Fehler, dass die Datei nicht gefunden werden konnte. (Springt in die MsgBox)
Das Kopieren ins TMP scheint zu funktionieren, aber wieso er die Datei dann unter genau diesem Pfad nicht findet ist mir schleierhaft.

Klammer ich den Code so aus, dass er nur die 64er exe einläd und nachstehend nur die 64er exe anschmeißt, funktioniert es.
Member: colinardo
colinardo Mar 07, 2014 updated at 12:10:57 (UTC)
Goto Top
du hast oben einmal RunAppInstaller und ein anderes mal RunVPNInstaller als auszuführende Procedure geschrieben, und einmal Ausführen der Procedure reicht aus...
Mitglied: 115122
115122 Mar 10, 2014 at 08:55:30 (UTC)
Goto Top
Habe es nun letztendlich mit eurer Hilfe und ein wenig Kaffee geschafft, die Installationsroutine, welche drei voneinander abhängige Anwendungen installiert zu erstellen.

Vielen Dank. ;)

PS: Das mit dem RunAppInstaller und dem RunVPNInstaller war nur ein Tippfehler meinerseits, sorry dafür.
Member: colinardo
colinardo Mar 10, 2014 at 09:54:58 (UTC)
Goto Top
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und die Lösungskommentare markieren. Merci.
Grüße Uwe