Установка DestDir из Inno Pascal?

Я хочу установить файлы в разные папки, в зависимости от того, выбрал ли пользователь установку для всех пользователей или только для текущего пользователя.

Я добавил использование CreateInputOptionPage ()для создания страницы параметров с двумя переключателями.

Однако мой установщик теперь замусорен множеством повторяющихся строк, таких как эти две:

Source: {#ProjectRootFolder}\License.txt; DestDir: {userdocs}\{#MyAppName}; Check: NOT IsAllUsers
Source: {#ProjectRootFolder}\License.txt; DestDir: {commondocs}\{#MyAppName}; Check:IsAllUsers

Есть ли более элегантный способ сделать вышеописанное? Может ли код Pascal, например, создать переменную типа #define Does, чтобы я мог использовать ее вместо {userdocs} и {commondocs} выше?

Дополнительная информация:

Функция IsAllUsers ()выше вызывает этот код:

function IsAllUsers: Boolean;
begin
#ifdef UPDATE
  Result := AllUsersInRegistryIsTRUE;
#else
  Result := AllUsersOrCurrentUserPage.Values[1]; // wizard page second radio button
#endif
end; 

и:

function AllUsersInRegistryIsTRUE: Boolean;  // True if preceding install was to all users' documents 
var
  AllUsersRegValue: AnsiString;
begin
  if RegQueryStringValue(HKEY_LOCAL_MACHINE, 'Software\MyApp', 'AllUsers', AllUsersRegValue) then
    Result := (UpperCase(AllUsersRegValue) = 'YES')
  else
    Result := FALSE;
end; 
5
задан RobertFrank 8 June 2012 в 16:30
поделиться