我正在通过安装程序安装Visual C ++ Redistributable 2013作为先决条件(如果未安装)。但有时已安装VC ++已损坏,然后我的安装程序无法正常工作,因为我在CustomAction中调用了DLL函数。
所以我的问题:有没有办法找到已安装的VC ++可再发行组件是否已损坏?
答案 0 :(得分:1)
一般来说,健康检查是一个非常困难的话题。对于Windows中内置的文件,有一些工具,如SFC,但不会扩展到其他已安装的软件包。对于MSI包,您可以选择运行修复,在某些情况下,Windows将自动执行此操作;这个主题通常称为Resiliency。但除非自动或手动修复修复了你在野外遇到的各种问题,否则它并不是很相关。
因此,问题就变成了您实际遇到的问题,频率,修复方式以及尝试解决问题可能导致的问题。如果它足以调用VC ++ redist的手动修复,那么这很容易实现。如果需要完全卸载并重新安装,则更具侵入性;制作安装的那部分的想法让我错误的方式。如果您必须仅在非常特定的情况下执行此操作,则可能取决于您识别这些情况的程度。
或者,如果您的重点是确保安装成功,则可以静态链接自定义操作DLL,以便它们不再依赖于VC ++包的状态。但是,如果应用程序还依赖于VC ++包,这对您的应用程序也没有多大帮助。也许VC ++ DLL的私有化副本可以解决这个问题(如果2013版本支持 - 我忘了),代价是在安全更新的情况下为VC ++ DLL的副本提供更多的困难。
但同样,这一切都取决于发生了什么样的问题,它们是否足够频繁,值得解决它们,以及治愈方法是否比疾病更糟。