获取窗口安装程序安装但命令行"where"看不到的程序的安装路径



我有一个Interop Excel应用程序,通过Window Installer安装,它只包含.dlls,不包含可执行文件/.exes;添加/删除程序";和CCD_ 1列表,但不通过命令CCD_。

我正在编写一个批处理文件,以便在安装后修改一些文件。如何在批处理文件中获取此程序的安装路径?

我还应该提到,尽管";添加/删除程序";看到程序,它不存在于中

HKEY_LOCAL_MACHINESOFTWAREMicrosoftWindowsCurrentVersionUninstall

我猜您将无法找到,因为安装路径不会自动记录在卸载注册表信息中,除非您的安装程序设置了ARPINSTALLLOCATION属性:

https://msdn.microsoft.com/en-us/library/aa367589(v=vs.85).aspx

或者您显式地创建了一个注册表项并将其值设置为[TARGETDIR],如果您想将位置保存在您控制的某个位置,则可以在将来执行此操作。

因此,Chris的答案可能是找到路径的正确方法,也可能是告诉你不要替换文件的正确方法。安装程序的弹性(或通过"添加/删除程序"进行修复或右键单击MSI文件修复)可能会恢复它们,需要原始MSI。MSI知道所安装内容的文件版本。此外,升级或修补程序可能还需要原始MSI。Cavat Emptor。

使用WMIC的where指定要查找的名称,get InstallLocation显示路径:

for /f "delims=" %%a in ('
    wmic product where "Name='Exact name of your app'" get InstallLocation ^| find ""
') do set location=%%a

MSI的WMI提供程序一直存在错误。我会使用本机MSI API来询问组件安装在哪里。(MsiGetComponentPathEx函数)

但我不得不建议MSI喜欢"拥有"它的文件。如果有人进行维修,你的修改很可能会成为历史。我建议将MSI转换为包含修改后的文件,并跳过安装后的修改步骤。或者重新设计你的加载项,这样你就可以有一组MSI安装的基本值和一组MSI不知道的复制到MSI之外的覆盖值。

最新更新