Tôi muốn khẳng định rằng một giá trị registry nào đó tồn tại sau khi cài đặt, vì vậy tôi đã thêm các thành phần sau đây:WiX: Làm cách nào để ngăn chặn giá trị đăng ký bị xóa khi gỡ cài đặt?
<Component Id="RegistryEntryContextMenuOdt" Guid="4BA5BA24-4F65-4BDF-99EB-CB4B947F31A9" DiskId="1" KeyPath="yes">
<RegistryKey Id="RegKeyOdt" Root="HKCR" Action="create" Key=".odt">
<RegistryValue Type="string" Value="openDocument.WriterDocument.1" />
</RegistryKey>
</Component>
Chìa khóa/giá trị đã có thể được thiết lập trước khi cài đặt. Tuy nhiên, tôi muốn rằng giá trị được đặt thành giá trị cụ thể của tôi, nghĩa là giá trị đó sẽ được ghi đè bằng giá trị của tôi.
Vấn đề của tôi bây giờ là giá trị này là luôn luôn bị xóa khi sản phẩm của tôi bị gỡ cài đặt. Tuy nhiên, tôi chỉ muốn xóa giá trị nếu nó được trình cài đặt của tôi thêm vào. Nếu trình cài đặt của tôi vừa sửa đổi giá trị, giá trị trước đó sẽ được khôi phục (hoặc, nếu điều này là không thể, giá trị của tôi sẽ không bị ảnh hưởng).
Xin lưu ý rằng chính khóa đó không bị xóa khi gỡ cài đặt. Điều này có vẻ hoạt động chính xác vì tôi đã chỉ định Action="create"
trên phần tử RegistryKey
.
Có thể thiết lập tương tự cho RegistryValue
sẽ tạo giá trị nhưng không xóa nó khi cài đặt?
CẬP NHẬT: Cả hai khóa đăng ký trong HKCR đều có cài đặt máy rộng, nghĩa là chúng bắt nguồn từ nhánh HKLM \ SOFTWARE \ Classes của sổ đăng ký.
Cảm ơn, điều này rất hữu ích. Hãy để tôi kiểm tra điều này :-) –
+1 cho nhận xét KeyPath! –