Установщик Custom Action - Регистрация COM dll - C # - PullRequest
0 голосов
/ 07 декабря 2018

Я создал видимый COM-проект и добавил в него мастер установки.Я также добавил класс пользовательских действий и попытался записать его в реестр.

Ниже приведен пример записи для установщика wxs (с которым у меня нет опыта), как я могу восстановить это в C # во времядействие по установке моего класса пользовательских действий?

         <RegistryKey Root='HKCU' Key='Software\Autodesk\Structural\RSA\AddIns\{24D63E1C-E503-4EB4-9381-BF9F6A35E199}'>
      <RegistryValue Type='binary' Name='AddInsType' Value='0'/>
      <RegistryValue Type='binary' Name='Enable' Value='1'/>
      <RegistryValue Type='string' Name='File' Value='[INSTALLDIR]myaddin.dll'/>
      <RegistryValue Type='string' Name='Guid' Value='{24D63E1C-E503-4EB4-9381-BF9F6A35E199}'/>
      <RegistryValue Type='binary' Name='Guid Type' Value='2'/>
      <RegistryValue Type='binary' Name='KeepMenuGrade' Value='0'/>
      <RegistryValue Type='string' Name='KeyName' Value='{24D63E1C-E503-4EB4-9381-BF9F6A35E199}'/>

Это то, что я имею до сих пор в своем классе пользовательских действий, используя этот ответ .Правильно ли добавить key_value_name в качестве того же GUID, что и мой COM dll?

namespace RegisterRoboPython
{
[RunInstaller(true)]
public partial class RegisterRoboPython : Installer
{
    public override void Install(IDictionary stateSaver)
    {
        base.Install(stateSaver);

        const string key_path = "Software\\Autodesk\\Structural\\RSA\\AddIns";
        const string key_value_name = "{5a0d8941-241c-481c-9811-2c76a91bf17c}";

        RegistryKey key = Registry.LocalMachine.OpenSubKey(key_path, Microsoft.Win32.RegistryKeyPermissionCheck.ReadWriteSubTree);

        if (key == null)
        {
            key = Registry.LocalMachine.CreateSubKey(key_path);
        }

        string tgt_dir = Context.Parameters["TARGETDIR"];

        key.SetValue(key_value_name, tgt_dir);

    }


    public override void Commit(System.Collections.IDictionary savedState)
    {
        base.Commit(savedState);
    }

    public override void Uninstall(IDictionary savedState)
    {
        base.Uninstall(savedState);

        const string key_path = "Software\\Autodesk\\Structural\\RSA\\AddIns";
        const string key_name = "{5a0d8941-241c-481c-9811-2c76a91bf17c}";

        RegistryKey key = Registry.LocalMachine.OpenSubKey(key_path);

        if (key.OpenSubKey(key_name) != null)
        {
            key.DeleteSubKey(key_name);
        }

    }

    public override void Rollback(IDictionary savedState)
    {
        base.Rollback(savedState);
    }

    public RegisterRoboPython()
    {
        InitializeComponent();
    }
}

Редактировать 1: При запуске установки .msi я получаю следующую ошибку:

system.argumentexception FILE = DOES NOT EXIST 
IF THIS PARAMETER IS USED AS AN INSTALLER OPTION THE FORMAT MUST BE /KEY=[VALUE]

Что меня смущает, когда я добавил /TARGETDIR = "[TARGETDIR]" к свойствам установки / фиксации CustomActionData.

Итак, мой вопрос: как правильно зарегистрировать COM-библиотеку DLL с помощью пользовательских действий?

Я на правильном пути?Спасибо за чтение, Том

1 Ответ

0 голосов
/ 08 декабря 2018

Избегание пользовательских действий : Пожалуйста, старайтесь избегать пользовательских действий, когда это возможно. Вот моя пропаганда против них .Все, что вам нужно знать, это то, что они подвержены ошибкам.Если есть встроенные функции, которые могут делать то же самое, используйте их вместо этого.


Просмотр реестра : из thisОписание от Microsoft , попробуйте использовать эту встроенную функцию:

  1. Откройте ваш проект Visual Studio
  2. В меню Вид выберите Редактор , а затем нажмите Реестр .
  3. Создайте ключи и значения в соответствии с представлением реестра

Пожалуйста, примите во вниманиепридерживаясь какого-то другого инструмента для развертывания .Прочитайте, по крайней мере, описание ограничений для проектов установки Visual Studio ниже.


Проекты установщика Visual Studio Проблемы : Есть некоторые проблемы с проектами установщика Visual Studioчто вы должны знать о. Рекомендуем продолжать использовать WiX :


Дополнительные ссылки :

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...