从InstallShield运行DOS命令失败

时间:2017-09-15 14:22:08

标签: installshield

我在Install Shield脚本中创建了一个DOS命令调用 C:\ Windows \ System32 \ PnPutil.exe -a“C:\ Program Files(x86)\ Anite \ Drivers \ SPS \ ftdiport.inf”

在Windows 64位PC上运行我的InstallShield程序(双击Setup.exe文件)时,此命令始终返回代码2(系统找不到指定的文件。表示在指定的文件中找不到该文件地点)。但是,当我在同一台PC上打开CMD窗口(以管理员身份)并从与setup.exe文件相同的位置运行完全相同的DOS命令时,它始终有效。我知道当我们的InstallShield脚本运行时,它会在高架模式下运行,因此从InstallShiled发出此命令应该与在管理员模式下从CMD运行它相同。然而,它在第一种情况下失败但在第二种情况下成功。

另请注意,当我在Windows 32位PC上运行相同的InstallShield程序时,该命令始终有效 C:\ Windows \ System32 \ PnPutil.exe -a“C:\ Program Files \ Anite \ Drivers \ SPS \ ftdiport.inf”

Win 64位操作系统似乎存在从InstallShield脚本运行此DOS命令的问题,因为它无法在Program Files(x86)区域中找到该文件。此问题似乎只在调用pnputil实用程序时发生 - 所有其他实用程序(例如,regsvr32.exe)都被调用而没有任何问题。

非常感谢任何建议或帮助。非常感谢提前。

1 个答案:

答案 0 :(得分:1)

我发现了如何解决这个问题。我发现当你使用32位Install Shield程序构建映像时,它有一个设置(WOW64FSREDIRECTION),它会自动将所有64位应用程序和系统调用重定向到C:\ Windows \ SysWOW64目录,所以在这种情况下,这导致pnputil命令调用失败,因为它不在该目录中(因此错误代码"系统找不到指定的文件")但是在system32目录中。我使用了installshield例程" Disable(WOW64FSREDIRECTION)",它覆盖了这个属性,这解决了这个问题 - 命令是从system32目录中成功执行的。