come aggiornare il software [chiuso]

1

Sono un principiante nella programmazione di computer con C / C ++. Ho una precedente esperienza nella programmazione per il web. C'è una certa confusione che sto avendo con il processo di sviluppo del software nelle applicazioni desktop.

Le applicazioni Web sono facili da aggiornare perché fondamentalmente sono un sacco di file sorgente, ma ho una domanda sulle applicazioni desktop. La cosa principale che noto sulle applicazioni desktop è che vengono rilasciati in diverse versioni. Ciò richiede all'utente di passare attraverso il processo di disinstallazione / re-installazione al fine di ottenere una versione più recente del software.

Nel software C / C ++ per varie piattaforme, in che modo un programmatore implementerà un'opzione di "aggiornamento" che consentirebbe a un utente di aggiornare un'applicazione già installata senza dover tornare a un sito web. Quanto è difficile aggiornare un file eseguibile su piattaforme come Windows e Linux. Capisco che il processo potrebbe essere diverso per piattaforme diverse.

Ad esempio, ho un'applicazione desktop (versione 1) che l'utente ha già scaricato e installato sul proprio PC. Dopo un po ', apporto alcune modifiche al software e apporto miglioramenti che l'utente vorrebbe applicare al suo software. L'utente ha apportato personalizzazioni al software, ma desidera eseguire l'aggiornamento alla versione 2 senza dover nuovamente personalizzare la propria applicazione. Inizialmente, pensavo che una funzione di "aggiornamento" avrebbe sostituito alcune parti di un file eseguibile, ma è proprio questo che dovresti fare?

La mia domanda principale è: come farebbe esattamente qualcuno per realizzare questo processo di "aggiornamento"? È possibile?

    
posta Jacob Perkins 14.09.2014 - 00:14
fonte

2 risposte

3

L'aggiornamento del software che è impacchettato è complesso ed è meglio farlo con uno strumento di installazione del software. Questo è un caso classico di build vs. buy. Ad esempio, non è possibile creare qualcosa che faccia il lavoro di InstallShield.

L'aggiornamento del software che è stato personalizzato è una proposta molto complessa. In generale questo è quasi impossibile da fare in modo automatico.

Se sapessi in anticipo che alcuni tipi di personalizzazione dovevano essere supportati, puoi configurare la tua applicazione in modo che abbia caratteristiche di natura modulare. Forse una architettura plugin o qualche metodo di configurazione logica guidata da tabella . In questo tipo di scenario è possibile automatizzare la sostituzione del core dell'applicazione senza disturbare i moduli o gli archivi dati che contengono le personalizzazioni.

Questo tipo di personalizzazione deve necessariamente essere limitato in natura. Alcuni tipi di modifiche che potresti eventualmente apportare alla tua applicazione principale sono destinate a superare anche le configurazioni / personalizzazioni utente più pianificate e attentamente pianificate.

Se crei software per pacchetti e esegui anche personalizzazioni su quel software, prima o poi dovrai o ramificare il tuo codice e lasciare che alcuni clienti vivano con la vecchia versione o dovrai riapplicare alcune personalizzazioni . Basta chiedere a chiunque abbia acquistato un ERP importante come SAP.

    
risposta data 14.09.2014 - 00:24
fonte
2

Probabilmente stai usando personalizzato in modo sbagliato. L'applicazione desktop (codificata in C ++ e distribuita come eseguibile binario in pacchetto) non è stata personalizzata, ma utente configurato .

La personalizzazione di un'applicazione desktop significa che alcuni sviluppatori (interni a - o subappaltatori della società in cui viene utilizzata quell'applicazione) hanno ottenuto, studiato e migliorato l' applicazione desktop codice sorgente . Questo è raro e molto costoso.

Dovresti assicurarti che la configurazione dell'utente (ad es. le preferenze) sia compatibile da una versione alla successiva (magari disponendo di una funzionalità per trasformare tale configurazione).

Alcune (rare) applicazioni possono essere "personalizzate" tramite plugins (su Linux l'applicazione avrebbe dlopen (3) qualche oggetto condiviso in fase di runtime, durante l'avvio). Se la tua applicazione può avere plugin, i plug-in devono essere scritti da un programmatore professionista (non dall'utente casuale), e tu dovresti aver progettato e documentato attentamente una buona interfaccia per i plugin. Se cambi questa interfaccia, i vecchi plugin non funzioneranno con le versioni più recenti del tuo software.

Altre applicazioni incorporano un linguaggio di scripting come interprete (ad esempio Lua o Guile ). Questa è una decisione progettuale molto strong e dovresti deciderlo prima ancora di iniziare a codificare la tua applicazione.

L'aggiornamento di un software mentre è ancora in esecuzione è un argomento di ricerca (e non è mai stato fatto per le applicazioni desktop). Leggi la persistenza , continuazione , stack di calll , pacchetto software ...

In particolare su Linux, studia il codice sorgente di alcune applicazioni software libero . Ti insegnerà molto.

    
risposta data 14.09.2014 - 11:25
fonte