我想将批处理文件中的两行转换为Inno Setup [Run]
部分:
%windir%\SysWOW64\rundll32.exe "%~dp0my32.dll",RegDll
%windir%\system32\rundll32.exe "%~dp0my64.dll",RegDll
所以我想要这样的东西(但有效):
[Run]
Filename: "{sys}\rundll32.exe"; Parameters: ""{code:GetDir|0}\my64.dll",RegDll"; WorkingDir: "{code:GetDir|0}"; StatusMsg: "Registering Module..."; MinVersion: 0.0,5.0; Flags: runhidden runascurrentuser
Filename: "{syswow64}\rundll32.exe"; Parameters: ""{code:GetDir|0}\my32.dll",RegDll"; WorkingDir: "{code:GetDir|0}"; StatusMsg: "Registering Module..."; MinVersion: 0.0,5.0; Flags: runhidden runascurrentuser
答案 0 :(得分:1)
您的代码在64-bit install mode中是正确的,即如果您设置了ArchitecturesInstallIn64BitMode
:
[Setup]
ArchitecturesInstallIn64BitMode=x64
在32位安装模式下,Inno Setup(32位应用程序)在尝试访问C:\WINDOWS\SysWOW64
时将被重定向到C:\Windows\System32
。如此有效,sys
和syswow64
都映射到相同的[32位]文件夹(C:\WINDOWS\SysWOW64
)。
您可以使用64bit
flag覆盖(如果您不想切换到64位安装模式):
[Run]
Filename: "{sys}\rundll32.exe"; Parameters: """{code:GetDir|0}\my64.dll"",RegDll"; \
WorkingDir: "{code:GetDir|0}"; StatusMsg: "Registering Module..."; \
MinVersion: 0.0,5.0; Flags: runhidden runascurrentuser; Flags: 64bit;
Filename: "{sys}\rundll32.exe"; Parameters: """{code:GetDir|0}\my32.dll"",RegDll"; \
WorkingDir: "{code:GetDir|0}"; StatusMsg: "Registering Module..."; \
MinVersion: 0.0,5.0; Flags: runhidden runascurrentuser; Flags: 32bit;