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

    [Delphi] Non solo mega setups, ma anche patch come?

    ciao,
    ho rilasciato varie versioni del mio programma in delphi.

    ognuna di queste conteneva delle aggiunte alla Unit principale del programma.

    alla 30esima release mi hanno rinfacciato che un programma da 6mb era davvero fastidioso da scaricare e soprattutto da scaricare OGNI volta che c'era qualche modifica...
    mi hanno suggerito di fare delle patch...

    bene...

    se nel mio programma aggiungo una cosa, abbastanza corposa, 3-400 righe di codice, ad esempio, e non volessi costirngere a scaricare 6mb di roba, come posso fare?

    voglio dire, come diavolo si fanno le patch?

    grazie.

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    La possibilità di "patchare" un programma, alla fine, consiste semplicemente nell'aggiornare alcuni file con le versioni più recenti.

    InstallShield permette di farlo, ma la gestione è abbastanza complessa e forse è troppo elaborata.

    Forse ti basterebbe fornire agli utenti solo il file eseguibile per ridurre il materiale da scaricare...a meno che non sia proprio quel file ad essere grande 6 MB!

    In tal caso, l'unica soluzione è quella di "spaccare" il tuo file eseguibile distribuendo in maniera logica il codice in più librerie (DLL) o package, quindi separando le varie interfacce in più moduli scaricabili separatamente.

    E' un approccio che, comunque, applicato ad un'applicazione di grandi dimensioni, richiede una riprogettazione.

    Siccome so che Delphi tende a generare eseguibili abbastanza compatti...siamo sicuri che tutti quei MB non siano solo immagini grafiche?? In tal caso, potresti ottimizzare quelle risorse usando meno bitmap (BMP) e più JPEG, o riducendo la quantità di grafica.

    Una cosa che è possibile fare sin da subito è compilare un'applicativo utilizzando i runtime package. I componenti che hai utilizzato fanno parte di package per i quali è disponibile anche il codice sorgente. Se compili senza i runtime package, il codice sorgente ti viene incluso nell'eseguibile, aumentandone le dimensioni, ma rendendolo funzionante anche senza il bisogno di librerie esterne... mentre compilandolo con i runtime package, puoi rendere più snella la tua applicazione facendo in modo che si colleghi dinamicamente alle librerie (package) di Delphi che contengono il codice compilato dei componenti (hanno estensione BPL).

    E' ovvio che dovrai distribuire, in quest'ultimo caso, anche i package assieme all'applicazione ma una volta scaricati ti basterà aggiornare e distribuire solamente l'applicazione.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    50
    mhn.... :quote:

    6 MB di applicazione per solo 4000 righe di codice....per lo piu saranno immagini, infatti DragonMagic sono 8341 righe di codice e consuma ancora 1.2 MB, cmq per fare un sistema di update creati un modello di file compresso o usane uno gia fatto e un UPDATER che si connette ad un sito e si scarica l'aggiornamento compresso e dopo lo decomprime aggiornando l'applicativo.

    Update:
    Esistono anche tool come installshield developer che creano patch in automatico, ma sono a pagamento e costano abbastanza (600 euro se non sbaglio)

  4. #4
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Anche InstallShield Borland Limited Edition supporta i servizi di aggiornamento...solo che credo il problema sia proprio un altro, cioè un'eccessiva dimensione dell'eseguibile dovuta al tipo e alla quantità di risorse grafiche utilizzate.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2002
    Messaggi
    50
    no alka hai capito proprio male, Installshield Developer crea patch che leggono il file di partenza (Vecchia Versione) e file nuovo (Nuova Versione) e mettono nella patch solo le effettive differenze rendendo la patch minuscola...
    Mentre quello limited non fa altro che aggiornamenti per evitare conflitti tra due versioni di una stessa applicazione.

  6. #6
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Avrò capito male quello che intendevi dire, comunque credo che il servizio di aggiornamento di InstallShield Express Borland Limited sia sufficiente, se Lyllo intendesse utilizzarlo, per rendere la propria applicazione aggiornabile automaticamente scaricando le versioni recenti direttamente da Internet a intervalli configurabili (o almeno, questo è ciò che viene consentito nella versione inclusa con Borland Delphi 7).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  7. #7
    Una cosa che è possibile fare sin da subito è compilare un'applicativo utilizzando i runtime package. I componenti che hai utilizzato fanno parte di package per i quali è disponibile anche il codice sorgente. Se compili senza i runtime package, il codice sorgente ti viene incluso nell'eseguibile, aumentandone le dimensioni, ma rendendolo funzionante anche senza il bisogno di librerie esterne... mentre compilandolo con i runtime package, puoi rendere più snella la tua applicazione facendo in modo che si colleghi dinamicamente alle librerie (package) di Delphi che contengono il codice compilato dei componenti (hanno estensione BPL).
    COme si fa?

    PS: le righe sono ben più di 4000, ma pure se fossero 15000, non cambierebbe nulla..
    credo che la cosa dipenda dagli skin che ho applicato al programma, al fatto che i pulsanti sono ben 3 BMP per ogni stato e sono svariati...

    ma invece continuate a dirmi di InstallShield?
    davvero se gli dico di crearmi una patch lui legge i due codici ed aggiunge solo le cose cambiate?
    se si, come devo fare esattamente?

    grazie 1000


  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,463
    Centinaia di righe di codice in più o in meno contano veramente poco nel peso dell'eseguibile.

    Sono le risorse grafiche che hai utilizzato ad essere pesantissime. Il tuo programma sarà circa 500 KB di codice compilato e 5,5 MB di grafica.

    O alleggerisci la grafica e ti accontenti, o la esporti in file esterni da caricare tramite codice richiamando il metodo LoadFromFile dagli oggetti che trattano immagini (Glyph, Picture, ecc.).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    O alleggerisci la grafica e ti accontenti, o la esporti in file esterni da caricare tramite codice richiamando il metodo LoadFromFile dagli oggetti che trattano immagini (Glyph, Picture, ecc.).
    credo che infatti sia la soluzione migliore...
    così l'exe in se rimane sempre piccolo e chiunque si ritrovi a dover scaricare un aggiornamento non si ritrova quella mazzata di 6 mb...

    farò così grazie...

    a questo punto ti chiedo:

    conviene fare la stessa cosa anche per le immaginine che appaiono dentro i pulsanti oppure quelle posso ometterle e le precarico a designtime e a runtime faccio caricare solo gli sfondi e lo skin del programma?

    grazie e

    PS: il fatto è che cmq, le immagini che ho creato, pur essendo in gran numero, non occupano più di 2mb di spazio... da dove escono gli altri 4?

  10. #10
    per la cronaca, ho epurato tutto il programma dalle immagini, ho lasciato solo quelle sui pulsanti ed il bestione è diminuito, ma cmq naviga attorno ai 2.17 mb...

    che altro posso fare?

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.