Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[?] Estrazione da file cab

0 views
Skip to first unread message

Paolo B.

unread,
Oct 20, 2002, 9:06:52 AM10/20/02
to
Ho provato ad usare la funzione:

Declare Function ExtractFileFromCab Lib "vb6stkit.dll" (ByVal Cab As String,
ByVal File As String, ByVal Dest As String) As Long

Per estrarre un file da un file .cab.
Quando lo faccio pero' mi compare un dialog box col messaggio "Please,
insert disk"
(Quale disco? :-o)
E se premo Annulla il programma abortisce.

Se qualcuno ha un'idea del perche' o magari sa dirmi dove trovare un esempio
*funzionante* per estrarre da file cab, gliene sarei grato.

ciao

Paolo B.

hal1961

unread,
Oct 20, 2002, 4:42:44 PM10/20/02
to
Paolo B. ha scritto:

>Ho provato ad usare la funzione:
>
>Declare Function ExtractFileFromCab Lib "vb6stkit.dll" (ByVal Cab As String,
>ByVal File As String, ByVal Dest As String) As Long
>
>Per estrarre un file da un file .cab.

Azz... e non crasha nulla?

La dichiarazione corretta e':


Private Declare Function ExtractFileFromCab Lib "vb6stkit.dll" ( _
ByVal Cab As String, ByVal File As String, ByVal Dest As String, _
ByVal iCab As Long, ByVal sSrc As String _
) As Long

>Quando lo faccio pero' mi compare un dialog box col messaggio "Please,
>insert disk"
>(Quale disco? :-o)
>E se premo Annulla il programma abortisce.
>
>Se qualcuno ha un'idea del perche'

Uhm, la sfera magica e' in riparazione: potresti dire che quale codice hai
usato, cosi' si puo' provare ad esserti realmente di aiuto.

> o magari sa dirmi dove trovare un esempio
>*funzionante* per estrarre da file cab, gliene sarei grato.


