Newsgroup: it.comp.lang.visual-basic
Titolo: crare pacchetti di installazione in modo gratuito

Come creo pacchetti di installazione?
Ho provato innosetup ma mi sembra un pò un casino...
Vorrei fare in modo che si scarichi automaticamente dei componenti 
esterni(esempio il 
framework.net
 se necessario) e riesca a gestire il 
percorso di installazione in modo semplice: se l'utente installa i files 
in c:\xyz, vorrei fargli creare anche una sottodirectory dove dovrà 
installare alcuni files....
Voi come avete risolto?
Grazie

 Grazie
...con InnoSetup, che ï¿œ molto piï¿œ semplice di quello che sembra (ma puï¿œ 
fare anche cose complicate).
Sul serio, insisti un attimo e vedrai che ti troverai bene, magari 
accoppialo a ISTool se vuoi un interfaccia utente piï¿œ pratica... per 
tutto quello che non fa "di scatola", tovi parecchi script di esempio 
giï¿œ pronti, tipo appunto verifica e installazione framework .NET ecc..

 gi� pronti, tipo appunto verifica e installazione framework .NET ecc..
Innosetup e' una delle migliori scelte per i pacchetti d'installazione 

 Grazie
Quoto Luca e Roberto,
Innosetup ï¿œ un ottimo pacchetto, molto personalizzabile, relativamente 
semplice, basta solo un po' di pratica e ti troverai molto bene.
ciao
stefano

 Voi come avete risolto?
InnoSetup (sono il 4ï¿œ che lo dice) :-)
Per controllare se il framework ï¿œ presente e scaricarlo basta inserire questo codice nel tuo script:
[Code]
var
  dotnetRedistPath: string;
  downloadNeeded: boolean;
  dotNetNeeded: boolean;
  memoDependenciesNeeded: string;
procedure isxdl_AddFile(URL, Filename: PChar);
external 'isxdl_AddFile@files:isxdl.dll stdcall';
function isxdl_DownloadFiles(hWnd: Integer): Integer;
external 'isxdl_DownloadFiles@files:isxdl.dll stdcall';
function isxdl_SetOption(Option, Value: PChar): Integer;
external 'isxdl_SetOption@files:isxdl.dll stdcall';
const
  dotnetRedistURL = '
http://download.microsoft.com/download/5/6/7/567758a3-759e-473e-bf8f-52154438565a/dotnetfx.exe
';
  // local system for testing...
  // dotnetRedistURL = '
http://192.168.1.1/dotnetfx.exe
';
function InitializeSetup(): Boolean;
begin
  Result := true;
  dotNetNeeded := false;
  // Check for required netfx installation
  if (not RegKeyExists(HKLM, 'Software\Microsoft\Net Framework Setup\NDP\v2.0.50727')) then begin
    dotNetNeeded := true;
    if (not IsAdminLoggedOn()) then begin
      MsgBox('MIOPROGRAMMA necessita che il .NET Framework 2.0 sia installato da parte di un Amministratore di Sistema', mbInformation, MB_OK);
      Result := false;
    end else begin
      memoDependenciesNeeded := memoDependenciesNeeded + '      .NET Framework' #13;
      dotnetRedistPath := ExpandConstant('{src}\dotnetfx.exe');
      if not FileExists(dotnetRedistPath) then begin
        dotnetRedistPath := ExpandConstant('{tmp}\dotnetfx.exe');
        if not FileExists(dotnetRedistPath) then begin
          isxdl_AddFile(dotnetRedistURL, dotnetRedistPath);
          downloadNeeded := true;
        end;
      end;
      SetIniString('install', 'dotnetRedist', dotnetRedistPath, ExpandConstant('{tmp}\dep.ini'));
    end;
  end;
end;
function NextButtonClick(CurPage: Integer): Boolean;
var
  hWnd: Integer;
  ResultCode: Integer;
begin
  Result := true;
  if CurPage = wpReady then begin
    hWnd := StrToInt(ExpandConstant('{wizardhwnd}'));
    // don't try to init isxdl if it's not needed because it will error on < ie 3
    if downloadNeeded then begin
      isxdl_SetOption('label', 'Download del Microsoft .NET Framework 2.0');
      isxdl_SetOption('description', 'MIOPROGRAMMA  necessita del Microsoft .NET Framework 2.0 . Attendere... download in corso.');
      if isxdl_DownloadFiles(hWnd) = 0 then Result := false;
    end;
    if (Result = true) and (dotNetNeeded = true) then begin
      if Exec(ExpandConstant(dotnetRedistPath), '', '', SW_SHOW, ewWaitUntilTerminated, ResultCode) then begin
         // handle success if necessary; ResultCode contains the exit code
         if not (ResultCode = 0) then begin
           Result := false;
         end;
      end else begin
         // handle failure if necessary; ResultCode contains the error code
         Result := false;
      end;
    end;
  end;
end;
function UpdateReadyMemo(Space, NewLine, MemoUserInfoInfo, MemoDirInfo, MemoTypeInfo, MemoComponentsInfo, MemoGroupInfo, MemoTasksInfo: String): String;
var
  s: string;
begin
  if memoDependenciesNeeded <> '' then s := s + 'Dipendenze da installare:' + NewLine + memoDependenciesNeeded + NewLine;
  s := s + MemoDirInfo + NewLine + NewLine;
  Result := s
end;

Ah ti serve anche la dll isxdl.dll in aggiunta al pacchetto di installazione.
In ogni caso su google ho trovato questo bell'esempio:
http://www.codeproject.com/KB/install/dotnetfx_innosetup_instal.aspx
Nicola


cosa dire??
Grazie 1000 :)

 ha scritto nel messaggio 
news:4e6747c1$0$16650$5fc...@news.tiscali.it...

Vansemo 'na pissa