3

最初に既存のファイルの名前を「Myprogramold」から「Myprogramv2」に変更したいのですが、「Myprogramv2」がまだ存在しない場合に限ります。

次に、「マイプログラム」の名前を「マイプログラムオールド」に変更しますが、「マイプログラムオールド」がまだ存在しない場合に限ります。

次に、インストーラーから「マイプログラム」をインストールしたいのですが、「マイプログラム」がまだ存在しない場合に限ります。

ご指導をいただければ幸いです。

4

1 に答える 1

6

こういうことをやってみようと思います。インストールプロセスが開始する直前に発生するイベントのssInstall段階で、ファイルが関数とともに存在しないかどうかを確認し、存在しない場合は関数を呼び出すだけです。ソースファイルが存在しない場合はサイレントに失敗します。存在するため、ソースファイルが存在するかどうかを気にする必要はありません。このセクションでは、最後の要件にフラグを使用できます。必要に応じて、このスクリプトのに従ってください。CurStepChangedFileExistsRenameFile[Files]onlyifdoesntexistcommented version

[Setup]
AppName=My Program
AppVersion=1.5
DefaultDirName={pf}\My Program

[Files]
Source: "My program"; DestDir: "{app}"; Flags: onlyifdoesntexist

[Code]
function GetFileName(const AFileName: string): string;
begin
  Result := ExpandConstant('{app}\' + AFileName);
end;

procedure CurStepChanged(CurStep: TSetupStep);
begin
  if (CurStep = ssInstall) then
  begin
    if not FileExists(GetFileName('My program v2')) then
      RenameFile(GetFileName('My program old'), GetFileName('My program v2'));
    if not FileExists(GetFileName('My program old')) then
      RenameFile(GetFileName('My program'), GetFileName('My program old'));
  end;
end;
于 2012-10-25T15:05:13.323 に答える