Frage

Wenn meine Anwendung deinstalliert wird, muss der Server benachrichtigt werden, so dass es den Lizenzschlüssel an den Client zugewiesen befreien kann. Dies wird über einen Web-Service-Aufruf erfolgt.

Ich habe eine C # benutzerdefinierte Aktion, die dies tut. Das Problem ist, verläßt das Deinstallationsprogramm sagen, dass es könnte nicht eine dll finden.

Das Fehlerprotokoll für die msi enthält die folgenden Fehler:

  

Fehler 1723. Es ist ein Problem mit   dieses Windows Installer-Paket. Eine DLL   erforderlich für diese Installation abzuschließen   kann nicht ausgeführt werden. Kontaktieren Sie Ihre Unterstützung   Personal oder den Hersteller des Pakets. Aktion   ReadLicenseKeyFromFile, Eintrag:   ReadLicenseKey, Bibliothek:   C: \ Windows \ Installer \ MSI4F42.tmp

Ich habe die Funktion ReadLicenseKey als benutzerdefinierte Aktion markiert. Die benutzerdefinierte Aktion wird ReadLicenseKeyFromFile genannt.

<Custom Action="ReadLicenseKeyFromFile" After="InstallInitialize">
    REMOVE~="ALL" AND NOT UPGRADINGPRODUCTCODE
</Custom>

<CustomAction Id="ReadLicenseKeyFromFile" BinaryKey="UnInstallCA.CA.dll" DllEntry="ReadLicenseKey" Execute="immediate" Return="check" />

<Binary Id="UnInstallCA.CA.dll" SourceFile="$(var.UnInstallCA.TargetDir)UnInstallCA.CA.dll" />

Die benutzerdefinierte Aktion wird die .CA.dll Datei ausgibt. Ich habe versucht, die Datei als Teil des Setups installieren, kopieren Sie die Datei manuell, nichts getan, um die Datei eingefügt ... im Grunde alle möglichen Kombinationen ausprobiert.

Es muss etwas sein, das ich fehle, so wenden Sie sich bitte helfen.

War es hilfreich?

Lösung

Es tut mir leid haben jeder Zeit über diese verschwendet.

Die Lösung war etwas eher zu einfach. Ich hatte das [Custom] Attribut auf diesem speziellen Verfahren zu platzieren vergessen. Also auch wenn es die letzte Aktion war, die ich in meiner CustomAction.cs Datei geschrieben hatte, war es die erste in der InstallExecuteSequence aufgerufen werden. Und aus diesem Grund habe ich mich getäuscht in zu denken, dass es könnte nicht die Datei finden. Nun, das ebenso wie die Tatsache, dass ich wirklich schläfrig gewesen sein muss ...

Wie auch immer, während für die Antwort der Suche Ich habe es geschafft, über viele nette Ressourcen zu kommen, vor allem Alex Shevchuks Serie auf Wix . Eine andere Sache, ich erkannte, war, dass ich nicht die benutzerdefinierte Aktion DLL-Datei zu installieren. Ich habe es nur von meinem Wix Projekt verweisen und den Weg dorthin zu liefern. Die DLL wird im Setup eingebettet und wird von dort gestreamt, wenn die Deinstallation benutzerdefinierten Aktionen aufgerufen werden sollen.

Andere Tipps

Ist Ihr UnInstallCA.CA.dll während der Installation auf das Zielsystem kopiert? Es scheint, dass es bei der Deinstallation nicht da ist.

Wenn es dort ankommt - kann es laufen? (Versuchen Sie es von der Zielmaschine ausgeführt wird, um zu sehen, ob es tun kann, was es tun soll - vielleicht müssen Sie eine andere dll Schiff aus Sie verwenden diese - oder vielleicht etwas verteilbare Paket)

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top