繁体   English   中英

在MSVS中的.msi项目中找到第三方应用程序的安装位置

[英]Locating the installation location of a 3rd party application in an .msi project in MSVS

上下文:我有一些插件(实际上只是具有不同扩展名的DLL),需要将其安装在第三方应用程序的子文件夹中。 通常,只需将它们复制到所述文件夹就足够了,但是偶尔也需要安装其他库。 我想使此过程对用户而言不那么容易出错,因此我希望在Visual Studio中使用安装程序项目来创建.msi,但是我在正确配置安装位置方面遇到了麻烦。

似乎假定安装程序是用于完整的应用程序,并且默认安装位置为C:\\ Program Files \\ MyApp \\,但是我真正需要的是C:\\ Program Files \\\\ Plugins。 我宁愿不假设用户在任何特定位置都安装了第三方应用程序,所以我想要的是一种找到其他应用程序安装位置的方法。 我已经搜索了Microsoft的文档,并自己做了一些尝试,但是没有取得任何成功。

假设这是可能的,那么有人知道如何实现我想要的吗?

如果您的应用程序使用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);
        }
    }

大多数应用程序会将其安装位置写入注册表中的某个位置。 我们在下面的注册表项下读取值,以找到Microsoft Word的安装位置。

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

不幸的是,没有标准的方法来检索特定应用程序的安装位置。 您必须搜索注册表以查找所需内容。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM