19 Stimmen

InstallPath-Registrierungsschlüssel mit Visual Studio Setup-Projekt festlegen

Ich stelle meine Anwendung mit einem msi-Installationsprogramm bereit, das mit einem Visual Studio Setup-Projekt entwickelt wurde. Wie kann ich einen Registrierungsschlüssel für den Installationspfad der Anwendung festlegen?

30voto

Cohen Punkte 2680

Als ich nach demselben Problem suchte, wurde auch die folgende Lösung erwähnt:

verwenden Sie [TARGETDIR] im Registrierungsschlüssel.

1 Stimmen

Ich habe diese Methode mit einer von mir definierten Eigenschaft verwendet, die über die Befehlszeile an die msiexec.exe übergeben wird, und es hat hervorragend funktioniert.

2 Stimmen

Danke. Das ist ein guter, einfacher und unkomplizierter Weg, das Problem zu lösen. Alter Beitrag, immer noch sehr nützlich. Ich bin mir nicht sicher, warum dies nicht als Antwort angekreuzt ist.

7 Stimmen

Das Ziel der SE-Websites ist es, über Jahre hinweg eine Quelle des Wissens und der Antworten zu sein. Bei einer reinen Link-Antwort muss sich der Benutzer durch eine andere Quelle wühlen, um eine Antwort zu finden, bei der er sich nicht sicher ist. Vor allem aber ist Ihre Antwort für jeden, der diese Seite in Zukunft besucht, nutzlos, wenn Ihr Link jemals kaputt gehen sollte (was er bereits getan hat). Ich habe hier eine Antwort gegeben, die meines Erachtens die gleiche ist stackoverflow.com/a/11490003/495455

5voto

user2117229 Punkte 115

Ich möchte nur hinzufügen, dass der Wert [TARGETDIR] in den Registrierungsschlüssel eingetragen wird. Wenn Sie das Installationsschild für vs2012 verwenden, geben Sie stattdessen [INSTALLDIR] in den Registrierungsschlüssel ein.

2 Stimmen

Dies ist die richtige Antwort. Es besteht absolut keine Notwendigkeit, überhaupt einen Code zu schreiben.

4voto

Wil P Punkte 3281

Eine Möglichkeit, dies zu tun, besteht darin, eine benutzerdefinierte Aktion in Ihrem Installationsprogramm zu erstellen. In der benutzerdefinierten Aktion könnten Sie CustomActionData "/Path="[TARGETDIR]*" angeben. Im Code Ihrer benutzerdefinierten Aktion können Sie auf Context.Parameters["Path"] verweisen und den vom Installationsprogramm übergebenen Installationspfad in Ihrem .NET-Code empfangen.

Da Sie nun das [TARGETDIR] in Ihrem benutzerdefinierten Aktionscode haben, können Sie weiterhin den Microsoft.Win32-Namensraum zum Festlegen des Registrierungsschlüssels verwenden.

HTH - Wil

0 Stimmen

Können Sie diese Frage beantworten? stackoverflow.com/questions/5217478/

4voto

mehdi Punkte 573
  1. folgen Sie diesen Schritten:
  2. Hinzufügen eines Klassenbibliotheksprojekts zum Setup Lösung.
  3. Fügen Sie die Installationsdatei in Ihr Klassenbibliotheksprojekt ein.
  4. Fügen Sie das erstellte Klassenbibliotheks-Projekt in Ihren Setup-Anwendungsordner ein
  5. Fügen Sie die erstellte Projekt-Installationsdatei (im Fenster Benutzerdefinierte Aktion einrichten) zu Unterpunkt "Installieren".

enter image description here

  1. Klicken Sie auf das hinzugefügte Projekt und drücken Sie F4, um das Fenster Eigenschaften zu öffnen.
  2. im Eigenschaftsfenster "/pDir="[TARGETDIR]\" in CustomActionData einstellen.

enter image description here

  1. in der Installationsdatei (im Klassenbibliotheksprojekt) den folgenden Code schreiben, um den Installationspfad in die Registrierung zu schreiben.

     Public Overrides Sub Install(ByVal stateSaver As System.Collections.IDictionary)
        MyBase.Install(stateSaver)
        Dim regsrv As New RegistrationServices
        regsrv.RegisterAssembly(MyBase.GetType().Assembly, AssemblyRegistrationFlags.SetCodeBase)
        '--------- adding installation directory to stateSaver ----------
        stateSaver.Add("myTargetDir", Context.Parameters("pDir").ToString)
    End Sub
    
    Public Overrides Sub Commit(ByVal savedState As System.Collections.IDictionary)
        MyBase.Commit(savedState)
        ''messagebox.show("salam")
        Dim InstallAddress As String = savedState("myTargetDir").ToString
        Dim regKey As RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("software\\pourab\\Sanjande", True)
        regKey.SetValue("InstalledFolder", InstallAddress)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X