首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >获取由window安装但命令行"where“看不到的程序的安装路径。

获取由window安装但命令行"where“看不到的程序的安装路径。
EN

Stack Overflow用户
提问于 2015-11-19 18:45:41
回答 3查看 6.9K关注 0票数 2

我有一个Interop Excel应用程序,通过Window安装,它只包含.dlls,不包含可执行文件/.exe。"Add/Remove program“和wmic product get name列表都可以看到该漏洞,但where命令(指的是here)看不到该漏洞。

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

我还应该提到的是,尽管“添加/删除程序”可以看到程序,但它并不存在于

代码语言:javascript
复制
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
EN

回答 3

Stack Overflow用户

发布于 2015-11-20 04:50:14

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

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

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

因此,Chris的答案可能是查找路径的正确方法,并且告诉您不要替换文件也是正确的。Installer resilience (或从Add/Remove Programs (添加/删除程序)或右键单击MSI文件进行修复)可能会恢复它们,需要原始MSI。MSI知道已安装内容的文件版本。此外,升级或修补程序可能还需要原始MSI。注意占用者。

票数 4
EN

Stack Overflow用户

发布于 2015-11-19 19:27:31

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

代码语言:javascript
复制
for /f "delims=" %%a in ('
    wmic product where "Name='Exact name of your app'" get InstallLocation ^| find "\"
') do set location=%%a
票数 2
EN

Stack Overflow用户

发布于 2015-11-19 23:48:24

MSI的WMI提供程序一直存在错误。我会使用原生MSI API来询问组件的安装位置。(MsiGetComponentPathEx function

但我必须建议,MSI喜欢“拥有”它的文件。如果有人做了修复,你的修改很可能会成为历史。我建议将MSI转换为包含修改后的文件,并跳过安装后修改步骤。或者重新设计您的外接程序,以便您可以有一个由MSI安装的基本值集和一个MSI不知道的MSI外部复制的重写值集。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33801662

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档