1

我想从我的 C++ 应用程序运行其他应用程序的修复- 以编程方式执行当我手动选择程序的修复选项时会发生什么Windows->Control Panel->Program

对于删除选项,我可以在注册表中搜索:

  • KEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall
  • HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall 在 64 位机器上)

而不是使用UninstallString来查找我必须使用System()函数执行的命令。

但是如何以类似的方式运行修复?对于像RepairString.

我想找到所有程序的通用方法(当然我的意思是在注册表中留下信息的程序)。

附加问题: eg 列出的应用程序是否可能MsiEnumProductsEx没有其UninstallString注册表项?

ps 我从伟大的 Pat 的帖子中获取的有关删除选项的注册表项的信息:

是否有适用于 Windows 的卸载程序批处理?

4

2 回答 2

1

如果该程序是使用 Microsoft 安装程序安装的,则可以使用一组适当的开关调用 MSIEXEC。TechNet文档中记录了这些开关。

但即使你使用它,修复选项也有很大的不同。在很多情况下,如果原始 MSI 文件不再可用(未插入 CD 或下载的文件已被删除),您将无法启动修复。

于 2013-10-16T07:35:04.157 回答
0

通常使用 MSI api 创建安装包http://msdn.microsoft.com/en-us/library/windows/desktop/aa372860(v=vs.85).aspx

WIX用于编写 MSI 包。从http://wix.tramontana.co.hu/tutorial/getting-started开始

于 2013-10-21T18:48:11.097 回答