最初に既存のファイルの名前を「Myprogramold」から「Myprogramv2」に変更したいのですが、「Myprogramv2」がまだ存在しない場合に限ります。
次に、「マイプログラム」の名前を「マイプログラムオールド」に変更しますが、「マイプログラムオールド」がまだ存在しない場合に限ります。
次に、インストーラーから「マイプログラム」をインストールしたいのですが、「マイプログラム」がまだ存在しない場合に限ります。
ご指導をいただければ幸いです。
最初に既存のファイルの名前を「Myprogramold」から「Myprogramv2」に変更したいのですが、「Myprogramv2」がまだ存在しない場合に限ります。
次に、「マイプログラム」の名前を「マイプログラムオールド」に変更しますが、「マイプログラムオールド」がまだ存在しない場合に限ります。
次に、インストーラーから「マイプログラム」をインストールしたいのですが、「マイプログラム」がまだ存在しない場合に限ります。
ご指導をいただければ幸いです。
こういうことをやってみようと思います。インストールプロセスが開始する直前に発生するイベントのssInstall
段階で、ファイルが関数とともに存在しないかどうかを確認し、存在しない場合は関数を呼び出すだけです。ソースファイルが存在しない場合はサイレントに失敗します。存在するため、ソースファイルが存在するかどうかを気にする必要はありません。このセクションでは、最後の要件にフラグを使用できます。必要に応じて、このスクリプトのに従ってください。CurStepChanged
FileExists
RenameFile
[Files]
onlyifdoesntexist
commented 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;