我正在尝试适应我们的安装软件,包括VSTO 2010运行时(v. 10.0.40303)作为安装我们的软件之前的先决条件。当我们尝试在客户端机器(Win7和Win8)上安装我们的软件时,发生的情况是机器在完成VSTO 2010运行时的安装后重新启动,没有任何警告。
显然,这是因为Microsoft Visual c++ 2010 X64 Redistributable (v.10.0.40219)与VSTO 2010运行时安装程序捆绑在一起。它(c++可重新分发)试图替换当前被explorer.exe进程锁定的文件,强制重新启动?
目前我不知道如何解决这个问题,所以欢迎任何建议。
我在VSTO安装的日志文件中记下的消息如下:
Windows Installer requires a system restart.
Product Name: Microsoft Visual C++ 2010 x64 Redistributable - 10.0.40219
Product Version: 10.0.40219. Product Language: 0.
Manufacturer: Microsoft Corporation.
Type of System Restart: 2. Reason for Restart: 1.
这出现在安装VSTO 2010运行时的日志文件的底部。
MSI (c) (C4:80) [21:42:34:552]: Decrementing counter to disable shutdown.
If counter >= 0, shutdown will be denied. Counter after decrement: -1
我不知道我们在递减哪个计数器?我应该关心或试图操纵它以防止重启吗?
据我所知,这是(除其他外)文件ATL100.DLL, MSVCP100.dll被explorer.exe进程锁定,并替换那些导致重新启动的文件。
仔细想想,这个问题不会发生在不需要安装语言包的机器上。Win7和Win8机器的母语是丹麦语。这可能是由语言包而不是c++可再发行版引起的吗?
我构建先决条件的方式是采用安装InstallShield 2013提供的VSTO 2010运行时的现有先决条件,然后只需修改用于在注册表中检查的版本号和先决条件应该安装的可重新分发文件。
InstallShield中用于安装可重新分发文件(vstor40_redist.exe)的命令行为:
/q:a /c:"install /q /l"
我如何配置我的先决条件,以便至少通知用户即将重新启动,最好将其推迟到安装结束?我应该在日志文件中查找什么?
您需要将/norestart参数传递给msi