Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 26
  1. #1

    [VB6]Pacchetto installazione

    Ciao a tutti!
    Sto cercando di utilizzare la procedura guidata di Visual Basic per la creazione del pacchetto di installazione del mio programma. La mia difficoltà è che nel momento in cui devo selezionare i files da aggiungere non posso aggiungere cartelle. Ho infatti due cartelle che contengono circa 1500 immagini ciascuna. Ho letto un post che dice di aggiungere un file immagine alla volta e poi creare una cartella in cui posizionarlo adoperando il path opportuno: ma non posso farlo con 3000 files! VVoVe: Ci sarà pur un altro sistema senza cambiare programma. (fra parentesi ho scaricato Cyberinstaller ma la versione free non mi fa superare i 50 MB di dati nel pacchetto:io avrò almeno 1 o 2 GB).

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    Ciao ! è difficile superare il limite dell'assemblatore. Ho avuto problemi analoghi: ho copiato le cartelle nella cartella Support contenente il setup di VB. Ho creato qualche riga nel progetto, per cui, alla prima esecuzione del pacchetto, esegue "CopyFolder" dalla cartella Support al mio Path.

    Non è bello, ma l'importante è superare l'ostacolo.

  3. #3
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao vicky,
    ho avuto anch'io diversi problemi del tuo tipo e li ho superati con un sistema analogo a quello suggerito da pierabo (altrimenti NON c'è soluzione per un numero così elevato di files); una variante sarebbe quella di inserire uno o due files a seconda del N° di cartelle che devi creare, poi nella posizione installazione in corrispondenza dei predetti files fai: $(AppPath)\Tua cartella; in questo modo trovi già le cartelle create. Certo dovrai impostare un codice che al primo avvio del prog., e per una sola volta, provveda alla copia nelle predette cartelle di tutti i files che avrai incluso in support (in effetti è simile al consiglio di pierabo)
    LM

  4. #4
    ...Certo dovrai impostare un codice che al primo avvio del prog., e per una sola volta, provveda alla copia nelle predette cartelle di tutti i files che avrai incluso in support
    Ho creato le cartelle col pacchetto di installazione come hai detto ma come faccio a dare l'istruzione per copiarci dentro i miei file?
    Ti pregherei di essere semplice nella spiegazione.
    In pratica io ho il mio pacchetto già fatto con le due cartelle vuote (contengono solo un'immagine ciascuna) nella cartella support.
    Poi ho le cartelle originarie che contengono 1500 img ciascuna che sono ancora al di fuori del pacchetto. E poi?

  5. #5
    Ho pensato di inserire nell'evento Form_load del form di apertura del mio programma questo codice:

    codice:
          
    Dim SourceFile, DestinationFile
    SourceFile = "$(AppPath)\NomeCartellaOrigine\"   ' Definisce il nome del file di origine.
    DestinationFile = "$(AppPath)\NomeCartellaDestinazione\"   ' Definisce il nome del file di destinazione.
    FileCopy SourceFile, DestinationFile   ' Copia il file di origine sul file di destinazione.
    1)Quando faccio il pacchetto di installazione (con la creazione guidata di VB6) aggiungo ai file previsti anche un file che identifica una delle mie immagini. Come destinazione di questo file metto: "$AppPath\NomeCartellaDestinazione" (in modo da creare una Cartella Destinazione dal nulla, visto che la creazione guidata non mi permette di inserire cartelle dentro il pacchetto di installazione)
    2)Creo il pacchetto di installazione.
    3)Dopo aver inserito manualmente nella cartella Support del pacchetto di installazione la cartella che contiene tutte le altre immagini (NomeCartellaOrigine) mi aspetterei che caricando il programma tutte le immagini passino da Cartella Origine a Cartella Destinazione. E' corretto?
    Devo aver combinato qualcosa di sbagliatissimo perché già il form del programma mi dà errore...

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    Prova con questi comandi:

    Dim SourceFile As String
    Dim DestinationFile As String

    Dim fso As Object
    Dim f As Object
    Set fso = CreateObject("Scripting.FileSystemObject")

    '''' NomeCartellaOrigine deve essere una cartella e non una variabile

    SourceFile = App.Path & "\NomeCartellaOrigine" ' Definisce il nome del file di origine.
    DestinationFile = App.Path & "\NomeCartellaDestinazione" ' Definisce il nome del file di destinazione.


    '''' se la cartella NomeCartellaDestinazione esiste già, non eseguire il comando successivo
    Set f = fso.CreateFolder(DestinationFile)

    Set f = fso.copyfolder(SourceFile, DestinationFile)

  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ciao vicky,
    Penso che sia il caso di semplificare un pò tutto.
    Nel tuo programma devi inserire all'avvio il seguente codice:
    codice:
    'Progetto>Riferimenti>Microsoft Scripting Runtime
        Dim fso As Variant
        Set fso = CreateObject("Scripting.FileSystemObject")
       fso.CopyFolder "D:\Test3", "D:\TestXX"
        Set fso = Nothing
    Ove D:\Test3 è l'origine e D:\TestXX è la destinazione. Con queste poche righe riesci a copiare sia la cartella, sia tutti i files che contiene (l'ho provato).
    In particolare la tua "origine" sarà il pacchetto di supporto, ove manualmente avrai inserito le due cartelle con tutti i files - la destinazione sarà l'HD ove gira il tuo programma App.Path & "\" & "DATI\...."
    Naturalmente questo codice deve avere una protezione, nel senso che se le cartelle ed i files sono già stati copiati non deve essere eseguito, a questo scopo ad esempio potresti fare:
    codice:
    'Controlla se esiste la cartella DATI, altrimenti la copia:
            Dim FSO As Variant
            Set FSO = CreateObject("Scripting.FileSystemObject")
           
            If (FSO.FolderExists(App.Path & "\" & "DATI")) = False Then
                With FSO
                    .CopyFolder "D:\Test3", "D:\TestXX"
                    .CopyFolder "D:\Test4", "D:\TestXXX"  
                 End With
                
                strNameFold = FSO.GetFolder(App.Path & "\" & "DATI")
                MsgBox "La cartella DATI ed i relativi files, sono state" & vbCr _
                & "create con successo in  " & strNameFold & ".", vbInformation, "Applicazioni ..."
    Spero di non aver dimenticato nulla....
    LM

  8. #8
    Ho fatto varie prove ed ho ottenuto come risultato la creazione della cartella Indice1 e la copia dei file da Indice ad Indice1 tramite questo codice:
    codice:
    Sub copiaFile()
    
    Dim SourceFile As String
    Dim DestinationFile As String
    Dim fso As Object
    Dim f As Object
    Dim strNameFold As String
    
    Set fso = CreateObject("Scripting.FileSystemObject")
    SourceFile = App.Path & "\Indice"
    DestinationFile = App.Path & "\Indice1"
    
    Set f = fso.CreateFolder(DestinationFile)
    Set f = fso.CopyFolder(SourceFile, DestinationFile)
    Set f = Nothing
    
    If (fso.FolderExists(DestinationFile)) = False Then
                With fso
                    .CopyFolder SourceFile, DestinationFile
                    
                 End With
                
                strNameFold = fso.GetFolder(SourceFile)
                MsgBox "La cartella Indice ed i relativi files, sono state" & vbCr _
                & "create con successo in  " & strNameFold & ".", vbInformation, "Applicazioni ..."
    End If
    
    End Sub
    Ho piazzato tutto in un modulo esterno ed ho richiamato la funzione nel form di apertura del mio programma.
    Il problema è che nonostante l'operazione vada a buon fine il programma si interrompe dandomi questo messaggio di errore:
    'Necessario Oggetto'
    la riga interessata è
    codice:
    Set f = fso.CopyFolder(SourceFile, DestinationFile)
    Cosa c'è che non va?

  9. #9
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    Ciao !

    Basta gestire l'errore, ignorando il codice 424

  10. #10

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.