Подтвердить что ты не робот

Установите ключ реестра InstallPath с помощью проекта установки Visual Studio

Я развертываю свое приложение с помощью установщика MSI, разработанного с помощью проекта установки Visual Studio. Как установить ключ реестра на путь установки приложения?

4b9b3361

Ответ 1

Один из способов сделать это - создать настраиваемое действие в вашем установщике. В пользовательском действии вы можете предоставить CustomActionData "/Path =" [TARGETDIR] * ". В рамках вашего пользовательского кода действия вы можете ссылаться на Context.Parameters [" Путь "] и получить путь установки, переданный установщиком в вашем коде .NET.

Теперь, когда у вас есть [TARGETDIR] в вашем пользовательском коде действия, вы можете продолжать использовать пространство имен Microsoft.Win32 для установки раздела реестра.

HTH - Wil

Ответ 2

Собственно, пока я искал то же самое, было упомянуто следующее решение:

используйте [TARGETDIR] в разделе реестра.

Ответ 3

Просто добавьте к ключу [TARGETDIR] в ключ реестра как значение. Если вы используете экран установки для vs2012, используйте [INSTALLDIR] вместо этого в разделе реестра.

Ответ 4

  • выполните следующие действия:
  • Добавить проект библиотеки классов в настройку решение.
  • Добавить файл установщика в проект библиотеки классов.
  • Добавить созданный проект библиотеки классов в папку приложения для установки
  • Добавить созданный файл установщика проекта (в окне настраиваемых действий) Элемент подэлемента "Установить".

enter image description here

  1. нажмите на добавленный проект и нажмите F4, чтобы открыть окно свойств.
  2. в окне окна свойств "/pDir =" [TARGETDIR]\"в CustomActionData.

enter image description here

  1. в файле установщика (в проекте библиотеки классов) напишите следующий код, чтобы записать путь установки в реестр.

     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)