exe auf anderen Computern ausführen geht nicht



  • Oh, das könnte sein. Aber wo kann ich das ändern? Sorry für die blöden Fragen, aber ich steh noch recht am Anfang. Das Programm hab ich geschrieben, aber bei so Sachen haperts.

    Edit: Grad gefunden. Aber 3.5 ist eingestellt!

    Edit: Na irgendwie muss das doch gehen. Net 3.5 installiert...das vcX86 Dings da auch....fehlen wohl noch irgendwelche DLLS. Gibts bei CLI keine Möglichkeit die benötigten DLLs direkt in die Exe zu packen?



  • Wie ist denn die Fehlermeldung auf dem Rechner? Vlt etwas wie: "Die Anwendung ist nicht korrekt installiert..."

    Dann würde ich dir empfehlen ein Setup Projekt zu erstellen (geht nicht mit der Express Version) und neben der .exe Datei auch die Abhängigkeiten mit zu installieren. Unter hinzufügen die Merge Module VC80Crt und openMp samt policies in das Setup integrieren. Seitdem ich alle meine Anwendungen mit entsprechendem Setup versehe, gibts keine Probleme mehr.

    PS Bei Updates des VS bzw .Net werden teilweise auch die Module aktualisiert.

    Viel Erfolg!



  • Danke für die Antwort! Das ist genau die Fehlermeldung.

    Aber wenn man so ein Setup-Programm nicht mit der Express Version erstellen kann...wie dann? Und welche Abhängigkeiten sind das? Ich bin in einem anderen Thread drauf gestoßen, dass folgende Dateien zusammen im Ordner mit der exe liegen müssen:

    MSVCP80.DLL
    MSVCR80.DLL
    MSVCM80.DLL

    Auch damit funktioniert nix. Ich weiß halt nicht, welche Abhängigkeiten da mitgeliefert werden müssen.



  • Also mit pro gehts, die Standard tuts aber glaub ich auch.



  • als BUILD compilieren!

    und .NET installieren mehr brauchts nicht, wenn man eine .net anwendung schreibt. extra dlls muss man nur liefern wenn man bestimme komponenten in seinem program benutzt, wie z.b. mysqlconnect oder sowas



  • Und wie compiliere ich als BUILD? Hab das noch nie gemacht. 😕



  • Ich sitz jetzt seit 9 Stunden an diesem Problem. Im Netz hab ich viele Seiten gefunden, wo Leute dasselbe Problem schildern. Ich hab bald das Gefühl, dass das gar nicht möglich ist. Wie kann es denn sein, dass so etwas so dermaßen kompliziert sein kann, obwohl es ganz einfach sein müsste. Wieso? Ich will doch nur ein Programm programmieren und auf nem anderen Computer laufen lassen. Hab sogar vcredist_x86 installiert auf dem anderen Computer, aber es geht immer noch nicht. Egal was ich mache...nichts tut sich. Und da andere noch dieselben Probleme haben, frage ich mich, weshalb gibts für solche Fälle nicht ne einfache Lösung?? Liegt das an Microsoft? Nein, ich verstehs nicht mehr. Da ich leider nicht weiß, wie man Setup-Programme erstellt, komm ich auch keinen Schritt weiter. Hab ich am Ende ein Programm gebastelt und kanns nur bei mir benutzen?



  • Euler schrieb:

    Ich sitz jetzt seit 9 Stunden an diesem Problem. Im Netz hab ich viele Seiten gefunden, wo Leute dasselbe Problem schildern. Ich hab bald das Gefühl, dass das gar nicht möglich ist. Wie kann es denn sein, dass so etwas so dermaßen kompliziert sein kann, obwohl es ganz einfach sein müsste. Wieso? Ich will doch nur ein Programm programmieren und auf nem anderen Computer laufen lassen. Hab sogar vcredist_x86 installiert auf dem anderen Computer, aber es geht immer noch nicht. Egal was ich mache...nichts tut sich. Und da andere noch dieselben Probleme haben, frage ich mich, weshalb gibts für solche Fälle nicht ne einfache Lösung?? Liegt das an Microsoft? Nein, ich verstehs nicht mehr. Da ich leider nicht weiß, wie man Setup-Programme erstellt, komm ich auch keinen Schritt weiter. Hab ich am Ende ein Programm gebastelt und kanns nur bei mir benutzen?

    1. Es ist möglich
    2. Es liegt nicht an MS, sondern an dem der einfach zu wenig weiss
    3. Es geht auch ohne Setup Programm und meiner Meinung nach, ist das erstmal nicht die Lösung, sondern das Problem verstehen ist die Lösung.

    Kann sein, dass das die VC++ Runtime (vcredist) nicht passt?

    Für dich dürften die zwei VC++ Runtimes in Frage kommen:
    VC++ Runtime 2008: http://www.microsoft.com/DOWNLOADS/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf&displaylang=en
    VC++ Runtime 2008, SP1: http://www.microsoft.com/DOWNLOADS/details.aspx?familyid=A5C84275-3B97-4AB7-A40D-3802B2AF5FC2&displaylang=en

    Du kannst rausfinden, welches ist installiert und entscheiden ob das das richtige ist oder einfach beide installieren und sehen was passiert.

    Bei dem .NET Framework gibts auch noch SP's.

    Simon



  • Erstmal danke für die Antwort. Zu den einzelnen Punkten möchte ich aber noch was sagen.

    zu 1) Ja, ist es. Letzte Nacht so gegen 4 hab ich das ganze mit einem Setup-Programm gelöst.

    zu 2) Ja, ich weiß zu wenig. Aber wenn ich mir diesen Thread (http://social.msdn.microsoft.com/forums/en-US/vcgeneral/thread/66bc8cab-c134-49a8-85e5-37ca9efbdeb4/) durchlese, dann seh ich schon, dass auch professionellere Programmierer sich schon die Zähne dran ausgebissen haben. Gut, die haben die 2005er Version gehabt, aber bei der 08er ists ja auch nicht anders, mal abgesehen von den anderen Dateinamen.
    Sämtliche Lösungen die dort angegeben wurden, haben bei mir nicht funktioniert

    zu 3) Ich weiß, dass es zu dem vcredist mehrere Versionen gibt. Ich hab auf nem Zielrechner sogar 3 verschiedene ausprobiert, darunter auch die, die du angegeben hast. Und keine hat funktioniert. Das SP1 müsste eigentlich das richtige sein. Aber ohne Setup-Programm gings leider nicht. Und genau das meinte ich mit "kompliziert" in meinem letzten Beitrag.
    Als ich früher noch mit Visual Basic rumgemacht hab, da ging alles einfacher (also jetzt mal nicht die Sprache, sondern die Entwicklungsumgebung betrachtet). Und auf einmal stößt man auf Probleme, nach denen man in den hintersten Winkeln des Internets suchen muss 😉

    Jedenfalls....der Vorschlag von Dappeljuh hat funktioniert. Mir scheint, als hätte er dieselben Probleme gehabt wir ich.



  • oh sry hab mich gestern nacht etwas verschrieben 🙂

    meinte als "RELEASE" compelieren, sry 🙂

    einfach unter Build-> Batch... -> release anklicken und compelieren fertig. oder halt über die projekt eingeschaften, sollte dort auch irgendwo gehen

    probiers mal, ne unnötige setup routine brauchst du nicht!

    und was evtl. dlls angeht, wenn du dich im standart namespace bewegst brauchst du wiegesagt nichts mitliefern, das macht alles das .net framework von ms was du ja eh installieren musst. Wenn du doch ne dll mit liefern willst kannst du unter den projekt eigenschaften nachshcauen welche dlls dein projekt verlangt und diese "lokal" mit in den build(realease) ordner kopieren lassen



  • Hier sind mal meine verwendeten Namespaces:

    using namespace System;
    using namespace System::ComponentModel;
    using namespace System::Collections;
    using namespace System::Windows::Forms;
    using namespace System::Data;
    using namespace System::Drawing;
    using namespace System::IO;
    using namespace System::Text;

    Als Release hab ich schon kompiliert. Aber hat halt nix gebracht.
    Ich hab den Dependency Walker, um zu sehen, welche DLLs das Programm benötigt. Das waren recht viele. Hab die auch auf dem Zielcomputer verteilt, aber trotzdem ging nix ohne Setup.



  • Ab VC++ Runtime 2005 gibts Manifeste und da müssen, falls Side By Side Assemblies verwendet werden, gewisse Ordner Strukturen eingehalten werden.
    Also einfach so mal die DLL's verteilen geht nicht.

    simon



  • mal ne andere frage ist das system auf dem das prog laufen soll UPTDATE ? also windows update auf dem neusten stand?

    Das Setup macht ja nichts anderes als zu prüfen ob alles was nötig ist für das Programm installier ist, also in der regel ob .net installiert ist. Ist es das nicht wird es direkt vom Installer installiert.



  • @Euler: Ja, ich hab das gleiche Problem gehabt. Es liegt, wie schon erwähnt, an den regelmässigen .net und VS updates. Auch wenn der Zielrechner auf dem neuesten Stand ist (Win Updates, .Net Updates, VC Redist) tritt das Problem immer wieder auf. Mit meinem Setup Tipp wird die gleiche VC++ Runtime installiert wie auf deinem Entwicklungsrechner. Windows Update installiert schliesslich auch nicht alle Updates automatisch. Viele sollten nur bei Bedarf nachinstalliert werden.

    @Theta:

    3. Es geht auch ohne Setup Programm und meiner Meinung nach, ist das erstmal nicht die Lösung, sondern das Problem verstehen ist die Lösung.

    Meiner Meinung nach ist das die Lösung. Ich habe meist keine Lust diverse Updates für andere Leute zu installieren und bringe so alles erforderliche mit... 😉



  • Ich bin einfach der Meinung, dass zumindest der Entwickler wissen muss, was genau benötigt wird an Runtimes. Wenn ers dann weiss ist ein Setup ev. angebracht.

    Simon


Anmelden zum Antworten