Visual Studio Installieren Von Project: Holen Sie Sich Zielverzeichnis
Ich habe Graben rund um Google versucht zu finden, den geeigneten Weg zu bestimmen, den Installationspfad ausgewählt durch einen Benutzer aus der Installation-Assistenten.
Grundsätzlich bin ich laufen in ein Problem, wo mein Dienst kann nicht erstellen-Dateien in einem eigenen Verzeichnis, weil es nicht die richtige Berechtigungen. Ich gehe davon aus, dass die richtige Art und Weise zu lösen dies ist, um sicherzustellen, dass was auch immer account der Dienst ist über entsprechende Datei Berechtigungen auf die Ordner.
Aber bevor ich das kann sogar angehen, wie das festlegen der Berechtigungen durch .Net ich wissen muss, um die installation Ordner. Ich bin mit einer Installation project, die eine Installer-Klasse, die enthält eine ServiceInstaller
Kontrolle. Beide haben die Context
Eigentum, so ich habe zu prüfen, dass für die Parameter, die verfügbar sind, wenn der AfterInstall Ereignis wird ausgelöst für die jeweiligen Installationsprogramme. Ich dachte zuerst, ich würde sehen, das TargetDir
Eigenschaft festlegen, aber das war nicht der Fall. Ich bin allerdings sehen AssemblyPath
gesetzt und zeigt auf die ausführbare Datei des entsprechenden Ordners.
Im wesentlichen, ich möchte nur sicherstellen, dass dies die geeignete Methode, die ich verwenden sollten:
private void ProjectInstaller_AfterInstall(object sender, InstallEventArgs e)
{
string InstallPath = System.IO.Path.GetDirectoryName(serviceInstaller1.Context.Parameters["AssemblyPath"]);;
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
Fand ich, dass die Lösung, die Berg gab für mich funktioniert, außer mit diesem Wert für die CustomActionData-Eigenschaft:
Hinweis: die addition der backslash. Sehen Sie diese Artikel auf der MSDN-Website.
Ihre benutzerdefinierte Aktion ein latenter benutzerdefinierte Aktion und nur bestimmte Eigenschaften zur Verfügung stehen, siehe die folgende Seite für weitere details, http://msdn.microsoft.com/en-us/library/aa370543(VS.85).aspx. Sie können fügen Sie die Eigenschaft TARGETDIR, um die CustomActionData-in Visual Studio 2008, habe jedoch nicht funktioniert mit Visual Studio 2008 als ein authoring-tool.
Tun komplizierte Installation in Visual Studio 2008 ist sehr schwierig, weil es abstrahiert entfernt eine Anzahl der wichtigsten features von MSI. Ich würde stark vorschlagen, dass Sie einen Blick auf WiX.
Selbst wenn Sie nicht WiX verwenden, werden Sie wollen, um download Orca, http://msdn.microsoft.com/en-us/library/aa370557(VS.85).aspx und es verwenden, um überprüfen Sie Ihre Installation. Dies erspart Ihnen unzählige Stunden später.
Während der Installation, event und ich Tat dies:
dann, ich war in der Lage, Zugang
TargetDir
später währendOnCommitted
:Nicht sicher, ob das hilft oder nicht! Ich versuche, herauszufinden, wie zuverlässig bestimmen Sie das Installationsverzeichnis, so dass mein Dienst tun können, einige Protokollierung.
Für diejenigen, die mehrere haben zu tun, wie diese
Als alternative zu setup-Projekten, die Sie verwenden können, einige installer Haustechnik. Ich denke, mit http://installer.codeeffects.com laden Sie alle Dateien aus Ihrer website und setzen Sie im installation-Verzeichnis, wenn der Benutzer installiert, Ihren Dienst. Hoffe, das hilft.
Um die target-directory-Eigenschaft-Wert in der benutzerdefinierten Aktion leiten Sie es manuell, indem Sie Ihre eigene Aktion-Ausgang in die benutzerdefinierte Aktion anzeigen und Sie, so etwas wie:
als Wert für die CustomActionData-Eigenschaft.
Sollten Sie dann in der Lage sein, um es von:
Soweit ich sagen kann, das ist der einzige Weg, um zu bestimmen, die install-Verzeichnis. Natürlich werde ich zur Kenntnis nehmen, wenn jemand kommt zusammen mit einer anderen beantworten, aber bis dahin ist dies der Ansatz, den ich nehme.