2017-03-07 2 views
0

Ich verwende WiX, um eine 64-Bit-Anwendung zu installieren. Ich habe herausgefunden, wie ein 64 bit installer zu machen, aber ich habe Probleme, herauszufinden, wie mein DLLs registrieren wir installieren, damit ich nichtSo registrieren Sie manuell eine 64-Bit-DLL mit WiX

"Program can't start because XXXX.dll is missing from your computer. 
Try reinstalling the program to fix this problem" 

Fehler erhalte.

Ich habe versucht, verwenden, um die erforderlichen RegistryValue Tags zu erstellen, aber es ist nicht kompatibel mit 64-Bit-DLLs. Ich kompilierte einige der DLLs in 32 Bit (nicht alle sind mir in 32 Bit zur Verfügung), aber ich konnte immer noch nicht heat.exe zu arbeiten. Mit Blick auf this WiX help article scheint es, dass ich in der Lage sein sollte, die RegistryValue Tags manuell zu komponieren, aber ich bin verwirrt darüber, was sie enthalten sollten. Ich habe mir das Beispiel here angesehen und es ist viel komplizierter als das im WiX-Artikel.

Was RegistryValue Tags muss ich eine DLL mit dem Betriebssystem registrieren, so dass es auf dem Pfad gefunden werden kann?

EDIT: Zusätzlicher Kontext.

Ich versuche, ein SDK und einige Beispielquellcode zu installieren. Ich setze das SDK (DLLs, .libs und -Headers) in einen Ordner in \ Programme und stelle den Beispiel-Quellcode in einen Ordner auf dem Desktop. Ich habe die Lib-Verzeichnisse auf% LIBPATH%, die Include-Verzeichnisse auf% INCLUDE% und die Bin (DLL) -Verzeichnisse auf% PATH%.

Dann habe ich einen Ordner auf dem Desktop mit einer VS-Lösung für den Beispielcode. In der Lösung gebe ich% LIBPATH% in den Feldern Additional Library Directories und% INCLUDE% in den Feldern Additional Include Directories der VS-Projekte an. Das funktioniert gut und die Lösung wird aufgebaut. Aber wenn ich versuche, es zu starten, bekomme ich den Fehler "DLL fehlt von Ihrem Computer". Ich würde gerne herausfinden, wie man die SDK-DLLs auffindbar machen kann (ob auf% PATH% oder nicht), so dass der Benutzer einfach den Demo-Code erstellen und ausführen kann, ohne die DLLs kopieren zu müssen, und so das Gleiche wird für alle anderen Anwendungen gelten, die sie erstellen.

EDIT 2: Ich stimme zum Schließen der Frage. Es scheint, als ob das Registrieren einer DLL mit WiX für mein tatsächliches Problem nicht relevant ist.

+0

Sie können einfach 'SelfRegCost =" 1 "' zu dem ['File'] (http://wixtoolset.org/documentation/manual/v3/xsd/wix/file.html) Element jeder DLL hinzufügen. – zett42

+0

Ich habe das versucht und die Registrierung ist fehlgeschlagen. Auch scheint es so [ist nicht beste Praxis] (http://stackoverflow.com/questions/364187/how-do-you-register-a-win32-com-dll-file-in-wix-3) . – stranger

Antwort

1

Sie verwechseln zwei Dinge hier. "Registrierung" ist eine COM-Aktivität, aber "XXXX.dll fehlt" zeigt eine normale Nicht-COM-DLL an.

Ihre Referenz auf %PATH% weist auch auf eine Nicht-COM-DLL hin, aber %PATH% sollte nicht erforderlich sein. Installieren Sie stattdessen Ihre DLL neben Ihrer ausführbaren Datei.

In der Theorie gibt es auch das Application Manifest, aber Microsoft hat ein völliges Durcheinander gemacht. Wenn Sie irgendeine gewöhnliche Anwendung schreiben, würde ich sie ganz vermeiden.

+0

Vielen Dank für Ihre Erklärung. Ich habe die Frage bearbeitet, um einen Kontext dafür anzugeben, warum ich die DLLs nicht wie vorgeschlagen in den EXE-Ordner stellen kann. – stranger

Verwandte Themen