Reputation: 11327
I am deploying my application using an msi installer designed with a Visual Studio Setup Project. How do I set a registry key to the application's install path?
Upvotes: 19
Views: 28320
Reputation: 2720
Actually, while I was searching for the same thing the following solution was also mentioned:
use [TARGETDIR] in the registry key.
Upvotes: 30
Reputation: 685
on installer file (in class library project) write the follow code to write install path into registry.
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)
Upvotes: 4
Reputation: 135
Just to add to putting [TARGETDIR] in the registry key as the value. If you are using the install shield for vs2012 use [INSTALLDIR] instead in the registry key.
Upvotes: 5
Reputation: 3371
One way to do this would be to create a custom action in your installer. On the custom action you could provide CustomActionData "/Path="[TARGETDIR]*". Within your custom action code you can reference Context.Parameters["Path"] and receive the installation path passed from the installer in your .NET code.
Now that you have the [TARGETDIR] within your custom action code you can continue to use the Microsoft.Win32 namespace to set the registry key.
HTH - Wil
Upvotes: 4