我有一个应用程序在公司的数百台计算机上使用,我必须修改应用程序安装目录中的 INI 文件。用户可以在任意位置安装该应用程序,并且可以在任何给定时间安装该应用程序的多个版本。我需要能够找到该安装目录。
到目前为止我考虑过的方法:
- 使用 WindowsInstaller 按名称查找产品并找到其安装目录。 (从here)。
--这几乎有效,但我期望填充的属性(TARGETDIR、APPDIR)却没有。
- 查看注册表以查找特定应用程序的安装目录。它不在那里。
- MsiGetComponentPath()?我在上面提到的同一链接中看到了这一点,但我不知道如何实现它。我可以使用 Windows 安装程序获取 ProductID,但我不知道如何以编程方式仅选择一个组件并随机查找其 ID。任何人?
好吧,让我们听听以编程方式确定 Windows 应用程序安装目录的任何其他方法。
好吧,我想出了一个对我有用的解决方案:
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("<APPLICATION NAME>"))
{
string installdir = msi.get_ProductInfo(productcode, "InstallLocation");
}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)