6

以下の Inno Setup スクリプトをコンパイルすると、エラーが発生します (以下)。ここからコードを借りたので、なぜ正しく動作しないのかわかりません。

Line 136:
Column 10:
Invalid prototype for 'FileDoesNotExist'

136行目はfunction FileDoesNotExist(file: string): Boolean;

[Run]
Filename: "{sys}\regsvr32.exe"; Parameters: "msstdfmt.dll"; WorkingDir: {app}\Pronto\Programs\; BeforeInstall: FileDoesNotExist(ExpandConstant('{sys}\msstdfmt.dll')); StatusMsg: "Registering Controls..."

[Code]
function FileDoesNotExist(file: string): Boolean;
begin
  if (FileExists(file)) then
    begin
      Result := False;
    end
  else
    begin
      Result := True;
    end;
end;
4

1 に答える 1

4

Inno Setupのドキュメントから:

すべての BeforeInstall および AfterInstall 関数には、戻り値があってはなりません

つまり、function何も返すことができないため、 にすることはできません。それはprocedure代わりです。(リンクされたページの例から、それらはすべて として宣言されており、コードprocedureに a が含まれていないことがわかりResultます。)

(あなたがリンクした質問も間違っています。ところでprocedure、戻り値の型が であることが示されていますがBoolean、これはもちろん不可能です。それが機能した場合、使用した Pascal パーサーが戻り値に気付かなかったことが原因であると思われますprocedure宣言の のためです。)

とにかく、あなたはそれを間違ってやろうとしているようです。msstdfmt.dllが と一緒に配布されている場合は、およびフラグが設定されたセクションsetupに追加する必要があります。ユーザーのシステムに既にインストールされている場合は、既に登録されているはずです。[Files]onlyifdoesntexistregserver

[Files]
Source: "msstdfmt.dll"; DestDir: "{sys}"; Flags: onlyifdoesntexist regserver 
于 2013-04-18T23:33:02.980 に答える