Desidero installare i file in cartelle diverse, a seconda che l'utente abbia scelto di installare per tutti gli utenti o solo l'utente corrente.Impostazione DestDir di Inno Pascal?
Ho aggiunto usato CreateInputOptionPage() per creare una pagina di opzioni con due pulsanti di opzione.
Tuttavia, la mia installazione è ora cosparso di un sacco di linee duplicate, come questi due:
Source: {#ProjectRootFolder}\License.txt; DestDir: {userdocs}\{#MyAppName}; Check: NOT IsAllUsers
Source: {#ProjectRootFolder}\License.txt; DestDir: {commondocs}\{#MyAppName}; Check:IsAllUsers
Esiste un modo più elegante per fare quanto sopra? Il codice Pascal può, ad esempio, creare una variabile come #define, così posso usarla al posto di {userdocs} e {commondocs} sopra?
Ulteriori dettagli:
I IsAllUsers) la funzione (sopra le chiamate di questo codice:
function IsAllUsers: Boolean;
begin
#ifdef UPDATE
Result := AllUsersInRegistryIsTRUE;
#else
Result := AllUsersOrCurrentUserPage.Values[1]; // wizard page second radio button
#endif
end;
e:
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 dato una buona risposta, ma ricordate che l'utente Runnign l'installazione non può essere l'utente prevede che sono collegati al computer. In questo caso, i tuoi dati "solo questo utente" finiranno per appartenere a un "utente" completamente diverso. – Deanna