webForumDet fria alternativet

Pascal scripting - köra exe

3 svar · 427 visningar · startad av clarkbones

clarkbonesMedlem sedan feb. 20013 023 inlägg
#1

Vet inte om detta är rätt forum, men Pascal är väl besläktat med Delphi?

Hursomhelst, jag håller på att skapa ett installationsprogram m h a programmet InnoSetup som använder Pascal Scripting. Nu undrar jag hur man kan köra en exe i Pascal scripting?

(Det finns visserligen en RUN section i Innosetup, men jag behöver testa om vissa program redan finns på datorn innan jag bestämmer om exe:n ska köras)

PeWMedlem sedan juni 200010 432 inlägg
#2

Visst är Delphi besläktat med pascal, ungefär som C++ är besläktat med C. Så det är nog rätt forum och jag låter tråden ligga kvar :)

*Jag har dock tyvärr inget svar på din fråga, men det finns gott om kompetenta personer här, så någon sitter säkert med ett svar.

TigermannenMedlem sedan juli 200124 inlägg
#3

så här:

Hej,hittade följande exempel på https://www.innosetup.com (FAQ), vilket väl är ungefär det du vill göra:

COMCTL32.DLL
If your application requires an updated version of COMCTL32.DLL, you can direct your users to download the COMCTL32 update from Microsoft, or call the COMCTL32 update from your installation by using the following lines:

[Files]
Source: "50comupd.exe"; DestDir: "{tmp}"

[Code]
function ShouldInstallComCtlUpdate: Boolean;
var
MS, LS: Cardinal;
begin
// Only install if the existing comctl32.dll is < 5.80
Result := False;
if GetVersionNumbers(ExpandConstant('{sys}\comctl32.dll'), MS, LS) then
if MS < $00050050 then
Result := True;
end;

[Run]
Filename: "{tmp}\50comupd.exe"; Parameters: "/r:n /q:1"; Check: ShouldInstallComCtlUpdate

Don't try to install COMCTL32.DLL directly using the [Files] section; Microsoft does not allow this, and it's dangerous.

mvh Tony

clarkbonesMedlem sedan feb. 20013 023 inlägg
#4

Jag tittade på Check-funktionen, men jag löste det på ett annat sätt, innan du hann svara. Tack för hjälpen i a f. Din lösning är nog snyggare än min...

[Run]
Filename: {tmp}\{code:CheckForMDAC}; WorkingDir: {tmp}; Flags: skipifdoesntexist

function CheckForMDAC(Default: String): string;
var
sMDACversion: string;

begin
      blnSuccess:=RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\DataAccess', 'FullInstallver', sMDACversion)
      //MsgBox('sMDACversion', mbinformation, MB_OK)
      if blnSuccess=true then begin
		 // MsgBox(sMDACversion, mbinformation, MB_OK)

				sMDACversion:=StrGet(sMDACversion, 3);

				if StrToInt(sMDACversion)<6 then begin
				sMess:='Microsoft Data Access Components kommer nu att installeras. '
				MsgBox(sMess, mbinformation, MB_OK)
					Result:='MDAC_2.7.EXE'
				end;
      end;
end;
123 ms totalt · 3 externa anrop · v20260731065814-full.2b84b982
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
120 ms — hämta tråd, inlägg och bilagor (db)