2009-04-14 10 views
1

Ich arbeite an einer neuen Funktion für unser Produkt, von der einige wichtige Sicherheitsaspekte betroffen sind: Sie wird als WCF-Dienst ausgeführt und führt einige äußerst privilegierte Aktionen aus. Daher möchte ich, dass diese Komponente nur installiert wird, wenn der Benutzer sie benötigt (und entfernt wird, wenn sie nicht mehr benötigt wird), und dass die Installation programmgesteuert durchgeführt wird.MSI Install-on-Demand-Best Practices?

Ich habe in advertising (speziell zugewiesene Installationen) untersucht, und es scheint ein guter Mechanismus zu sein, dies zu erreichen. I'm not sure whether the installation of an advertised feature can be undone, die jedoch nützlich wäre, um die Komponente zu entfernen, wenn sie nicht mehr benötigt wird. Ich bin mir auch nicht ganz sicher, ob eine programmatische Installation mit Werbung erreicht werden könnte: advertised COM classes seems to be discouraged.

Ich frage mich daher, wenn ein einfacher Aufruf an msiexec zum Installieren/Entfernen der Komponente sinnvoller wäre. Die Komponente könnte in einem separaten MSI oder als ein separates Merkmal unseres Haupt-MSI verpackt sein.

Mit welchen Techniken haben Sie Funktionen bei Bedarf installiert?

+1

Das Problem mit der Werbung ist, dass die MSI-Quelle immer verfügbar sein muss. Wenn Sie planen, AD zu verwenden und das Setup zu veröffentlichen, ist das kein großes Problem, aber wenn das Setup von einer CD kommt, dann haben Sie ein Problem. Der Netzwerkanteil ändert sich ebenfalls. (cont ...) –

+1

getrennte MSIs klingen wie eine gute Idee, können Sie MsiInstallProduct aufrufen, anstatt msiexec.msi auszuführen. –

Antwort

1

Ich löste das, indem ich alle notwendigen Bits und Stücke im Voraus installiere und dann den WCF Service wie erforderlich starte/sperre.