Questo potrebbe essere un po 'più rant della risposta, ma qui va.
Se c'è una cosa gravemente rotta con il software client di Windows, è la distribuzione delle applicazioni.
La mia esperienza deriva dal lavorare su NovaMind - Anche se ho passato settimane nel corso degli anni sui problemi di installazione, Sono affatto un esperto di tecnologia di installazione e cercare di concentrarsi sul nostro prodotto reale ogni volta possibile. Abbiamo utilizzato InnoSetup, Visual Studio Setup Project 2008/2010 e infine siamo passati all'approccio WiX + Tools.
Come si installa un'applicazione al giorno d'oggi?
Web App: immettere un URL in un browser per accedere a un'app Web.
Mac: Trascinare il file scaricato (lo stesso per x64 e x86) sull'icona Applicazioni sul Mac. Fatto.
Windows: Scaricare il file corretto (l'utente deve conoscere l'architettura x64 e x86), eseguirlo. Fai clic su "Avanti" una dozzina di volte, attendi che venga visualizzato l'UAC, fai clic su Sì e poi sperare che l'installazione abbia fatto la cosa giusta.
Penso che se Windows avesse un sistema di distribuzione migliore, un marketplace/app store sano e una funzionalità di aggiornamento in tempo reale, le app web potrebbero non essere mai diventate così popolari in primo luogo. Ovviamente è un'esagerazione, ma credo che l'ecosistema delle applicazioni Windows sia stato danneggiato da un sacco di danni non fornendo un modello di implementazione valido e utilizzabile e anche ora Microsoft sembra prestare poca attenzione a questo problema.
Come si aggiornano le applicazioni al giorno d'oggi?
Web App: Non necessario. È aggiornato.
Mac: Nessuna magia incorporata, ma esiste una soluzione ampiamente utilizzata e potente denominata Sparkle.
Windows: Faresti meglio a rotolare da solo perché non c'è nulla di sostanziale là fuori.
ClickOnce avrebbe dovuto cambiare tutto questo ma non è riuscito a essere utilizzabile per applicazioni commerciali reali.
Ecco la carrellata:
InnoSetup e altre installazioni di script basato sono semplici ma non può produrre un file con estensione msi — Alcune aziende richiedono i file con estensione msi per automatizzare implementazioni di rete. Sarà inoltre necessario disporre di un'installazione basata su Windows Installer (.msi) se si desidera ottenere la certificazione del logo Windows.
installazione di Visual Studio Progetto 2008/2010 ti dà le basi facilmente e si può configurare un mucchio di cose, ma una volta che si vuole fare l'impensabile, come use a high quality icon o includere un changing set of files nell'installazione, sei fregato.Abbiamo anche dovuto correggere manualmente PackageCode e ProductCode ogni volta che abbiamo compilato un aggiornamento poiché Visual Studio è riuscito a rovinare in qualche modo le versioni dell'assembly e lascerebbe un assembly più vecchio durante l'aggiornamento, corrompendo l'applicazione.
WiX è il modo de facto per creare configurazioni su Windows e anche il programma di installazione di Microsoft Office è stato creato con WiX. WiX non è semplice. Ci sono libri disponibili per WiX!
Sfortunatamente, il WiX da solo non è ancora una buona soluzione. Usiamo il dotNetInstaller bootstrapper project per assicurare che .NET Framework sia installato e per avvolgere il file .msi e il bootstrapper in un singolo file .exe che le persone possono scaricare.
Con tutto questo si sta quasi bene. Ci sono sempre strani casi in cui i clienti non hanno installato Windows Installer (e quindi non possono eseguire il file .msi incorporato) o dove l'installazione di .NET Framework non riesce.
cose che non abbiamo potuto fare finora:
- Localizzazione nostro programma di installazione!
- Fornisce un singolo download per x64 e x86 - al momento creiamo solo un programma di installazione x86 perché non vogliamo che i nostri utenti pensino a x64 rispetto a x86.
- Dispone di un'interfaccia utente di installazione che funziona anche con impostazioni DPI elevate. Penso che questo potrebbe essere solo una cosa che non è supportata nell'installazione di MSI.
C'è un prodotto gratuito chiamato SharpSetup che sembra risolvere alcuni di questi problemi e consente di scrivere un WinForms interfaccia utente basata, ma SharpSetup non viene fornito con un programma di avvio automatico e richiede il .NET Framework - tuttavia è possibile scrivere il tuo codice C++ per reagire in questa situazione.
Per gli aggiornamenti in tempo reale abbiamo implementato la nostra soluzione e dopo molti problemi funziona correttamente.
Si potrebbe anche voler ascoltare Scott Hanselman’s podcast episode with Rick Brewster se parlavano della configurazione e della distribuzione di Paint.NET - Mentre mi congratulo con Rick e il team di Paint.NET sul loro buon setup, la necessità di una soluzione così complessa mi rattrista.
Se è assolutamente necessario utilizzare .msi, allora consiglio WiX a chiunque voglia creare un programma di installazione su Windows, ma alla fine sono estremamente frustrato dalla situazione di distribuzione su Windows. Ho sprecato settimane del mio tempo nel corso degli anni con problemi di setup stupidi. Con l'installazione puoi solo perdere. Non vincerai nessun cliente felice perché la tua configurazione funziona ma perderesti e frustrerai molti di loro, se così non fosse.
Ho avuto problemi con l'installazione di default VS. Per quanto posso ricordare, ha sempre cercato di mettere i file in qualche misteriosa sottodirectory di Common Files con un nome folle, piuttosto che Program Files, ed era anche difficile da personalizzare (per me, comunque). Ho optato per Inno Setup e ha funzionato in modo sorprendente. –