Tôi muốn cài đặt tệp trong các thư mục khác nhau, tùy thuộc vào việc người dùng đã chọn cài đặt cho tất cả người dùng hay chỉ người dùng hiện tại.Đặt DestDir từ Inno Pascal?
Tôi đã thêm CreateInputOptionPage() được sử dụng để tạo trang tùy chọn có hai nút radio.
Tuy nhiên, trình cài đặt của tôi bây giờ rải rác với rất nhiều dòng trùng lặp, giống như hai:
Source: {#ProjectRootFolder}\License.txt; DestDir: {userdocs}\{#MyAppName}; Check: NOT IsAllUsers
Source: {#ProjectRootFolder}\License.txt; DestDir: {commondocs}\{#MyAppName}; Check:IsAllUsers
Có cách thanh lịch hơn để làm các việc trên? Ví dụ, mã Pascal có thể tạo biến như #define để tôi có thể sử dụng nó thay cho {userdocs} và {commondocs} ở trên không?
Thông tin chi tiết:
Các IsAllUsers() chức năng cuộc gọi mã này trên:
function IsAllUsers: Boolean;
begin
#ifdef UPDATE
Result := AllUsersInRegistryIsTRUE;
#else
Result := AllUsersOrCurrentUserPage.Values[1]; // wizard page second radio button
#endif
end;
và:
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 đã đưa ra một câu trả lời hay, nhưng hãy nhớ rằng người dùng chạy thiết lập có thể không phải là người dùng dự kiến đã đăng nhập vào máy tính. Trong trường hợp này, dữ liệu "chỉ người dùng này" của bạn sẽ kết thúc thuộc về "người dùng này" hoàn toàn khác. – Deanna