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。
答案 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下的更多解释。