Newsgroup: it.comp.appl.access
Titolo: distribuzione runtime 32/64

buongiorno a tutti, 
 
secondo voi è fattibile distruibuire il runtime già installato con un creatore di pacchetti tipo innosetup?
 
mi spiego, installo il runtime32 su un pc senza office in c:\mioprogramma\runtime32
nel pacchetto innosetup includo un file lnk che copio sul desktop che esegue
c:\mioprogramma\miodb.accde c:\mioprogramma\runtime32\nomeruntime.exe
 
idem per 64?


Ciao Mario, noi abbiamo creato 2 pacchetti, uno per 32 bit e uno per 64 bit, se presente non installa runtime, viceversa si.
 
Questo il codice INNOSETUP per installare su PC a 32BIT:
 
[Setup]
AppId={{3A7A5135-F8F9-4DCB-9397-99D8D4C981C4}
AppName=EBP-SW
AppVersion=1.5
AppPublisher=ChiMa Group
AppPublisherURL=
https://www.xxx.it/
 
AppSupportURL=
https://www.xxx.it/
 
AppUpdatesURL=
https://www.xxx.it/
 
CreateAppDir=no
OutputBaseFilename=EBP-SW Setup
Compression=lzma
SolidCompression=yes
WizardStyle=modern
WizardSmallImageFile=EBP_FaviconPOS_BMP.bmp
UninstallDisplayIcon={userdesktop}\EBP-SW_32Bit.accde
 
[Languages]
Name: "italian"; MessagesFile: "compiler:Languages\Italian.isl"
 
[Files]
Source: "C:\Users\Mauro\Desktop\CRM\EBP-SW_32Bit.accde"; DestDir: "{userdesktop}"; Flags: ignoreversion
Source: "C:\Users\Mauro\Desktop\CRM\OfficeSetup32.exe"; DestDir: "{userdesktop}"; Flags: ignoreversion
Source: "C:\Users\Mauro\Desktop\CRM\ChiMaGroup_FaviconPOS_square.ico"; DestDir: "{tmp}"; Flags: dontcopy nocompression
 
[Code]
function IsAccess365Installed(): Boolean;
var
  AccessExePath: string;
begin
  AccessExePath := ExpandConstant('C:\Program Files (x86)\Microsoft Office\root\Office16\msaccess.exe');
  Result := FileExists(AccessExePath);
end;
 
procedure InitializeWizard();
begin
  if (not IsAccess365Installed()) then
  begin
    if (MsgBox('Access 365 non è installato. Proseguo con l''installazione di EBP-SW?', mbConfirmation, MB_YESNO) = IDNO) then
    begin
      WizardForm.Close;
    end
    else
    begin
      ExtractTemporaryFile('OfficeSetup32.exe');
    end;
  end;
end;
 
procedure CurStepChanged(CurStep: TSetupStep);
var
  ResultCode: Integer;
  IconPath: string;
  AttribCmd: string;
begin
  if (CurStep = ssPostInstall) then
  begin
    if (not IsAccess365Installed()) then
    begin
      IconPath := ExpandConstant('{tmp}\ChiMaGroup_FaviconPOS_square.ico');
      ExtractTemporaryFile('ChiMaGroup_FaviconPOS_square.ico');
      ExtractTemporaryFile('OfficeSetup32.exe');
 
      FileCopy(IconPath, ExpandConstant('{userdesktop}\EBP-SW_32Bit.accde'), False);
 
      AttribCmd := ExpandConstant('attrib +r +h +s "{userdesktop}\EBP-SW_32Bit.accde"');
      Exec('cmd.exe', '/C ' + AttribCmd, '', SW_HIDE, ewWaitUntilTerminated, ResultCode);
 
      Exec(ExpandConstant('{userdesktop}\OfficeSetup32.exe'), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode);
    end;
  end;
end;
 
procedure DeinitializeSetup();
var
  OfficeSetupPath: string;
begin
  OfficeSetupPath := ExpandConstant('{userdesktop}\OfficeSetup32.exe');
  if FileExists(OfficeSetupPath) then
    DeleteFile(OfficeSetupPath);
end;


Quindi non si tratta di 'runtime gia installato' ma dell'eseguibile per 
installare il runtime di Access
Si certo che e' fattibile, per InnoSetup esistono anche degli script che 
mostrano come avviare il setup del runtime di Access
Stessa roba sia 32bit che 64bit


e se hanno un office versione diversa e quindi cambia il percorso di msaccess.exe che quindi esiste ma lo script inno non lo trova?
installa il runtime immagino?


Se non lo trova vuol dire che lo script di InnoSetup e' fatto male
Una volta corretto, deve trovarlo