Sau example here, tôi đã thêm lối tắt vào ProgramMenuFolder để khởi chạy ứng dụng của mình. (Mã của tôi thực sự là đơn giản vì tôi không cần các thư mục phụ.)(WiX) Phím tắt tệp chương trình cho mỗi máy cài đặt
<DirectoryRef Id='ProgramMenuFolder'>
<Component Id='cmpStartMenuShortcut'
Guid='MY GUID HERE'>
<Shortcut Id='StartMenuShortcut'
Name='$(var.ProductName)'
Icon='MainIcon.ico'
Description='$(var.ProductName)'
Target='[ClientDir]myapp.exe'
WorkingDirectory='ClientDir'/>
<RegistryValue Action='write' Type='integer' Root='HKCU'
Key='Software\Company\Product Name'
Name='installed' Value='1' KeyPath='yes'/>
</Component>
</DirectoryRef>
Kể từ khi cài đặt của tôi là mỗi máy (AllUsers = 1, Gói/@ InstallPrivileges = 'cao', và @ InstallScope = 'perMachine ') ProgramMenuFolder là thư mục cho tất cả người dùng trên máy.
Câu hỏi của tôi phải thực hiện với giá trị đăng ký. Sự hiểu biết của tôi là nó chỉ cần để cung cấp một KeyPath cho thành phần có chứa các phím tắt. Mẫu sử dụng HKCU, là một vị trí cho mỗi người dùng.
Không phải là một sai lầm khi sử dụng giá trị cho mỗi người dùng dưới dạng KeyPath cho thành phần cho mỗi máy?
Nếu máy có hai quản trị viên và quản trị viên số 1 cài đặt sản phẩm và quản trị viên # 2 sửa chữa, Windows Installer sẽ không thấy giá trị đăng ký và nghĩ rằng phím tắt bị thiếu và cài đặt trùng lặp, phải không?
Vì vậy, tôi cố gắng thay đổi RegistryValue/@ gốc để HKLM, nhưng sau đó WiX phàn nàn: LGHT0204
lỗi: ICE38: Component cmpStartMenuShortcut cài đặt vào hồ sơ của người dùng. Đó là [sic] KeyPath khóa registry phải thuộc HKCU.
lỗi LGHT0204: ICE43: Thành phần cmpStartMenuShortcut có các phím tắt không được quảng cáo. Đó là [sic] KeyPath khóa registry nên thuộc HKCU.
lỗi LGHT0204: ICE57: Thành phần 'cmpStartMenuShortcut' có cả dữ liệu trên mỗi người dùng và mỗi máy với KeyPath trên mỗi máy.
Tôi không hiểu tại sao khóa phải nằm trong HKCU.
Cảm ơn. Giải pháp này dường như đang làm việc cho tôi. Tôi không biết tôi sẽ phải học về XSLT khi tôi bắt đầu xuống đường WiX. –
Bạn chưa thực sự trả lời lý do tại sao một lối tắt không được quảng cáo không thể viết 'KeyPath' thành HKLM, hoặc tại sao một lối tắt không được quảng cáo yêu cầu ** registry ** 'KeyPath' nhưng không được quảng cáo. –