Inno setup 如何使用Inno安装程序在我的目标中获得32位版本的IDL虚拟机?

Inno setup 如何使用Inno安装程序在我的目标中获得32位版本的IDL虚拟机?,inno-setup,Inno Setup,我需要将idl虚拟机添加到我正在使用Inno Setup的idl.sav文件的目标位置,并添加以下代码行: [Icons] Name: "{commondesktop}\clas"; Filename: "{code:GetIDLPath}"; Parameters: "{code:GetIDLParams}"; IconFilename: "{app}\clas_icon.ico" [Code] function GetIDLPath(Value: string): string; begi

我需要将idl虚拟机添加到我正在使用Inno Setup的idl.sav文件的目标位置,并添加以下代码行:

[Icons]
Name: "{commondesktop}\clas"; Filename: "{code:GetIDLPath}"; Parameters: "{code:GetIDLParams}"; IconFilename: "{app}\clas_icon.ico"

[Code]
function GetIDLPath(Value: string): string;
begin

  RegQueryStringValue(HKEY_LOCAL_MACHINE_32, 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\idlrt.exe', '', Result);
  if Result = '' then
    Result := 'idlrt.exe';
end;

function GetIDLParams(Value: string): string;
begin
  // prepare the -vm option followed by a quoted application path to a file
  Result := '-vm ' + AddQuotes(ExpandConstant('{app}\bin\BATCH_CLAS_MAIN.sav'));
  // and replace backslashes to forward slashes
  StringChangeEx(Result, '\', '/', False);
end;
此代码将为我提供64位IDL虚拟机exe文件的位置,而不是32位版本,如下所示:

"C:\Program Files\Exelis\IDL82\bin\bin.x86_64\idlrt.exe" -vm C:/clas/bin/BATCH_CLAS_MAIN.sav
但我需要:

"C:\Program Files\Exelis\IDL82\bin\bin.x86\idlrt.exe" -vm C:/clas/bin/BATCH_CLAS_MAIN.sav
我已检查了这两个位置:

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\App Paths\idlrt.exe
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\idlrt.exe 
它们都只有64位版本路径


有人知道如何获取32位版本路径吗?

此IDL是否添加了任何其他注册表项?例如,在卸载或其他地方(不仅仅是在应用程序路径中)?您可以始终
ExtractFileDir
,然后通过检查
FileExists
来构建新字符串。关于其他注册表项,您可以搜索
C:\Program Files\Exelis\IDL82
以查看是否存在除应用程序路径以外的其他路径。我在注册表中搜索了idlrt.exe,只有64位版本显示在多个位置,但不是32位版本。不要查找EXE,因为64位操作系统上可能没有32位EXE的路径。查找IDL主路径,然后构建字符串,如
full32位路径:=ExpandConstant(IDLMainPath)+'\bin\bin.x86\idlrt.exe'
然后执行
FileExists
检查以确保文件位于其所在位置。如何获取IDLMainPath?我应该寻找什么?