Salve
ho creato un package di installazione con un archivio autoestraente Win32 da circa 4 Gb. All'interno di una mia procedura lancio il programma perchè scompatti il contenuto e, come da documentazione di Win32, attendo con una WaitForSingleObject che venga segnalata la fine dell'esecuzione del programma. La struttura dati che uso è quella ritornata da CreateProcess.
In sostanza, l'autoscompattante di Winrar sembra non terminare in maniera "pulita", lasciando il mio installer in uno stato di attesa sul semaforo. Con altri eseguibili la procedura funziona correttamente, solo l'autoscompattante Win32 di Winrar, configurato per non mostrare alcuna interfaccia, crea il problema.
E' un bug riconosciuto per il quale c'è uno workaround?
Per motivi di tempo ho adottato una soluzione differente, ma essendo utente Winrar vorrei continuare ad usarlo, qualcuno mi aiuta?
Grazie
Esecuzione di un autoestraente non completa correttamente
Moderatore: Andrea
Re: Esecuzione di un autoestraente non completa correttament
Non ho competenze precise in merito e quindi provo a girare il problema all'autore.EmmeGi ha scritto:Per motivi di tempo ho adottato una soluzione differente, ma essendo utente Winrar vorrei continuare ad usarlo,
Ma visto che sei un programmatore perché non utilizzi la DLL, gratuita, che ti permette proprio di gestire la scompattazione direttamente dal tuo programma, senza chiamate esterne?
Tra l'altro così facendo risparmieresti anche lo spazio occupato dal modulo auto-estraente, non più necessario; è vero che sono solo poche decine di KB e rispetto ai tuoi 4G sono un nulla.
![Wink :wink:](./images/smilies/icon_wink.gif)
Se ho risposta ti faccio sapere.
Cordialmente,
Andrea
Supporto WinRAR.it
Andrea
Supporto WinRAR.it
Re: Esecuzione di un autoestraente non completa correttament
Ecco che m'ha risposto Eugene:EmmeGi ha scritto:ho creato un package di installazione con un archivio autoestraente Win32 da circa 4 Gb.
- So large SFX archives is a twilight zone
It is not a problem for
WinRAR to create or unpack SFX archive of any size, but I am not sure
that all Windows versions will handle so huge executables 100% correct.
For example, some users reported that their Windows stops to display
SFX icon in case of 700MB or more SFX archive, though my XP displayed
it properly.
I do not think that it is SFX bug. Maybe it is something wrong
in his implementation. In case of C++, I think, it should be like:
Codice: Seleziona tutto
bool Execute(const char *Command,const char *CurDir,int TimeToWait) { STARTUPINFO si; PROCESS_INFORMATION pi; memset(&si,0,sizeof(si)); si.cb=sizeof(si); if (CreateProcess(NULL,(char *)Command,NULL,NULL,FALSE,0,NULL,CurDir,&si,&pi)) { if (TimeToWait!=0) WaitForSingleObject(pi.hProcess,TimeToWait); CloseHandle(pi.hThread); CloseHandle(pi.hProcess); return(true); } return(false); }
Cordialmente,
Andrea
Supporto WinRAR.it
Andrea
Supporto WinRAR.it
SFX Grandi dimensioni
Grazie per la risposta, comunque:
1) Il codice è corretto e corrisponde alla mia implementazione
2) In effetti sul file l'icona dell'autoestraente NON è visibile
Ho un altro paio di eseguibili della stessa dimensione che non hanno problemi (non sono WinRar sfx).
Grazie
1) Il codice è corretto e corrisponde alla mia implementazione
2) In effetti sul file l'icona dell'autoestraente NON è visibile
Ho un altro paio di eseguibili della stessa dimensione che non hanno problemi (non sono WinRar sfx).
Grazie
Re: SFX Grandi dimensioni
Il problema è che Eugene non riesce a riprodurre il problema...EmmeGi ha scritto:Ho un altro paio di eseguibili della stessa dimensione che non hanno problemi (non sono WinRar sfx).
Vedo se magari vuol generare un programmino che poi eseguirai tu e che fornisca un report...
Tu il problema l'hai con quali Sistemi Operativi? E con quali File System?
Cordialmente,
Andrea
Supporto WinRAR.it
Andrea
Supporto WinRAR.it