「自分用にインストール」が選択されている場合、セットアップで HKCU の下にレジストリ値を書き込みます。プログラムの起動時にキーを照会し、それに応じて既定のフォルダーを決定します。
タスクを使用してユーザーにインストールの種類を選択させる場合は、次のようなレジストリ エントリを使用できます。
[Registry]
Root: HKCU; SubKey: SOFTWARE\MyCompany\MyProg; ValueType: dword; ValueName: InstallUserOnly; ValueData: 1; Tasks: install_just_for_me; Flags: UninsDeleteValue;
次に、アプリケーションの起動時に次のようなことができます。
function GetSpecialFolderPath(Folder: Integer; CanCreate: Boolean): string;
begin
SetLength(Result, MAX_PATH + 1);
SHGetSpecialFolderPath(0, PChar(Result), FOLDER, CanCreate);
Result := PChar(Result);
end;
...
var
Reg: TRegistry;
DefFolder: string;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('\SOFTWARE\MyCompany\MyProg', False) then begin
if Reg.ValueExists('InstallUserOnly') then
DefFolder := GetSpecialFolderPath(CSIDL_PERSONAL, True)
else
DefFolder := GetSpecialFolderPath(CSIDL_COMMON_DOCUMENTS, True);
end;
finally
Reg.Free;
end;
もちろん、必要に応じてレジストリ値を読み取ることもできます。