Задайте раздел реестра InstallPath с помощью проекта установки Visual Studio - PullRequest
17 голосов
/ 21 июля 2009

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

Ответы [ 4 ]

25 голосов
/ 23 августа 2009

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

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

4 голосов
/ 21 июля 2009

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

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

HTH - Wil

3 голосов
/ 12 сентября 2014

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

2 голосов
/ 16 июня 2015
  1. выполните следующие действия:
  2. Добавить проект библиотеки классов в настройку решение.
  3. Добавьте установочный файл в ваш проект библиотеки классов.
  4. Добавить созданный проект библиотеки классов в папку вашего установочного приложения
  5. Добавить созданный файл установщика проекта (в окне пользовательских настроек) в Элемент вложенного дерева "Install".

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)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...