Inno Setup:如何在64位操作系统中重命名system32文件

时间:2013-01-21 11:38:27

标签: inno-setup pascalscript

System32和syswow64文件夹存在于64位操作系统中的C:\ Windows下。

我在xyz.sys文件夹下有一个名为System32\drivers的文件。我尝试使用以下代码将xyz.sys重命名为xyz1.sys

if FileExists(ExpandConstant('{sys}\drivers\xyz.sys')) then
  RenameFile(ExpandConstant('{sys}\drivers\xyz.sys'), ExpandConstant('{sys}\drivers\xyz1.sys'));

但是在64位操作系统中,innosetup将{sys}='Driveletter:\Windows\syswow64'作为默认值。

即使我尝试使用以下代码重命名xyz.sys下的System32\drivers文件:

if FileExists(ExpandConstant('{win}\System32\drivers\xyz.sys')) then
  RenameFile(ExpandConstant('{win}\System32\drivers\xyz.sys'), ExpandConstant('{win}\System32\drivers\xyz1.sys'));

但是上面的代码也没有用,任何人都可以建议我如何在64位操作系统中重命名system32文件。

使用的是windows2008R2。

2 个答案:

答案 0 :(得分:1)

默认情况下,32位应用程序(以及32位应用程序的安装程序)只能访问32位系统文件夹。例如,如果您需要为32位应用程序安装特定的64位文件,则可以在各种条目上使用64bit标志来覆盖此标记。

您可以使用EnableFsRedirection支持功能从[Code]执行相同的操作。该帮助页面显示了执行64位命令提示符的示例;您可以类似地从该块中访问64位{sys}。不要忘记之后恢复之前的状态,如图所示。

请记住,重命名已安装的驱动程序文件通常不是一个好主意 - 目录和INF文件仍然指向其旧名称,系统可能会对此感到困惑。最好正确卸载驱动程序并重新安装新驱动程序。

答案 1 :(得分:0)

InnoSetup以32位模式运行安装,除非您将ArchitecturesInstallIn64BitMode设置为x64

如果要使用{sys}访问64位文件,则应设置该值。

{sys}标题at the docs下的更多解释。