2014-07-09 18 views
6

Ho un progetto WPF che sto tentando di pubblicare senza alcuna forma di programma di installazione. Fondamentalmente voglio che il programma sia compilato in una directory con tutti i file necessari accanto, in modo da poter comprimere tutto e distribuire il programma sui client.Pubblicazione di Visual Studio 2013 senza programma di installazione

Idealmente, desidero che tutte le risorse esterne siano compilate nell'EXE.

C'è un modo per farlo? Se vado nella cartella debug/bin, sulla mia workstation, posso eseguire l'EXE, ma se lo faccio zip con la DLL e provo a farlo su un'altra macchina si blocca, probabilmente la mancanza di un file è la mia ipotesi. (se pubblico con l'installer funziona, ma non è adatto a questo progetto).

grazie Steve

modificare: Quando eseguo il programma (che ho copiato dalla directory Bin dopo una build successufull), non succede nulla, solo il messaggio "programma ha smesso di funzionare". Il mio programma utilizza 3 file esterni, un'icona, un'immagine e un font. Ho un riferimento a DLL (WPFtoolkit), ho aggiunto quella DLL a una directory nel mio solution explorer. Tutti i file sono impostati su Risorsa incorporata e "Non copiare". Ho anche aggiunto questo codice al mio programma, sempre lo stesso errore. http://codeblog.larsholm.net/2011/06/embed-dlls-easily-in-a-net-assembly/ la dimensione del mio EXE è corretta, posso vedere che la DLL è stata "aggiunta" ad essa. ancora il programma funziona solo sulla mia workstation :(

edit:

Devo tenere la DLL nei riferimenti La mia ipotesi è no, ma se lo faccio, ottengo un errore quando chiamo la mia:?

using Microsoft.Windows.Controls; 

se io non lo chiamo, il programma viene compilato, ma si blocca vedi seguente messaggio di errore:.

Problem signature: 
    Problem Event Name: CLR20r3 
    Problem Signature 01: sw imperium.exe 
    Problem Signature 02: 1.0.0.0 
    Problem Signature 03: 53bdd468 
    Problem Signature 04: PresentationFramework 
    Problem Signature 05: 4.0.30319.18408 
    Problem Signature 06: 52312f13 
    Problem Signature 07: a19 
    Problem Signature 08: 46 
    Problem Signature 09: System.Windows.Markup.XamlParse 
    OS Version: 6.1.7601.2.1.0.256.1 
    Locale ID: 1033 
    Additional Information 1: 0a9e 
    Additional Information 2: 0a9e372d3b4ad19135b953a78882e789 
    Additional Information 3: 0a9e 
    Additional Information 4: 0a9e372d3b4ad19135b953a78882e789 
+0

** Che cosa si intende per * * incidente? Il messaggio di errore effettivo può aiutare a diagnosticare **. Stai cercando di eseguire l'eseguibile direttamente dallo zip? Il computer di destinazione ha impostato il framework .Net corretto? –

+0

Sì, il client ha installato .NET.Quando eseguo il programma, non succede niente, solo il messaggio "il programma ha smesso di funzionare". Il mio programma utilizza 3 file esterni, un'icona, un'immagine e un font. Ho un riferimento a DLL (WPFtoolkit), ho aggiunto quella DLL a una directory nel mio solution explorer. Tutti i file sono impostati su Risorsa incorporata e "Non copiare". Ho anche aggiunto questo codice al mio programma, sempre lo stesso errore. http://codeblog.larsholm.net/2011/06/embed-dlls-easily-in-a-net-assembly/ – user3617652

+0

Avete accesso a un'altra macchina con VS 2013 installato e ambiente simile al client? Proverei a copiare il codice su una macchina diversa con il codice e poi ** allega un debugger mentre provi ad eseguire la build dell'applicazione dalla tua macchina reale **. Quando l'applicazione si interrompe, ti indirizzerebbe alla linea attuale in cui si sta rompendo. – Sandesh

risposta

1

è il toolkit installato sul vostro PC (dove visual Studio è) nella GAC ​​tutti? file che non sono inclusi in quanto una risorsa incorporata dovrebbe essere copia locale (nel qual caso la build copierà quei file nella cartella bin.

Per isolare il problema e ottenere un messaggio di errore migliore spostare il codice su un PC non sviluppatore e abilitare il registratore di fusione a trovare gli assembly che il programma di caricamento non è in grado di trovare.

Vedi questo link su ulteriori informazioni sulla loader (fusione) logger How to enable assembly bind failure logging (Fusion) in .NET

considerare l'aggiunta di un po 'di codice di registrazione degli errori aggiuntivo per l'avvio applicazione, vedere .NET application cannot start and receive XamlParseException

+1

Sì, il toolkit è installato sul computer dello sviluppatore. Come ho detto, se pubblico il progetto, che crea un programma di installazione, posso distribuire senza problemi. Installa bene e il programma funziona altrettanto bene. – user3617652

+1

se il programma di installazione funziona correttamente, utilizzare quanto segue per estrarre i file dal programma di installazione per vedere quale file si manca. dovresti comunque utilizzare un programma di installazione. msiexec/a PathToMSIFile/qb TARGETDIR = DirectoryToExtractTo –

1

Si potrebbe voler passare attraverso l'articolo this per vedere eventuali dipendenze mancanti e profilo dell'applicazione.

PS: Se doesnt aiuta, prova ad aggiungere ulteriori informazioni nel codice di esempio questionlike e/o binario

Problemi correlati