Я хочу установить файлы в разные папки, в зависимости от того, выбрал ли пользователь установку для всех пользователей или только для текущего пользователя.
Я добавил использование 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;