Applicazione autoaggiornamento - filosofia


15

Questa è una domanda filosofica.

Data un'ipotetica applicazione desktop e il desiderio di fornire aggiornamenti automatici (piuttosto che forzare le persone a visitare un sito Web, verificare un aggiornamento, scaricare un aggiornamento, installare), quale dei due è più un approccio di "best practice"?

  1. Come iTunes , controlla se esiste una nuova versione e richiede all'utente di scaricare la nuova versione. In tal caso, scarica un eseguibile di installazione completo (in questo caso, un file di Windows Installer (.msi)) che installa la versione completa (non solo un aggiornamento alla versione precedente - troppo da gestire se ci sono più versioni là fuori) . Quindi, diciamo, è la versione 10.1.1 - sia che tu stia installando fresco o aggiornando, usi lo stesso file. Dopo il download, indica all'utente di chiudere l'applicazione ed eseguire autonomamente il file di installazione.

  2. Simile all'altra, verifica la presenza di una nuova versione e richiede all'utente di scaricarlo, ma invece di scaricare un file eseguibile e richiedere all'utente di eseguirlo, lo esegue effettivamente per loro - chiudendo il programma che hanno aperto, acquisendo la sicurezza necessaria per installare i file.

Problemi con il n. 2: molti problemi relativi alla chiusura del programma, poiché il programma può aprire altri programmi ( Outlook ed Excel ) o se l'utente si trovasse nel mezzo di qualcosa. Anche per quanto riguarda la sicurezza, è necessario l'accesso dell'amministratore locale per l'installazione, e se non lo si dispone? Nelle versioni successive di Windows, non puoi semplicemente ignorare la sicurezza della persona.

Problemi con il n. 1: alcune persone credono che questo sarà troppo difficile, troppo sforzo per l'utente finale.

Preferirei fortemente andare con il numero 1 perché risparmierà 80-120 ore sul mio progetto ed è più semplice da implementare e mantenere. Tuttavia, abbiamo persone che si sentono fortemente da tutte le parti.

Qual è la migliore pratica per questo genere di cose?


Non sono così sicuro che sia filosofico, sembra che stia cercando una soluzione per me.

Quindi non è OK porre domande di progettazione / architettura qui?

La mia domanda è: perché # 2 richiede l'arresto e il riavvio del programma? Se si tratta di un aggiornamento di sicurezza, è comprensibile, ma un utente normale chiude e riapre un programma almeno una volta al giorno se non di più, quindi perché non installarlo in background, lascia che l'utente esegua il programma usando la versione precedente in memoria e quindi al riavvio, utilizzare la nuova versione installata. Nessuna confusione, nessuna seccatura.
Mike S,