Public Sub Main()
Debug.Print ExtractFileFromCab("D:\Prj\Agip\Tosap\Setup\tosap6.CAB", _
"@crsyb13.hlp", "C:\Temp\prova.hlp", _
1, "D:\Prj\Agip\Tosap\Setup\")
End Sub

Se mi dici il codice che hai usato tu, in cambio ti dico anche come
ho scelto i parametri (anche se si capisce lo stesso ;-)

--
hth, hal

Paolo B.

unread,
Oct 21, 2002, 7:23:02 AM10/21/02
to

"hal1961" <aldoc...@inwind.it> ha scritto nel messaggio
news:aov4g4$q6jk3$1...@ID-56381.news.dfncis.de...
> Paolo B. ha scritto:

>
> Public Sub Main()
> Debug.Print ExtractFileFromCab("D:\Prj\Agip\Tosap\Setup\tosap6.CAB", _
> "@crsyb13.hlp", "C:\Temp\prova.hlp", _
> 1, "D:\Prj\Agip\Tosap\Setup\")
> End Sub
>
> Se mi dici il codice che hai usato tu, in cambio ti dico anche come
> ho scelto i parametri (anche se si capisce lo stesso ;-)
>

Dunque...
La dichiarazione l'ho trovata nel seguente file made in microsoft :-/
\VB98\WIZARDS\PDWIZARD\SETUP1\SETUP1.BAS

Il mio codice in pratica era:
ExtractFileFromCab(FileCab, FileDaEstrarre, FileDestinazione)

Che poi tradotto in valori assoluti veniva fuori:

ExtractFileFromCab("d:\data1.cab", "@english.dat", "c:\trle\english.dat")

Ora mi dai qualche info sull'esempio? :-)
Mi sembra di capire che bisogna fornire anche la cartella dove si trovano
tutti i file della catena cab ("D:\Prj\Agip\Tosap\Setup\") ma a che serve
quel "1"?

Comunque temo che sia tutto inutile.
Nel tentativo di estrarre file da questo maledetto cab ho anche scaricato
utility shell di vario tipo, fra cui l'extractor ufficiale della microsoft
ma tutte mi danno l'errore "questo non e' un file cab"
In effetti su altri file come quello della directx funzionano ma quello che
serve a me sembra abbia qualcosa di strano.
Resta il fatto che il programma di installazione riesce ad estrarre i file
ma io no. :-/
Non e' che esistano sotto versioni non del tutto compatibili di cab?

ciao

Paolo B.

hal1961

unread,
Oct 21, 2002, 9:58:27 AM10/21/02
to
Paolo B. ha scritto:

> La dichiarazione l'ho trovata nel seguente file made in microsoft :-/
> \VB98\WIZARDS\PDWIZARD\SETUP1\SETUP1.BAS

Evvai :-)

>
> Il mio codice in pratica era:
> ExtractFileFromCab(FileCab, FileDaEstrarre, FileDestinazione)

Questa era la vecchia dichiarazione, mi pare, con il vb6 l'hanno
incasinata ancora un po' :-(

>
> Che poi tradotto in valori assoluti veniva fuori:
>
> ExtractFileFromCab("d:\data1.cab", "@english.dat", "c:\trle\english.dat")
>
> Ora mi dai qualche info sull'esempio? :-)

Ogni promessa e' debito ;-)

Private Declare Function ExtractFileFromCab Lib "vb6stkit.dll" ( _

ByVal Cab As String, _ // nome completo del file cabinet
ByVal File As String, _ // nome interno al cabinet del file da estrarre
ByVal Dest As String, _ // nome completo del file di destinazione
ByVal iCab As Long, _ // numero di files in cui il cabinet e' suddiviso
ByVal sSrc As String _ // directory in cui si trova il cabinet
) As Long

> Comunque temo che sia tutto inutile.
> Nel tentativo di estrarre file da questo maledetto cab ho anche scaricato
> utility shell di vario tipo, fra cui l'extractor ufficiale della microsoft
> ma tutte mi danno l'errore "questo non e' un file cab"

Puo' anche darsi che il cab da cui sei partito fosse uno degli n files
che compongono l' intero archivio.

> In effetti su altri file come quello della directx funzionano ma quello
che
> serve a me sembra abbia qualcosa di strano.
> Resta il fatto che il programma di installazione riesce ad estrarre i file
> ma io no. :-/
> Non e' che esistano sotto versioni non del tutto compatibili di cab?

Non dovrebbe essere. E' possibile (se non violiamo nessun genere di privacy)
sapere di quale cab si tratta?

--
ciao, hal

--------------------------------
Inviato via http://usenet.libero.it

Paolo B.

unread,
Oct 21, 2002, 4:54:09 PM10/21/02
to

"hal1961" <aldoc...@inwind.it> ha scritto nel messaggio
news:62Z110Z171Z29Y1...@usenet.libero.it...
> Paolo B. ha scritto:

> > Comunque temo che sia tutto inutile.
> > Nel tentativo di estrarre file da questo maledetto cab ho anche
scaricato
> > utility shell di vario tipo, fra cui l'extractor ufficiale della
microsoft
> > ma tutte mi danno l'errore "questo non e' un file cab"
>
> Puo' anche darsi che il cab da cui sei partito fosse uno degli n files
> che compongono l' intero archivio.
>

Puo' essere ma in questo caso non funzionerebbe?
Comunque avendo anche io quel dubbio ho provato a partire da tutti gli altri
cab presenti ma nisba, sempre il solito messaggio "non e' un cab"
Winzip invece mi dava un messaggio piu' dettagliato.
Dice che non e' conforme al formato mid-1998 e che manca la signature bytes.
Ne so tanto che prima :-/

> > In effetti su altri file come quello della directx funzionano ma quello
> che
> > serve a me sembra abbia qualcosa di strano.
> > Resta il fatto che il programma di installazione riesce ad estrarre i
file
> > ma io no. :-/
> > Non e' che esistano sotto versioni non del tutto compatibili di cab?
>
> Non dovrebbe essere. E' possibile (se non violiamo nessun genere di
privacy)
> sapere di quale cab si tratta?
>

Sono i cab del cd originale del Tomb Raider Level Editor allegato a tomb
raider chronicle.

ciao

Paolo B.


0 new messages