Поиск места установки стороннего приложения в MSI-проекте в MSVS - PullRequest
0 голосов
/ 22 мая 2009

Контекст: у меня есть несколько плагинов (которые на самом деле просто библиотеки DLL с другим расширением), которые нужно установить в подпапку стороннего приложения. Обычно достаточно просто скопировать их в указанную папку, но иногда есть и другие библиотеки, которые также необходимо установить. Я хотел бы сделать этот процесс менее подверженным ошибкам для пользователей, поэтому я попытался использовать проект установщика в Visual Studio для создания MSI, но у меня возникают проблемы с настройкой расположения установки правильно.

Похоже, что предполагается, что установщик предназначен для полного приложения и по умолчанию находится в таком месте, как C: \ Program Files \ MyApp \, но мне действительно нужен C: \ Program Files \\ Plugins. Я бы предпочел не предполагать, что пользователь установил стороннее приложение в каком-либо конкретном месте, поэтому мне хотелось бы найти способ установить, где было установлено это другое приложение. Я просмотрел документацию Microsoft и немного поэкспериментировал, но безуспешно.

Предполагая, что это возможно, кто-нибудь знает, как выполнить то, что я хочу?

Ответы [ 2 ]

0 голосов
/ 21 августа 2009

Если ваше приложение использовало установщик Windows, вы можете попробовать этот метод (C #):

    Type type = Type.GetTypeFromProgID("WindowsInstaller.Installer");
    Installer msi = (Installer)Activator.CreateInstance(type);
    foreach (string productcode in msi.Products)
    {
        string productname = msi.get_ProductInfo(productcode, "InstalledProductName");
        if (productname.Contains("<YOUR PRODUCT NAME HERE>"))
        {
            string installdir = msi.get_ProductInfo(productcode, "InstallLocation");
            Console.WriteLine("{0}: {1} @({2})", productcode, productname, installdir);
        }
    }
0 голосов
/ 25 мая 2009

Большинство приложений напишут место установки где-нибудь в реестре. Мы читаем значения в следующем разделе реестра, чтобы найти место установки Microsoft Word.

[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Winword.exe]

К сожалению, нет стандартного способа получения места установки конкретного приложения. Вам придется искать в реестре, чтобы найти то, что вы хотите.

...