Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [VB6] Inserire file dentro il progetto

    Premessa, è una cosa abbastanza particolare quella che cerco di fare.

    Sto in sostanza cercando di crearmi un installer fatto in casa, giusto per passare il tempo, ma sto prima prendendo le misure per capire se è fattibile o meno.

    Il primo tentativo è quello di includere nel mio progetto in VB6 un file eseguibile.

    L'idea è questa, per fare una prova: ho il mio "Installer", chiamiamolo inst.exe, al suo interno è segregato un altro eseguibile, Pippo.exe, all'avvio (sub Main) internamente inst.exe deve ricreare Pippo.exe e lanciarlo.

    Ora, inst.exe che lancia ce l'ho, Pippo.exe ce l'ho, ma come faccio a infilare Pippo.exe dentro il progetto di inst e far si che possa ricreare Pippo.exe?

    Lo so, è ardita come cosa, ma visto che mi andava di farlo l'ho fatto

    Tnx

  2. #2
    Utente di HTML.it
    Registrato dal
    Dec 2008
    Messaggi
    152
    Ma se vuoi fare un installer non basta che copi tutti i file exe e le lib in una destinazione magari scelta dall'utente

  3. #3
    No no, ci sono tanti passaggi che via via si andranno ad aggiungere, ma per ora faccio un passo alla volta, per cominciare

  4. #4
    Bene, anche questo passo è andato.

    Istruzioni per l'uso, per chi volesse seguire le mie orme

    1° Aprire Visual Studio 6
    Andare su Aggiunte -> Gestione aggiunte...
    Cercare Editor risorse VB 6, selezionarlo e mettere la spunta in basso a destra su Carica all'avvio.
    Riavviare Visual Studio 6

    2° Andare su Strumenti -> Editor risorse VB (o cliccare sul relativo bottone, il cubetto verde).
    Cliccare su Aggiungi risorsa personalizzata (ultima scelta prima del ?)
    Selezionare ed aprire il file EXE
    Come si vede ora avete una cartella CUSTOM con dentro la vostra risorsa (la prima è 101 e così via).
    Salvare, vi chiederà di salvare in un file Nomeprogetto.res, premete OK
    Ora nel vostro progetto sarà presente il file .res

    3° Come estrarre il file exe.

    Occorre questa funzione:
    codice:
    Public Sub LoadDataIntoFile(DataName As Integer, FileName As String)
        Dim myArray() As Byte
        Dim myFile As Long
        If Dir(FileName) = "" Then
            myArray = LoadResData(DataName, "CUSTOM")
            myFile = FreeFile
            Open FileName For Binary Access Write As #myFile
            Put #myFile, , myArray
            Close #myFile
        End If
    End Sub
    DataName deve essere il numerino assegnato, es. 101
    FileName è il nome dell'eseguibile percorso compreso.

    Et voilà, ecco riemergere il file .exe.

    Unico inconveniente riscontrato:
    Io utilizzo Avira Antivir e mi riconosce l'eseguibile generato come possibile malware droppatore di applicazioni malevole VVoVe:

    Devo riuscire a risolvere anche questa :master:

  5. #5
    E' ho risolto anche la complicanza.

    Antivir si avvelena sia se metti come risorse interna una file EXE che una DLL usabile e registrabile.

    Se però ci infili un EXE zippato lo passa, quindi l'unico modo era metterci uno zip, ma anche un sistema per decomprimere, che sennò come fai ad usarlo poi?

    Visto che non accettava EXE o DLL ho trovato queste poche linee di codice:
    codice:
    Dim oshell As Shell32.Shell
    Dim ofolder As Shell32.Folder
        Set oshell = CreateObject("Shell.Application")
        Set ofolder = oshell.NameSpace(CVar(App.Path))
        ofolder.CopyHere oshell.NameSpace(CVar(App.Path & "\Pippo.zip")).Items
        Set ofolder = Nothing
        Set oshell = Nothing
    Unito all'inclusione del riferimento "Microsoft Shell Control and Automation" scompatta tutto quello che c'è dentro App.Path & "\risorsa.zip" dentro la stessa cartella.

    L'eseguibile inst.exe creato con questo codice e con la sola risorsa Pippo.zip Antivir lo passa senza problemi.

    Quindi i passi sono:
    1: Estrarre il file zip
    2: Scompattarlo con il sistema di cui sopra
    3: Cancellare il file zip

    Et voilà, a voi la risorsa exe, funzionante e in barba all'antivirus sospettoso.

  6. #6
    Utente di HTML.it
    Registrato dal
    Sep 2007
    Messaggi
    39
    Avevo aperto prima una discussione per lo stesso motivo ... comunque mi aggrego a questa.
    Anch'io ho fatto un installer ma essendo un pò più dinamico non utilizzo un file res perchè creo i "pacchetti" con un altro programma (altri che non hanno il codice sorgente utilizzano l'installer) per raggruppare il tutto in unico file "appendo" il file zip che mi serve dietro all'installer.exe.
    PROBLEMA! Antivir mi vede l'installer "infettato" dallo zip e lo blocca.
    Avete altri suggerimenti di come creare un pacchetto?

    Ciao Otti

  7. #7
    Guarda, io sto affrontando il problema un passo alla volta.

    Il perché ho scelto VB6 è che è sicuramente più compatibile su un sistema Microsoft di base (su un Windows XP Pro SP3 appena installato gira).

    Poi il grosso lo farò fare ad un'applicazione C#, ma per poterlo fare ho prima bisogno di sapere se l'utente ha o no il framework.

    Quindi in sostanza:

    1° passo:
    Mettere nell'exe VB6 un paccone zip contenente tutto.
    2° passo:
    Scompattare il paccone
    3° passo:
    Lanciare l'applicativo di controllo per il Framework (ne ho fatto uno molto idiota, in pratica mi crea un file txt con scritto ok, se non parte non crea il file e quindi il framework non c'è)
    4° passo:
    Lancio tutto il resto se il Framework c'è

    Come concetto di base è semplice, è solo a far funzionare tutto, per ora fino al 3° passo ci sono arrivato, ora è solo da vedere il resto...

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.