Quiero instalar archivos en diferentes carpetas, dependiendo de si el usuario ha seleccionado instalar para todos los usuarios o solo para el usuario actual.Configurando DestDir de Inno Pascal?
He agregado CreateInputOptionPage() usado para crear una página de opciones con dos botones de opción.
Sin embargo, mi instalador ahora está plagada de una gran cantidad de líneas duplicadas, como estos dos:
Source: {#ProjectRootFolder}\License.txt; DestDir: {userdocs}\{#MyAppName}; Check: NOT IsAllUsers
Source: {#ProjectRootFolder}\License.txt; DestDir: {commondocs}\{#MyAppName}; Check:IsAllUsers
¿Hay una manera más elegante de hacer lo anterior? ¿Puede el código Pascal, por ejemplo, crear una variable como #define para que pueda usarlo en lugar de {userdocs} y {commondocs} arriba?
Más detalles:
Los IsAllUsers función() por encima de llamadas de este código:
function IsAllUsers: Boolean;
begin
#ifdef UPDATE
Result := AllUsersInRegistryIsTRUE;
#else
Result := AllUsersOrCurrentUserPage.Values[1]; // wizard page second radio button
#endif
end;
y:
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 ha dado una buena respuesta, pero recuerde que el usuario que ejecuta la instalación puede no ser el usuario esperado que está conectado a la computadora. En este caso, sus datos "solo este usuario" terminarán perteneciendo a un "este usuario" completamente diferente. – Deanna