Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

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

Frage Entwicklung Installation

Mitglied: lordzwieback

lordzwieback (Level 1) - Jetzt verbinden

05.03.2014, aktualisiert 10.03.2014, 2383 Aufrufe, 10 Kommentare

Hallo liebe Leute,

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

01.
[Code] 
02.
procedure RunAppInstaller; 
03.
var 
04.
  ResultCode: Integer; 
05.
 
06.
function Is64BitInstallMode: Boolean; 
07.
begin 
08.
  if Is64BitInstallMode then 
09.
    begin 
10.
      if not Exec(ExpandConstant('{tmp}\App\appclient64bit.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) 
11.
      then 
12.
      MsgBox('App-Installation ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK); 
13.
  else 
14.
    begin 
15.
      if not Exec(ExpandConstant('{tmp}\App\appclient.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) 
16.
      then 
17.
      MsgBox('App-Installation ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK); 
18.
    end 
19.
end;
Wenn ich kompilieren möchte, bekomme ich bei
01.
 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
Mitglied: Pjordorf
05.03.2014 um 13:47 Uhr
Hallo,

Zitat von lordzwieback:
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? (einfaches rechnen mt Zahlen )

Gruß,
Peter
Bitte warten ..
Mitglied: lordzwieback
05.03.2014 um 14:01 Uhr
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?

01.
[Code] 
02.
procedure RunAppInstaller; 
03.
var 
04.
  ResultCode: Integer; 
05.
 
06.
function Is64BitInstallMode: Boolean; 
07.
begin 
08.
  if Is64BitInstallMode then 
09.
    begin 
10.
      if not Exec(ExpandConstant('{tmp}\App\appclient64bit.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) 
11.
      then 
12.
      MsgBox('App-Installation ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK); 
13.
    end; 
14.
  else 
15.
    begin 
16.
      if not Exec(ExpandConstant('{tmp}\App\appclient.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) 
17.
      then 
18.
      MsgBox('App-Installation ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK); 
19.
    end; 
20.
end; 
21.
[/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.
Bitte warten ..
Mitglied: Pjordorf
05.03.2014, aktualisiert um 14:19 Uhr
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
Bitte warten ..
Mitglied: colinardo
LÖSUNG 05.03.2014, aktualisiert 10.03.2014
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
Bitte warten ..
Mitglied: colinardo
LÖSUNG 05.03.2014, aktualisiert 10.03.2014
Das ist Pascal-Code, etwas gewöhnungsbedürftig , so sollte deine Variante laufen:
01.
[Code] 
02.
procedure RunAppinstaller; 
03.
var  
04.
  ResultCode: Integer; 
05.
begin 
06.
    if (IsWin64) then 
07.
    begin 
08.
        if not Exec(ExpandConstant('{tmp}\App\appclient64bit.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then 
09.
          MsgBox('App-Installation ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK) 
10.
    end 
11.
    else 
12.
    begin 
13.
        if not Exec(ExpandConstant('{tmp}\App\appclient.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then 
14.
          MsgBox('App-Installation ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK) 
15.
    end 
16.
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)
01.
[Files] 
02.
Source: "C:\Program Files (x86)\Inno Setup 5\Examples\MyProg.exe"; DestDir: "{app}"; AfterInstall: RunAppInstaller
http://www.jrsoftware.org/ishelp/topic_scriptinstall.htm
Bitte warten ..
Mitglied: lordzwieback
07.03.2014 um 08:56 Uhr
Sorry dass ich mich die Tage über nicht melden konnte, werde mich heute nochmal ransetzen und euch berichten, falls alles geklappt hat.
Bitte warten ..
Mitglied: lordzwieback
07.03.2014 um 12:51 Uhr
Habe es nun folgendermaßen umgebaut:

01.
Source: "C:\App\appclient.exe"; DestDir: "{tmp}\App\"; Flags: ignoreversion; AfterInstall: RunAppInstaller 
02.
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:

01.
procedure RunVPNInstaller;  
02.
var   
03.
ResultCode: Integer;  
04.
begin  
05.
  if (IsWin64) then  
06.
  begin  
07.
    if not Exec(ExpandConstant('{tmp}\App\appclientx64.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then  
08.
    MsgBox('App-Installation64 ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK)  
09.
  end  
10.
  else  
11.
  begin  
12.
    if not Exec(ExpandConstant('{tmp}\App\appclient.exe'), '', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode) then  
13.
    MsgBox('App-Installation32 ist fehlgeschlagen, wenden Sie sich an den Administrator.' + #13#10 + #13#10 + SysErrorMessage(ResultCode), mbError, MB_OK)  
14.
  end  
15.
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.
Bitte warten ..
Mitglied: colinardo
07.03.2014, aktualisiert um 13:10 Uhr
du hast oben einmal RunAppInstaller und ein anderes mal RunVPNInstaller als auszuführende Procedure geschrieben, und einmal Ausführen der Procedure reicht aus...
Bitte warten ..
Mitglied: lordzwieback
10.03.2014 um 09:55 Uhr
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.
Bitte warten ..
Mitglied: colinardo
10.03.2014 um 10:54 Uhr
Wenns das dann war, den Beitrag bitte noch auf gelöst setzen, und die Lösungskommentare markieren. Merci.
Grüße Uwe
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Router & Routing
gelöst Ipv4 mieten (22)

Frage von homermg zum Thema Router & Routing ...

Windows Server
DHCP Server switchen (20)

Frage von M.Marz zum Thema Windows Server ...

Exchange Server
gelöst Exchange 2010 Berechtigungen wiederherstellen (20)

Frage von semperf1delis zum Thema Exchange Server ...

Hardware
gelöst Negative Erfahrungen LAN-Karten (19)

Frage von MegaGiga zum Thema Hardware ...