1

Inno Setup を使用している IDL .sav ファイルのターゲットの場所に IDL 仮想マシンを追加する必要があり、次のコード行

[Icons]
Name: "{group}\clas";  Filename:  "{code:GetIDLPath}"; Parameters: """{app}\bin\BATCH_CLAS_MAIN.sav"""; IconFilename: "{app}\clas_icon.ico"

[Code]
function GetIDLPath(dummy: string): string;
begin
  RegQueryStringValue(HKEY_LOCAL_MACHINE, 'SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\idlrt.exe', '', Result);
  if Result = '' then
    Result := 'idlrt.exe';
end;

しかし、ターゲットの場所は次のようになります。

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

レジストリで idlrt.exe の場所を確認し、正しいパスを提供しています。

誰が何が悪いのか知っていますか?

4

1 に答える 1

1

Parameters少なくとも、パラメーター値に何か問題があることがわかります。展開可能な定数を渡す場合-vm、オプションの後に{app}/bin/BATCH_CLAS_MAIN.savスラッシュを含むパスを指定すると、期待される結果を得ることができません。"{app}\bin\BATCH_CLAS_MAIN.sav"これは少し良いかもしれません:

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName=My Program

[Icons]
; because of use of the "useapppaths" flag, there's no need to have the
; GetIDLPath function anymore; that flag do its work for you
Name: "{group}\clas"; Filename: "idlrt.exe"; Parameters: "{code:GetIDLParams}"; IconFilename: "{app}\clas_icon.ico"; Flags: useapppaths

[Code]
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;
于 2013-10-12T19:08:35.657 に答える