Frage

Ich habe versucht, eine beste Fall Lösung zu bestimmen, die für einen COM-Server WiX Registrierung unter Verwendung ein Windows Installer-Paket zu erstellen und ist zu kämpfen.

In diesem Beitrag Deployment Technik Archiv: HOWTO: verwenden Sie Regsvr32.exe mit WIX , gibt es eine offene Anforderung für die „Setup Polizei“ zu knacken auf regsvr32 durch eine exe-Aktion verwenden. Ich weiß, dass die Übel der Verwendung regsvr32 wie es dem System registriert, anstatt den Benutzer, aber ich erinnere mich auch, dass OleSelfRegister Probleme von Microsoft Support-Bulletin haben kann (sorry, kann nicht finden den Link) - und ich glaube, sie empfohlen regsvr32 mit .

Jede Beratung?

War es hilfreich?

Lösung

Lesen Sie bei "Nicht die SelfReg und TypeLib Tabellen verwenden":

https://msdn.microsoft.com/en-us/library / bb204770 # no_selfreg

Für WiX, werfen Sie einen Blick auf die Komponente Element im Schema Referenz an:

http://wixtoolset.org/documentation/manual/v3 /xsd/wix/component.html

Beachten Sie bestimmte untergeordnete Elemente wie AppId Klasse ProgId Registry und so weiter. Die richtige Technik ist COM extraction zu verwenden, um die Registrierungsinformationen zu reflektieren und es deklarativ in Ihrem Installateur emittieren so MSI um ihm für Sie nehmen können, ohne auf einige Code aus Prozess geht (wie DllRegisterServer()), die ausfallen könnten und MSI bietet auch nicht Einblick in die Grundfläche des Bauteils aus einer Reparatur und Werbung Perspektive.

Andere Tipps

Es ist ein Werkzeug „Schmiere“ enthalten mit Wix. Sie können es verwenden, um automatisch zu korrigieren Registry-Einträge zu erzeugen. Dann konfigurieren Sie einfach Ihre Wix-Installation die Einträge zu schreiben. SelfReg sollte nicht verwendet werden.

Wie @Trampster erwähnt, hat heat.exe keine gute Arbeit des Erntens Registry-Einträge von COM-Server tun. Ich habe versucht, aber die Ergebnisse waren unvollständig.

Stattdessen nach den Anweisungen unter Monitor Registry Zugriffe (Install Werkzeuge: Monitoring) , benutzte ich Install RegSpyUI. Diese angeblich Schiffe mit Versionen von Installshield v7 und darüber hinaus, einschließlich der Evaluierungsversion. Diese Informationen können veraltet sein; Ich kann bestätigen, dass es nicht mit dem ziemlich viel nutzlos Install LE geliefert, die mit VS2013 kommt.

Zum Glück habe ich eine Kopie von Installshield 2010 haben und diese mit RegSpyUI kam.

Wie auch immer, war RegSpyUI ein Kinderspiel zu verwenden: es an dem COM-EXE-Punkt, die Registrierung Informationen zu einer REG-Datei zu extrahieren. Dann Wärme verwenden, um dies in eine .wxs Datei ernten Sie Ihr Wix Projekt hinzufügen kann

heat reg <some.reg> -gg -o <some.wxs>

Dann ist es nur eine Frage der alle hart codierte Pfade ändern, die auf den COM-EXE-Standort verweisen, so dass sie den beabsichtigten Installationsordner reflektieren.

z. wenn die .wxs Datei von RegSpyUI erstellt + Wärme so etwas wie dieses hat

<Fragment>
    <DirectoryRef Id="TARGETDIR">
        <Component Id="blah" Guid="{xxxxxxxxxxxxxxxxxxxxxxxxx}" KeyPath="yes">
            <RegistryKey Key="TypeLib\{xxxxxxxxxxxxxxxxxxxxxx}\4.1\0\win32" Root="HKCR">
                <RegistryValue Value="C:\Users\you\projects\MyProject\dependencies\installation\COMFOO.exe" Type="string" />
            </RegistryKey>
        </Component>
    </DirectoryRef>
</Fragment>

und Sie sind in Ihrer Haupt-Wix-Datei

Installation
<Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder" Name="PFiles">
            <Directory Id="COMPANY" Name="My Company">
                <!--This is the actual installation folder-->
                <Directory Name="MyProduct" Id="MYPRODUCT">

bearbeiten Sie dann einfach den Registry @ value Pfad ... "[MYPRODUCT]\COMFOO.exe"

Es gibt nur einen Nachteil dabei: WiX Com Anmeldung mit heat.exe nicht für EXE-COM-Server funktioniert. Installshield und seine Werkzeuge scheinen es zu unterstützen, aber RegSpyUI ist nur ein UI-Tool, nicht eine, die ich auf dem Build-Rechner ausgeführt werden kann.

Versuchen Sie folgendes:

  1. Erstellen Sie ein neues .NET-Projekt
  2. Fügen Sie einen Projektverweis auf den Kandidaten COM-DLL oder OOP exe, deren wxs Sie
  3. sammeln
  4. Suchen Sie die Datei Interop.candidate.dll (im obj\debug Ordner)
  5. Führen Sie das WiX Wärme-Tool auf dem Interop-DLL gefunden einfach.
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top