@Mike S: non è possibile su Windows (impossibile sovrascrivere i file eseguibili in esecuzione) e anche su Linux non è una buona idea (se apri un'altra istanza, ne avrai uno che esegue il vecchio codice e uno che esegue il nuovo codice - se sta accadendo qualche IPC, è anche peggio)
Dean Harding

Per esperienza: se controlli gli aggiornamenti, non fare in modo che il tuo programma lo faccia ogni giorno a mezzanotte o alle 15:00. Sembra ragionevole, ma finisci con DDOS per i tuoi server. Basta aggiungere fino a 3600 secondi di casualità; non è così urgente.
Saluti

Risposte:


20

Personalmente, mi piace l'approccio di Google Chrome. Una directory di base con un programma di avvio e sottodirectory per ogni versione installata del software. Il programma di avvio cerca solo il numero di versione più alto e lo utilizza ed elimina le versioni precedenti, se necessario. Un'attività di aggiornamento viene eseguita ogni tanto per scaricare e creare nuove directory. Quando vengono installate nuove versioni, l'applicazione in esecuzione richiede un riavvio per utilizzare la nuova versione.


4
+1 per indicare il buon comportamento di Google. Il contrasto è Adobe Acrobat Reader che come ogni 2 ° giorno alcune patch apparentemente urgenti da installare, disturbano continuamente il proprio lavoro.
Ingo,

Mi piace anche questo approccio. Il rovescio della medaglia è che funziona solo per installazioni per utente che non richiedono elevazione. Una volta che hai un prompt di elevazione, non importa se hai bisogno di un paio di clic in più per eseguire l'aggiornamento (non è più silenzioso).

@Cosmin se non si desidera utilizzare% appdata%, è possibile utilizzare% ProgramData% per archiviare i file scaricati. Un modo più filosoficamente corretto sarebbe quello di archiviare l'archivio lì, quindi elevarlo per installarlo alla successiva esecuzione del programma.
Pezzi di pancetta il

ADORO questa risposta e la sto mettendo nella mia tasca posteriore (per ora, il download in stile "Itunes" ha trovato un grande richiamo per motivi di risparmio sui costi.)
Shannon Davis

3

Non dovresti creare voci di avvio non necessarie per verificare la presenza di aggiornamenti come Adobe Flash Player (è difficile rintracciarli tutti e non riesco a trovare un modo per disabilitare i controlli ...) o iTunes. Infastidisce l'utente (geek, comunque). Un'opzione migliore sarebbe quella di verificare la presenza di aggiornamenti all'avvio dell'applicazione come fa Firefox .

Un semplice "non invadente installare gli aggiornamenti?" la finestra non infastidirà gli utenti. Lascialo aggiornare in background mentre l'utente fa altre cose, quindi avvia automaticamente l'applicazione.

Assicurati di includere un'opzione:

Verifica aggiornamenti su:

  • Accedi (se vuoi infastidire i geek)
  • Procedure di avvio ( il default)
  • Ogni poche settimane ( disattivato per impostazione predefinita)

O qualcosa di simile.


Se vale la pena, direi di provarci. Questa è la tua decisione.


2

Penso che tu voglia un'installazione "ClickOnce".

http://msdn.microsoft.com/en-us/library/142dbbz4(v=vs.90).aspx

ClickOnce è una tecnologia di distribuzione che consente di creare applicazioni basate su Windows che si aggiornano automaticamente e che possono essere installate ed eseguite con una minima interazione dell'utente. La distribuzione ClickOnce risolve tre problemi principali nella distribuzione:

Difficoltà nell'aggiornamento delle applicazioni. Con la distribuzione di Microsoft Windows Installer, ogni volta che un'applicazione viene aggiornata, l'utente deve reinstallare l'intera applicazione; con la distribuzione ClickOnce, è possibile fornire aggiornamenti automaticamente. Vengono scaricate solo quelle parti dell'applicazione che sono state modificate, quindi l'applicazione completa e aggiornata viene reinstallata da una nuova cartella affiancata.

Impatto sul computer dell'utente. Con la distribuzione di Windows Installer, le applicazioni si basano spesso su componenti condivisi, con potenziali conflitti di versione; con la distribuzione ClickOnce, ogni applicazione è autonoma e non può interferire con altre applicazioni.

Autorizzazioni di sicurezza La distribuzione di Windows Installer richiede autorizzazioni amministrative e consente solo l'installazione limitata dell'utente; La distribuzione ClickOnce consente agli utenti non amministrativi di installare e concede solo le autorizzazioni di sicurezza dell'accesso al codice necessarie per l'applicazione.


Questa non era una questione di pro e contro del clic una volta e dell'MSI (a cui molte delle tue conclusioni sono errate e / o incomplete) ma piuttosto una questione di migliori pratiche per le soluzioni di aggiornamento automatico.
Christopher Painter,

Apprezzo comunque queste informazioni e le condividerò con lo sviluppatore per vedere se le avesse considerate un'opzione - forse pensava che avrebbe dovuto sviluppare lui stesso il processo di aggiornamento.

Bene Christopher, prendilo con MS, che è diretto da MSDN. Anche questo è davvero un commento utile.

Quando codifica per le tecnologie di distribuzione, non mi sorprende mai quando qualcuno che pubblica su MSDN sbaglia. Pochissimi di noi esperti capiscono davvero queste cose.
Christopher Painter,

2

Personalmente sono arrivato ad apprezzare le applicazioni che fanno qualcosa di simile al framework Sparkle . Immagino che sia solo una cosa Mac, ma essenzialmente fa quanto segue (dalla parte superiore della mia testa - presumo che il comportamento possa essere regolato).

  1. Verifica aggiornamenti (in genere all'avvio dell'applicazione)
  2. Se ce n'è uno, viene mostrata una finestra separata con un log delle modifiche ben formattato
  3. L'utente può quindi saltare quella versione, installarla o scegliere di ricevere un promemoria in seguito
  4. Se decide di installare l'applicazione, viene visualizzata una barra di avanzamento sotto il registro delle modifiche
  5. Dopo il download, l'utente può decidere di uscire dall'applicazione e installarlo immediatamente o installare dopo aver chiuso l'applicazione

Considerando che stai parlando di .msi, questo particolare framework non è realmente applicabile, ma in questo caso preferirei scegliere una soluzione esistente piuttosto che reinventare la ruota.


1

Direi che devi davvero conoscere il tuo utente. Se sono esperti e hanno un intenso interesse a rimanere aggiornati, il numero 1 funzionerà.

Non sottovalutare mai la pigrizia di un utente perché quando il suo programma non funziona più perché non sono più supportati, verrai inondato di chiamate all'help desk in seguito.

Il tempo verrà dallo sviluppo (n. 2) o dal supporto (n. 1).


1

Che dire di questo?

  • All'avvio dell'applicazione, controllare la nuova versione e (facoltativamente dopo aver chiesto all'utente) scaricarla.
  • Al termine del download, fornire un pulsante per l'utente che consenta di reinstallare e riavviare l'applicazione (non utilizzare finestre di dialogo a meno che l'aggiornamento non sia critico).
  • All'arresto dell'applicazione, (facoltativamente dopo aver chiesto all'utente) avviare il programma di installazione. Nel caso in cui l'utente si rifiuti di eseguire l'installazione a questo punto (forse hanno fretta), fallo la prossima volta prima dell'avvio dell'applicazione.

Non è necessario disturbare l'utente, non è necessario chiudere nulla ...


1

Perché non qualcosa nel mezzo?

Richiedi il download (o fai l'opzione "download automatico"), dopo aver terminato la richiesta di installare l'aggiornamento scaricato (esegui il file .msi). In questo modo si annulla il rovescio della medaglia di # 2 (chiudendo nel mezzo del lavoro dell'utente) e mantenendo il comfort con il costo di 1 clic in più.

La finestra di dialogo " Chiudi e installa aggiornamento? " Dovrebbe essere facilmente accessibile (ma non fastidioso) quando l'utente inizialmente rifiuta. Con "Avvia <nome programma>?" la casella di controllo alla fine di .msi sarà quasi come il n. 2 senza davvero più lavoro

@ sicurezza
programmi nella moderna Windows possono richiedere l'autorizzazione per eseguire azioni che richiedono diritti di amministratore (all'utente viene visualizzato il prompt dove digita la password dell'amministratore e quindi seleziona "sì / no" se concedere l'autorizzazione)


1

Ho 124 Banchi di pegni che usano la mia app desktop Pawnshop Management. Ogni volta che ho un nuovo aggiornamento, invio loro un'e-mail per informarli dell'aggiornamento e dei relativi dettagli. Quindi hanno la possibilità di FTP tramite l'accesso al mio sito Web. Hanno anche la possibilità di ripristinare l'aggiornamento. Il mio sito Web tiene inoltre traccia di ogni versione installata dei banchi dei pegni.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.