![]() |
DirectX-Forum - Beitragsübersicht - |
|
Thema | DX9: DirectX und Deployment |
Von |
Cheaterhater |
Datum |
10. Juni 2010 um 21:42:12 |
Frage |
Hallo, ich bins mal wieder...
Ich hatte vor ca. einer Woche ein Spiel fertig programmiert. Das Spiel benutzt die DirectX-Komponenten Direct3D, Direct3DX, DirectInput und DirectSound. Da ich das Spiel auch an andere Leute verteilen möchte, habe ich der Projektmappe ein Setup-Projekt hinzugefügt. Visual Studio hat alle Abhängigkeiten korrekt erkannt und kopiert neben der .exe-Datei noch folgende Dateien ins Ausgabeverzeichnis: Microsoft.DirectX.Direct3D.dll Microsoft.DirectX.Direct3DX.dll Microsoft.DirectX.DirectInput.dll Microsoft.DirectX.DirectSound.dll Microsoft.DirectX.dll Andere Assemblies, die benutzt werden, sind System, System.Drawing, System.Windows.Forms und System.XML.
Bei einigen Personen lässt sich das Programm nach der Installation problemlos ausführen, bei anderen jedoch nicht. Anzumerken ist, dass ich für das gleiche Programm früher eine ClickOnce-Installation gemacht hatte, die problemlos funktionierte (auch bei Leuten, bie denen die aktuelle Version nicht funktioniert). Bei den Menschen, bei denen das ganze nicht so wie vorgesehen funktioniert, gibt es beim Starten der .exe folgenden Fehler: System.IO.FileNotFoundException: Das angegebene Modul wurde nicht gefunden. (Ausnahme von HRESULT: 0x8007007E) bei Snyke.frmSnyke.frmSnyke_Load(Object sender, EventArgs e) bei System.Windows.Forms.Form.OnLoad(EventArgs e) bei System.Windows.Forms.Form.OnCreateControl() bei System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible) bei System.Windows.Forms.Control.CreateControl() bei System.Windows.Forms.Control.WmShowWindow(Message& m) bei System.Windows.Forms.Control.WndProc(Message& m) bei System.Windows.Forms.ScrollableControl.WndProc(Message& m) bei System.Windows.Forms.ContainerControl.WndProc(Message& m) bei System.Windows.Forms.Form.WmShowWindow(Message& m) bei System.Windows.Forms.Form.WndProc(Message& m) bei System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m) bei System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m) bei System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)
Der Fehler tritt nicht in meinem Code auf, d. h. ich kann ihn nicht abfangen. Die Fehlermeldung ist auch nicht mit der Fehlermeldung, die erscheint, wenn eine Assembly fehlt, identisch. Da sieht der Fehlertext anders aus.
Nun ist also die Frage: Was mach ich da falsch? Wie habe ich mit DirectX umzugehen, damit das Programm nach der Installation korrekt funktioniert? Ich benutze das Visual Studio 2010 Professional, und auf allen Zielcomputern war DirectX 9.0c installiert. Diejenigen, bei denen das Programm anstandslos funktionierte, waen vornehmlich die Personen, die das Programm vorher schon einmal (mit der ClickOnce-Veröffentlichung) gehabt haben oder ebenfalls Visual Studio installiert haben.
Ich hoffe auf Antworten und bedanke mich im Voraus  |
|
Antwort: |
Von |
mdx |
E-Mail |
mdx@vb-fun.de |
Datum |
16. Juni 2010 um 18:01:19 |
Antwort |
Ich verstehe die ganze Problematik nicht ganz. Vielleicht sind auf dem Zielsystem einfach keine ManagedDX Komponenten installiert. Und ich weiß nicht ob ein Zielrechner mit Vista oder Win7, also DX10 Oder DX11 überhaupt noch ManagedDX integriert hat. In er SDK ist's noch vorhanden aber ob's im Redist drinne ist glaub ich nicht, da MDX tod ist.
Zu SlimDX gibts nichts zu sagen, der Zielrechner braucht nur die passender Runtimeinstallation, das wars... Ich würde dein Game mit einem separaten Setup ausstatten und beim Setup auf die Runtimeinstallation von SlimDX verweisen, oder als extra Setup beigeben.
Zum Coden kannst du auf die Runtime Verweisen, die unter NET - Componenten erscheinen sollte, oder direkt auf die DLL im Zielverzeichnis. Da es eine NET-Komponente ist, ist es wurscht wo die sich auf dem Zielrechner befindet, weil die Runtimeversion im Global Assembly Cache (GAC) registriert wird.
Gruß MDX |
|
[ Antwort schreiben | Zurück zum DirectX-Forum | Forum-Hilfe ] |
|
Letzte Aktualisierung: Sonntag, 13. Dezember 2015 |
|