Задайте раздел реестра InstallPath с помощью проекта установки Visual Studio
Я развертываю свое приложение с помощью установщика MSI, разработанного с помощью проекта установки Visual Studio. Как установить в ключе реестра путь установки приложения?
4 ответа
Один из способов сделать это - создать настраиваемое действие в установщике. В настраиваемом действии вы можете указать CustomActionData "/Path="[TARGETDIR]*". В своем коде настраиваемого действия вы можете сослаться на Context.Parameters["Path"] и получить путь установки, переданный из установщика в вашем коде.NET.
Теперь, когда у вас есть [TARGETDIR] в вашем коде настраиваемого действия, вы можете продолжать использовать пространство имен Microsoft.Win32 для установки раздела реестра.
HTH - Wil
На самом деле, когда я искал то же самое, было упомянуто следующее решение:
используйте [TARGETDIR] в разделе реестра.
Просто чтобы добавить [TARGETDIR] в раздел реестра в качестве значения. Если вы используете установочный щит для vs2012, используйте вместо этого [INSTALLDIR] в разделе реестра.
- выполните следующие шаги:
- Добавьте проект библиотеки классов в установочное решение.
- Добавьте установочный файл в ваш проект библиотеки классов.
- Добавьте созданный проект библиотеки классов в папку вашего установочного приложения
- Добавьте созданный файл установщика проекта (в окне настройки настраиваемого действия) в подпункт "Установить".
- нажмите на добавленный проект и нажмите F4, чтобы открыть окно свойств.
- в окне свойств установите "/pDir="[TARGETDIR]\"в CustomActionData.
в файле установщика (в проекте библиотеки классов) напишите следующий код, чтобы записать путь установки в реестр.
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
Общедоступные переопределения Sub Commit(ByVal saveState As System.Collections.IDictionary) MyBase.Commit(savedState) '' MessageBox.Show("салам") Dim InstallAddress As String = saveState("myTargetDir").ToString Dim regKey As RegistryKey = Microsoft.Win32.Registry.LocalMachine.OpenSubKey("software\pourab\Sanjande", True) regKey.SetValue("InstalledFolder", InstallAddress)