Chcę zainstalować pliki w różnych folderach, w zależności od tego, czy użytkownik wybrał instalację dla wszystkich użytkowników, czy tylko dla bieżącego użytkownika.Ustawienia DestDir z Inno Pascal?
Dodałem używane CreateInputOptionPage(), aby utworzyć stronę opcji za pomocą dwóch przycisków opcji.
Jednak mój instalator jest teraz pełno z dużą ilością duplikatów wierszy, jak tych dwóch:
Source: {#ProjectRootFolder}\License.txt; DestDir: {userdocs}\{#MyAppName}; Check: NOT IsAllUsers
Source: {#ProjectRootFolder}\License.txt; DestDir: {commondocs}\{#MyAppName}; Check:IsAllUsers
Czy jest bardziej elegancki sposób to zrobić powyższych? Czy na przykład kod Pascala może utworzyć zmienną taką jak #define, więc mogę jej użyć zamiast powyższych {userdocs} i {commondocs}?
Więcej szczegółów:
The IsAllUsers (funkcja) powyżej nazywa ten kod:
function IsAllUsers: Boolean;
begin
#ifdef UPDATE
Result := AllUsersInRegistryIsTRUE;
#else
Result := AllUsersOrCurrentUserPage.Values[1]; // wizard page second radio button
#endif
end;
oraz:
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;
Sertac dał dobrą odpowiedź, ale należy pamiętać, że użytkownik uruchamia instalację może nie być oczekiwanym użytkownikiem, który jest zalogowany na komputerze. W takim przypadku dane "tylko tego użytkownika" będą należały do zupełnie innego "użytkownika". – Deanna