2012-04-06 10 views
8

Ho cercato di distribuire un'applicazione C# su un computer su cui non è installato .NET.Creazione di un'applicazione .NET che verrà eseguita su un computer senza .NET

So che ci sono state molte domande sullo stesso argomento qui su StackOverflow. Qui ci sono alcuni di loro, di cui ho letto le risposte a tutti:

Packaging up the .net framework with a .net application deployment

Run a .net application without installing .net client profile?

Run C# windows application in windows XP without installing .NET Framework

Quindi, tutte le risposte alle domande di cui sopra affermano che è impossibile senza software specifico, ecc. Un software menzionato era il Salamander .NET Linker. L'unico problema è che non riesco a essere in grado di eseguire l'applicazione dopo che è stata elaborata da Salamender. Capisco che questo di per sé è impossibile, in quanto richiede l'esecuzione della macchina virtuale .NET. Tuttavia, in passato, ho creato applicazioni Java e insieme a loro ho spedito l'intera JVM. Sorprendentemente, hanno ancora funzionato. Quindi il motivo per cui questo non è un duplicato delle domande di cui sopra è perché la mia vera domanda è:

Quali elementi del framework .NET avrei bisogno di impacchettare? Se riesco a pacchettizzare tutto, inserirli nella stessa directory dell'applicazione che sto eseguendo consente l'esecuzione dell'applicazione?

Ho trovato una soluzione, lo Microsoft .NET Redist Package. L'unico problema con questo è che ha una GUI a sé stante. A parte questo, sarebbe perfetto. Quindi qualcuno potrebbe dirmi una di queste due cose:

Esiste un pacchetto .NET da riga di comando e, in caso affermativo, dove lo scarico?

Se non c'è o non sarebbe pratico farlo, approssimativamente quali directory dovrei copiare dalle installazioni .NET?

Capisco che questi file e directory sono specifici del sistema e che la mia installazione .NET potrebbe non funzionare sul tuo computer, ma se C# è come Java, allora dovrebbe essere possibile. È? La dimensione non è un limite, non mi importa se l'applicazione e tutti i suoi file sono 1 GB o se è solo 1 MB.

Se nel caso non ci fosse altra soluzione, ho usato Dependency Walker per verificare tutte le dipendenze del mio programma. Se dovessi confezionarne la maggior parte, la mia applicazione, in teoria, funzionerebbe?

+0

Questi collegamenti statici sono una pessima idea. La tua applicazione non trarrà vantaggio dalle correzioni sulla sicurezza e da altri miglioramenti (ala Windows Update). –

risposta

12

Per .NET, è davvero necessario installare il framework .NET appropriato. L'installazione di .NET framework include le opzioni della riga di comando per consentire installazioni invisibili, come ad esempio:

dotnetfx35.exe /q /norestart 

Per dettagli sulle opzioni della riga di comando, vedere la options for 3.5 e per .NET 4.0.

Detto questo, la maggior parte dei pacchetti di installazione gestirà questi dettagli come parte dell'installazione. L'uso di un installatore decente si prenderà cura di questa dipendenza automaticamente.

+0

Funziona perfettamente! Grazie per l'aiuto! – Xyene

+0

C'è qualche comando per farlo mostrare quanto è stato installato, in un formato come una percentuale, o l'estrazione di file corrente ... ecc.? Ho controllato le opzioni per il collegamento 3.5 che hai pubblicato, ma non ho trovato nulla tra quelle righe. – Xyene

+0

Prima non vuoi una GUI e ora lo fai? –

8

A seconda dei componenti di .NET Framework necessari, è possibile utilizzare Mono.Supporta la spedizione del runtime senza installare proprio come faresti con una JVM, oppure puoi collegarti staticamente ai binari per creare un eseguibile nativo.

2

Se si prevede di distribuire l'applicazione (e presumendo che il processo di installazione non debba essere troppo complesso), è sufficiente creare un Setup project in Visual Studio e quindi eseguire il bootstrap dei prerequisiti (.NET framework e altre cose che si ritiene potrebbe essere necessario).

È possibile seguire la procedura descritta in questi articoli MSDN:

Una guida è dato in this CodeProject article.

Per scenari di distribuzione più complessi (come l'installazione di driver di dispositivo lungo l'app o un migliore supporto di localizzazione), consiglierei di esaminare WiX (Windows Installer XML) toolset. È un set di strumenti che crea pacchetti di installazione di Windows, che puoi configurare utilizzando i file XML all'interno di Visual Studio. WiX supporta anche vari bootstrapping scenarios.

This page copre le differenze tra i progetti di installazione VS, WiX e InstallShield.

Problemi correlati