上下文:我有一些插件(实际上只是具有不同扩展名的DLL)需要安装在第三方应用程序的子文件夹中。通常只需将它们复制到所述文件夹就足够了,但偶尔还需要安装其他库。我想让这个过程对用户不那么容易出错,所以我已经考虑在visual studio中使用安装程序来创建.msi,但是我无法正确配置安装位置。
它似乎假设安装程序用于完整的应用程序并默认为C:\ Program Files \ MyApp \等位置,但我真正需要的是C:\ Program Files \\ Plugins。我宁愿不假设用户在任何特定位置安装了第三方应用程序,所以我想要的是找到其他应用程序安装位置的方法。我通过微软的文档进行了搜索并自己进行了一些实验,但没有取得任何成功。
假设这是可能的,有人知道如何实现我的目标吗?
答案 0 :(得分:0)
大多数应用程序会将其安装位置写入注册表中的某个位置。我们读取以下注册表项下的值以查找Microsoft Word安装位置。
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\Winword.exe]
遗憾的是,没有标准的方法来检索特定应用程序的安装位置。您必须搜索注册表以找到您想要的内容。
答案 1 :(得分:0)
如果您的应用程序使用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);
}
}