2016-05-06 1 views
2

Ich habe eine WPF-Anwendung, die ich als Standalone bereitstellen möchte, so dass ein Benutzer es von einer Website herunterladen und ohne es ausführen kann es installieren.Mein EXE läuft gut, wenn es den Rest des Debug-Ordners zur Verfügung hat, aber nicht Standalone

Es läuft gut (von jeder Maschine), solange sie alle Dateien im Debug-Ordner mit ihm hat:

enter image description here

Wenn ich versuche zu laufen, ohne dass die anderen Dateien nur die EXE-Datei, wenn stürzt ab. Gibt es eine Möglichkeit, diese Dateien in die EXE zu straffen, sodass sie eigenständig ausgeführt werden kann?

(Es gibt ein Hintergrundbild auf dem Formular, aber dies ist auf Build Action = Resource festgelegt, so dass ich glaube nicht, dass das das Problem ist. Auch das Bild muss nicht auf den anderen Computer kopiert werden . laufen, nur die Dateien, die oben dargestellt) die Fehler aus dem Ereignisprotokoll sind:

Faulting application name: AMBootstrapper.exe, version: 1.0.0.0, time stamp: 0x572caffc 
Faulting module name: KERNELBASE.dll, version: 10.0.10586.162, time stamp: 0x56cd55ab 
Exception code: 0xe0434352 

und:

Framework Version: v4.0.30319 
Description: The process was terminated due to an unhandled exception. 

EDIT: Nach mehr Tests ich die meisten Dateien entfernen können, aber das eine Ich kann nicht ist AMBootStrapper.exe.config

+2

Welche Fehler es mit nicht abstürzen? Überprüfen Sie Ihr Windows-Ereignisprotokoll und [bearbeiten Sie Ihre Frage] (http://stackoverflow.com/posts/37075367/edit) mit der Ausgabe der Fehlerinformationen –

+1

Sind Sie sicher, dass das die minimale Menge von Dateien ist, die es benötigt? Ich hätte gedacht, dass die einzige, die es möglicherweise nicht ausführen würde die erste Konfiguration wäre (vorausgesetzt, Sie führen die erste exe) –

+0

Gut zu denken @ScottChamberlain - Hinzufügen der Frage jetzt – Ben

Antwort

1

Laut @BenJackson war das Problem, dass die WCF-Dienstdetails in der App-Konfiguration waren.

Lösung war dies von app.config zu entfernen:

<system.serviceModel> 
    <bindings> 
     <wsHttpBinding> 
      <binding name="WSHttpBinding_IService" allowCookies="true" maxReceivedMessageSize="184320" maxBufferPoolSize="184320" > 
       <security mode="Transport"> 
        <transport clientCredentialType="None" /> 
       </security> 
      </binding> 
     </wsHttpBinding> 
    </bindings> 
    <client> 
     <endpoint address="https://svc.myserver.com/MyService/Service.svc/Service.svc" 
      binding="wsHttpBinding" bindingConfiguration="WSHttpBinding_IService" 
      contract="MyService.IService" name="WSHttpBinding_IService" /> 
    </client> 
</system.serviceModel> 

Und in Code mit diesem ersetzen:

WSHttpBinding binding = new WSHttpBinding(); 
binding.AllowCookies = true; 
binding.MaxBufferPoolSize = 184320; 
binding.MaxReceivedMessageSize = 183420; 
binding.Security.Mode = SecurityMode.Transport; 

EndpointAddress address = new EndpointAddress("https://svc.myserver.com/MyService/Service.svc/Service.svc"); 

MyService.MyClient c = new MyService.MyClient(binding, address); 
Verwandte Themen