Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 37
  1. #11
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    130
    Ho notato che molti programmatori di VB utilizzano Innosetup per creare i propri setup, per questo ho chiesto in questo forum.
    Sei tu che mi hai risposto di andare a cercare nel sito di innosetup, e così ho fatto.

    Purtroppo sul sito di Innsetup oltre alle funzioni base che già conosco, non c'è altro.

    Se devo installare un aggiornamento, è ovvio che lo dovrò installare nella stessa cartella dove è stato installato il programma, quindi mi serve una funzione che trovi questa cartella.

  2. #12
    Originariamente inviato da jasson
    Mi allaccio alla discussione, perchè anche io utilizzo InnoSetup, per creare sia il setup che il relase di aggiornamento, ma mi serve sapere come far installare l'aggiornamento direttamente nella cartella dove è installato il programma, senza permettere all'utente di scegliere la cartella, perchè potrebbe per sbaglio installare l'aggiornamento in una cartella diversa dal programma originale.
    Come fare?
    buongiorno

    io avevo trovato questo esempio di autoupdate lanciato direttamente dall'applicazione che verifica la presenza di un aggiornamento:

    AutoUpdater

    il path è passato come Command (Microsoft.VisualBasic.Command()) all'exe che esegue l'update vero a proprio.

    saluti

  3. #13
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    130
    Originariamente inviato da studiofab
    buongiorno

    io avevo trovato questo esempio di autoupdate lanciato direttamente dall'applicazione che verifica la presenza di un aggiornamento:

    AutoUpdater

    il path è passato come Command (Microsoft.VisualBasic.Command()) all'exe che esegue l'update vero a proprio.

    saluti
    Il problema è che anche in questo esempio, c'è da specificare dove risiede il programma, per poi essere aggiornato.
    Il problema non è eseguire l'aggiornamento, il mio problema è sapere dove il programma si trova.
    Nel 99% dei casi il programma si troverà in c:\Programmi, ma l'utente che lo ha installato, potrebbe aver voluto installare il programma in un altro percorso, e quà sorge il mio problema.
    Il setup che installa l'aggiornamento, nel mio caso Innosetup, prima di installare l'aggiornamento, deve conoscere in quale percorso è installato il programma originale, per poi installarci sopra l'aggiornamento.
    Quindi Innosetup, dovrebbe cercare all'interno del computer la mia applicazione.exe e una volta trovata, installarci sopra l'aggiornamento.

  4. #14
    Originariamente inviato da jasson
    Il problema è che anche in questo esempio, c'è da specificare dove risiede il programma, per poi essere aggiornato.
    Il problema non è eseguire l'aggiornamento, il mio problema è sapere dove il programma si trova.
    Nel 99% dei casi il programma si troverà in c:\Programmi, ma l'utente che lo ha installato, potrebbe aver voluto installare il programma in un altro percorso, e quà sorge il mio problema.
    Il setup che installa l'aggiornamento, nel mio caso Innosetup, prima di installare l'aggiornamento, deve conoscere in quale percorso è installato il programma originale, per poi installarci sopra l'aggiornamento.
    Quindi Innosetup, dovrebbe cercare all'interno del computer la mia applicazione.exe e una volta trovata, installarci sopra l'aggiornamento.
    http://stackoverflow.com/questions/9...es-the-default

    credo che così InnoSetup consenta di leggere una chiave del registro (che conterrà il percorso di installazione, valorizzato alla prima installazione)

  5. #15
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    130
    Il problema è che nel registro di sistema, il mio software non esiste, e quindi non esiste nemmeno la chiave dove ci stà scritto il percorso.
    Tra l'altro ho notato che anche altri software non compaiono nella lista, evidentemente non tutti hanno una chiave di registro.
    La cosa è strana, perchè Innosetup creando un uninstall, dovrebbe a logica creare la chiave di registro all'interno del percorso HKEY_LOCAL_MACHINE,'SOFTWARE\Microsoft\Windows\Cur rentVersion\Uninstall

    o se fosse installato solo per un utente HKEY_USERS,(nome utente),'SOFTWARE\Microsoft\Windows\CurrentVersion \Uninstall

    per poi andare a disinstallare tutti i file del programma.

    Ma in nessuna delle 2 cartelle di registro esiste il mio programma.

  6. #16
    1. puoi ancora implementare la tua applicazione --> gestisci tu il registro alla prima installazione (anche tramite InnoSetup mi sembra si possa fare)

    2. la tua applicazione è già distribuita: l'updater non trova chiavi in registro (vedi 1), quindi passa al piano B che potrebbe essere:
    - chiede all'utente di indicare la cartella di installazione (bruttissimo, lo so...)
    - o cerca un certo file (l'exe? un .ini? ecc.) nelle cartelle, facendo attendere qualche secondo (magari partendo dalla cartella più probabile, \programmi) (meno brutto....)

  7. #17
    scusate ma...
    invece di fare tanti passaggi inutili, non sarebbe meglio fare una cosa del tipo:

    - l'applicazione principalle scarica l'update exe nella cartella dove risiede lei (in vb.net My.Application.Info.DirectoryPath)...
    - l'applicazione principale lancia l'update.
    - l'update aggiorna ill programma principale (che in questo caso è nella stessa cartella ove risiede lui) e lo avvia.
    - il programma principale prima di vedere se ci sono aggiornamenti cancella eventuali update exe precedenti.

    secondo me è molto più semplice
    Bombardare per la pace, è come trombare per la verginità.

    C'è qualcuno al mondo che tromba troppo secondo me...

    Andrea Medici

  8. #18
    Originariamente inviato da andreaciao_22
    scusate ma...
    invece di fare tanti passaggi inutili, non sarebbe meglio fare una cosa del tipo:

    - l'applicazione principalle scarica l'update exe nella cartella dove risiede lei (in vb.net My.Application.Info.DirectoryPath)...
    No buono, se l'applicazione non è stata lanciata fin dall'inizio con privilegi elevati non può salvare alcunché nella directory del programma. Inoltre, il problema dello scrivere un setup che sa già dove andare ad aggiornare lo devi risolvere comunque se vuoi distribuire gli aggiornamenti anche indipendentemente dalla funzionalità di auto-update dell'applicazione.
    Amaro C++, il gusto pieno dell'undefined behavior.

  9. #19
    Utente di HTML.it
    Registrato dal
    Dec 2005
    Messaggi
    130
    Originariamente inviato da andreaciao_22
    scusate ma...
    invece di fare tanti passaggi inutili, non sarebbe meglio fare una cosa del tipo:

    - l'applicazione principalle scarica l'update exe nella cartella dove risiede lei (in vb.net My.Application.Info.DirectoryPath)...
    - l'applicazione principale lancia l'update.
    - l'update aggiorna ill programma principale (che in questo caso è nella stessa cartella ove risiede lui) e lo avvia.
    - il programma principale prima di vedere se ci sono aggiornamenti cancella eventuali update exe precedenti.

    secondo me è molto più semplice
    Il problema è che il file update.exe viene creato con Innosetup, e quindi a Innosetup gli devo dire dove installare i file.
    L'update può essere scaricato in qualsisi cartella, ma andrà sempre a installare i file in un percorso specifico che io gli devo dire.

    Il secondo problema è che molto probabilmente il programma si troverà nella cartella Programmi, cartella che non è possibile andare a modificare dall'applicazione, in quanto richiede i permessi di amministratore.
    Cioè se io tento di scaricare un file nella cartella c:\programmi\mio_programma, sicuramente mi esce che il percorso non è accessibile.

  10. #20
    jasson,

    per il primo problema la variabile {src} in Innosetup ti dice la directory dalla quale esegui l'installer.

    per il secondo problema io mi creerei un file di configurazione in AppData in cui metto la directory in cui è installata l'applicazione. poi tramite l'installer vai a leggertelo.
    Bombardare per la pace, è come trombare per la verginità.

    C'è qualcuno al mondo che tromba troppo secondo me...

    Andrea Medici

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 © 2026 vBulletin Solutions, Inc. All rights reserved.