Jump to content


This is a ready-only archive of the InstallSite Forum. You cannot post any new content here. / Dies ist ein Archiv des InstallSite Forums. Hier können keine neuen Beiträge veröffentlicht werden.
Photo

DirectX9 wird nicht ausgeführt


5 replies to this topic

Thomas Hübner

Thomas Hübner
  • Full Members
  • 25 posts

Posted 21 July 2009 - 16:20

Ich versuche in meinem Basic MSI Project DirectX9 als InstallShield Object einzubinden. Das klappt auch ganz gut, im Release-Verzeichnis gibt es ein Folder "DirectX9c".

Wenn ich aber die Installation starte, wird der Installer von DirectX nicht aufgerufen. Im Log finde ich dann folgende Meldung:

CODE

MSI (s) (34:4C) [16:40:51:798]: Invoking remote custom action. DLL: C:\Windows\Installer\MSI3D23.tmp, Entrypoint: ISLaunchDX9Installer
:
InstallShield 16:40:51: ....\Release_full\DiskImages\Disk1
InstallShield 16:40:51: Helper DLL Not Found:...\Release_full\DiskImages\Disk1\DirectX9c\DX9Helper.dll
1: DX9_Launcher.A545835B_7768_4D96_A5BC_930949616C2D 2: 1603


Die Datei DX9Helper.dll liegt aber definitiv in dem Verzeichnis DirectX9c. Was kann hier das Problem sein?

Und eine andere Frage: Bekommt mann noch DirectX InstallShield-Objekte von älteren Versionen? Unsere Softeware funktioniert zur Zeit nur mit der Ausgabe Dezember 2005. Und dort ist z.B. die DX9Helper.dll nicht dabei (wird aber trotzdem angemeckert).

Vielen Dank schonmal für die Unterstützung. biggrin.gif

Thomas Hübner

Thomas Hübner
  • Full Members
  • 25 posts

Posted 01 September 2009 - 15:57

Kennt hier niemand eine Lösung?

Ich versuche es mal zu prezesieren: Wenn ich das DirectX als Redistributable definiere und es mit ins MSI packe (also den 1. Haken bei der Configuration heraus nehme), dann werden schön die Dateien ausgepackt und ich sehe auch den Lizenz-Dialog von DirektX. Und es wird auch irgendwie etwas installiert.

Wenn ich aber den Haken setzte, wird ein Verzeichnis DirectX9c im Folder Disk1 angelegt, aber es wird nichts ausgeführt.

Das merke ich daran, dass unsere Anwendung unter Vista im 1.Fall funktioniert und im 2. nicht. Ich weiß, dass bei Vista DirectX 10 dabei ist, trotzdem benötigen wir einige Komponenten, die es nur unter DirectX 9 gibt. Und ein manuelles Aufrufen von DXSetup.exe lösst das Problem, aber so soll es ja nicht sein.

Der Installer soll am Ende (oder wenn erforderlich) das Setup von DirectX aufrufen. Brauche ich dazu undbedingt eine CustomAction? Wenn ja, frage ich mich, warum es die Prerequesties für DirectX gibt, wenn sie nicht installiert werden? Bzw. wie muss die CustomAction aussehen (welcher Typ), da das Setup ja auf dem Installations-Medium liegt und auch dort bleiben soll?

Vielen Dank schon mal im Voraus,
Thomas

Edited by Thomas Hübner, 01 September 2009 - 15:57.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 02 September 2009 - 08:40

Ich habe keine erfahrungen mit dem DX Objekt, aber lass doch mal den ProcessMonitor von SysInternals mitlaufen. Der sollte anzeigen, warum der Zugriff auf die DLL fehlschlägt (ist sie zu dem entscheidenden Zeitpunkt noch nicht da, oder nicht mehr, oder gibt es ein Rechteproblem, ...). Du kannst im Monitor auch sehen, wann die Datei angelegt wird usw.

Thomas Hübner

Thomas Hübner
  • Full Members
  • 25 posts

Posted 02 September 2009 - 11:07

Danke für diesen Tipp. Das hat mir zwar nicht viel gebracht, da ich von den Prozessabläufen unter Windows nicht so viel Ahnung habe.

Aber ich habe die Ursache des Problems gefunden. biggrin.gif Für den Fall, dass andere das selbe Problem haben, schreibe ich es mal hier:

Ich habe die Installation bisher immer über ein Netzwerkshare gestartet. Und das Setup von DirectX wurde nie ausgeführt und ich hatte diese Fehlermeldung im MSI-Log, dass die DX9Helper.dll nicht gefunden werden konnte, obwohl sie genau da ist, wo er sie sucht.

Jetzt hatte ich testhalber die Installation auf die lokale Platte kopiert, und siehe da: Ich bekomme die Eula von DirectX angezeigt und es tut. Das ganze hatte ich zuerst mit einen TestProjekt gemacht, welches nur DirectX installieren soll.

Warum die Installation nicht klappt, wenn ich sie über einen Netzwerkshare starte, weiß ich leider nicht.

Edited by Thomas Hübner, 02 September 2009 - 11:08.


Stefan Krueger

Stefan Krueger

    InstallSite.org

  • Administrators
  • 13,269 posts

Posted 02 September 2009 - 15:18

Ist der Netzwerkshare für den System Account verfügbar? Für deferred Custom Actions schaltet Windows Installer in den System-Account wegen der Rechte.

K0NFUZIUS

K0NFUZIUS
  • Full Members
  • 2 posts

Posted 11 November 2009 - 15:56

Hallo,
falls noch jemand eine Lösung des Problems sucht:
Wie schon von Stefan korrekt vermutet wird die Installation von DirectX über den System Account ausgeführt. Der hat aber leider nur unzureichende Berechtigungen im Netzwerk.
Laut Installshield wurden in der DirectX Custom Action Änderungen durchgeführt um die Kompatibilität mit VISTA zu erhöhen.

siehe auch hier:

Q111936: INFO: Custom Action Fails when Copying a File from a UNC Path
http://kb.flexerasof...ernalId=Q111936

Workaround;

1. Open the DirectX Object Module in Direct Edit mode with InstallShield:
C:\Program Files\InstallShield\2010\Objects\ISDX9.msm

2. Locate the main installer custom action:
DX9_Launcher.A545835B_7768_4D96_A5BC_930949616C2D

3. Change the 'In-Script Execution' from 'Deferred Execution in System Context' to 'Deferred Execution'.

4. Save the module, and rebuild your main project for further testing.


ACHTUNG:
Ich habe das mal unter Vista und Xp getestet, hier gab es keine Probleme. Das liegt aber u.U. daran das mein Setup Adminrechte verlangt. D.h. der Workaround funktioniert wahrscheinlich nicht wenn man nur normale Benutzerrechte voraussetzt.
Installiert ein normaler Nutzer das Setup(Adminrechte benötigt) versucht UAC die Rechte auf Admin level anzupassen. Auch dann funktioniert das DirectX Setup problemlos.

Gruß

Jörg