Win 8 の要件を満たすには、データ ファイル ( data.mpd
) を以前のインストールのインストール ディレクトリ (通常はc:\ProgramFiles
ユーザーが別の場所に変更している可能性があります) から新しいディレクトリにコピーする必要があります。c:\User\....
どうやって:
- 以前のインストールのパスを取得する
- ファイル data.mpd が存在するかどうかを確認します
- そのファイルを C:\Users... にコピーします。
Win 8 の要件を満たすには、データ ファイル ( data.mpd
) を以前のインストールのインストール ディレクトリ (通常はc:\ProgramFiles
ユーザーが別の場所に変更している可能性があります) から新しいディレクトリにコピーする必要があります。c:\User\....
どうやって:
WizardForm.PrevAppDir
特定のインストーラーが以前にアプリケーションをインストールしたフォルダー パスを保持するプロパティを使用できAppId
ます (まだインストールされていない場合は空です)。このプロパティは、ウィザード フォームが初期化された後に入力されるので、InitializeWizard
イベントの後に読み取ってください。
あなたのタスクでは、インストール前のステップでこの操作を行うので、CurStepChanged
イベント メソッドについては、次のように記述します。
[Code]
procedure CurStepChanged(CurStep: TSetupStep);
var
DataFilePath: string;
begin
// check if the current step is pre-installation step and if the
// application had been previously installed; if so, then...
if (CurStep = ssInstall) and (WizardForm.PrevAppDir <> '') then
begin
// build and store the path to the Data.mpd file from the prev.
// installation path
DataFilePath := AddBackslash(WizardForm.PrevAppDir) + 'Data.mpd';
// check, if that Data.mpd file exists; if so, then...
if FileExists(DataFilePath) then
// copy it to the target directory; if it fails, show error message
if not FileCopy(DataFilePath, <your new directory here>, False) then
MsgBox('Copying of the Data.mpd failed!', mbError, MB_OK);
end;
end;
を使用しDisableDirPage=auto
ます。これにより、アップグレード時にインストール パスを変更できなくなります。
次に、アプリケーション (インストーラーではなく) が独自のフォルダーでこのファイルを検出し、それをユーザーごとのフォルダーにコピーします。これにより、複数のユーザーがアプリケーションを実行する場合に最も堅牢な動作が得られます (これは、ユーザーごとのデータを持つことの要点です)。