Hintergrund: Ich habe ein Wix-Installationsprogramm, bei dem ein virtuelles Verzeichnis in einer vorhandenen IIS-Website erstellt wird. Das virtuelle Verzeichnis wird erstellt (es existiert nicht vor der Installation), aber die IIS-Website sollte bereits erstellt werden (der Benutzer wählt einfach eine zu installierende Website in eine ListBox).
Das Problem: Bei der Deinstallation wird der physische Pfad der IIS-Website, der installiert wurde, leer, kein Wert für dieses Attribut. Unten ist eine abgespeckte Version meiner Hauptwix-Datei. Ich bin mir nicht sicher, warum die Deinstallation die IIS-Website beeinflusst, aber alle Gedanken sind willkommen.
Hinweise: Ich bin auf Wix 3.5 und Windows Server 2008 R2, IIS 7.
%Vor%WiX IIsExtension erkennt die WebSite nach Beschreibung Attribut und Port Attribut von Kind WebAddress Element. Wenn Sie Ihre Anwendung installieren, legen Sie also WEBSITE_DESCRIPTION und WEBSITE_PORT in irgendeiner Weise fest. Wenn Sie jedoch die Deinstallation ausführen, werden die genannten Eigenschaften nicht festgelegt und Sie erhalten das von Ihnen beschriebene Verhalten.
Die Lösung besteht darin, die erforderlichen Eigenschaftswerte in der Systemregistrierung zu speichern und RegistrySearch zu verwenden lies die Werte und setze geeignete Eigenschaften. Dies nennt sich "Remember Property" -Muster und ist perfekt erklärt von Rob Mensching hier .
Sie müssen auch [VIRTUALDIR] und [STSWEBALIAS] Eigenschaften in die Registrierung aufnehmen
sowie [WEBSITE_DESCRIPTION] und [WEBSITE_PORT].
Hier ist eine komplette Lösung, die für mich und mein Team funktioniert hat: