Come distribuire il mio software scientifico con il minor numero possibile di dipendenze?

8

Come parte della mia ricerca, scrivo un sacco di codice Python e MATLAB che non ha mai bisogno di essere distribuito a nessun altro. Anche se ho bisogno di distribuire il mio software, Python e MATLAB, entrambi interpretati, rendono la condivisione relativamente semplice.

Ora sto scrivendo alcuni software in C ++ che vorrei distribuire. Ho un'idea su come compilare il software sulla mia macchina, ma quello che non ho capito è cosa deve essere fatto per dare ad altri il software.

In primo luogo, di più sul mio progetto: sto scrivendo del codice per calcolare e visualizzare le visualizzazioni. Il progetto è basato su grafici e quindi sto usando la libreria di grafi LEMON. Sto esplorando le implementazioni VTK e OpenGL allo scopo di visualizzare la visualizzazione. Mi piacerebbe scrivere binding Python e MATLAB per gli utenti di quegli ambienti per poter usare il mio software, e mi piacerebbe produrre versioni di Windows e Linux (non ho ancora pensato a OS X ...).

Quindi, prendiamo come esempio la libreria di grafi di LEMON. È un gruppo di intestazioni insieme a un piccolo oggetto condiviso. Sul mio sistema di sviluppo, compilo la libreria con CMake e la collego al mio progetto.

Ora dì che voglio dare il mio software a qualcuno che gira su Windows. Voglio che siano in grado di scaricare un programma di installazione, fare clic su un pulsante o due e avere tutto a posto. Non voglio che si preoccupino di installare la libreria LEMON o OpenGL. Non dovrebbero dover compilare consapevolmente nulla. È possibile?

Ho la sensazione che lo sia, ma vengo fuori di testa quando cerco riferimenti. Ho una vaga idea che se compilo un binario su Windows dovrei essere in grado di distribuire quel binario a chiunque stia utilizzando un sistema operativo Windows. Ma che mi dici delle biblioteche che uso? Sto indovinando che ho bisogno di collegarli staticamente su Windows, e che si occuperà del problema delle dipendenze. Ma nella parte posteriore della mia mente ho letto che il collegamento statico non è una buona pratica (o è solo su Linux?)

Come puoi vedere, sono un po 'perso. Gradirei una piccola spinta nella giusta direzione e alcuni riferimenti da leggere se ne sapete!

    
posta jme 22.08.2013 - 05:58
fonte

1 risposta

2

Finché la licenza delle librerie VTK lo consente, potresti scrivere uno script NSIS Installer (che creare un programma di installazione ridistribuibile) che installerà le librerie VTK in modalità non interattiva. Modalità silenziosa (se il programma di installazione VTK ha questa opzione) installerà le librerie senza richiedere all'utente alcun input - questo è il modo in cui la maggior parte degli installatori di videogiochi funzionano (il software richiesto viene installato senza che tu accetti i termini di utilizzo o dove installare esso).

Tuttavia, l'installazione cieca di software aggiuntivi potrebbe lasciarti in una posizione legale precaria. Non sono completamente sicuro della legalità, ma suppongo che tu debba informare l'utente di tutto il software extra che stai per installare sulla loro macchina.

Ad esempio, uno dei programmi di installazione che ho scriptato (per un prodotto su cui lavoro) richiede l'installazione di SQL Server 2005 accanto al file binario. Nello script di installazione, se sul computer dell'utente non è installata la versione richiesta di SQL Server (o versione successiva), viene chiamato il file MSI per SQL Server 2005 (incluso nel programma di installazione NSIS) con l'opzione / q. Questo installa il server SQL con le impostazioni predefinite, e tutto ciò che l'utente vede è il prompt "installazione di SQL Server 2005" che viene generato mentre MSI funziona. Facciamo un punto di informare l'utente su questo, e dando loro la possibilità di installare il nostro software senza di esso.

Potresti essere in grado di creare una marca che creerà tutte le tue librerie per te, quindi chiama lo sviluppatore di script NSIS, ma non ne sono sicuro. Non ho guardato così lontano nella tana del coniglio per NSIS, dato che non stiamo automatizzando le build dell'installatore.

Naturalmente, è possibile sostituire NSIS con qualsiasi altro ambiente di scripting dell'installatore. L'ho usato solo qui come esempio, perché ho un po 'di esperienza con esso.

    
risposta data 23.09.2013 - 12:56
fonte

Leggi altre domande sui tag