Chúng tôi đã phát triển một sản phẩm là một addin VSTO tiêu chuẩn (Word 2010 và Word 2013, x86 only). Theo mặc định khi nó được cài đặt, nó được cài đặt cho tất cả người dùng (ví dụ: các mục đăng ký addin được chèn vào HKLM - HKEY_LOCAL_MACHINE\SOFTWARE\[Wow6432Node]\Microsoft\Office\Word\Addins
).MS Office Word VSTO “Tải theo yêu cầu”
Khi giá trị cho khóa LoadBehavior
reg được thiết lập để 0x3
(tức là "Load at Startup"), các addin làm việc hoàn toàn tốt đẹp, tuy nhiên khi chúng ta thiết lập giá trị cho LoadBehavior
-0x10
(tức là "Load theo yêu cầu"), addin không hoạt động như chúng ta mong đợi:
do UAC (và rằng Word không chạy nâng lên), giá trị của LoadBehavior
trong HKLM là không thay đổi 0x10
-0x9
mà thay vào đó sẽ bị thay thế bằng cách tạo ra một chìa khóa LoadBehavior
(với giá trị 0x9
) trong hòm HKCU.
Thật không may, chúng tôi nhận thấy rằng giá trị ghi đè HKCU này không được tính đến trừ khi phím kê khai có trong HKCU hive cùng với LoadBehavior
). Thông tin thêm về chủ đề này có liên quan: https://social.msdn.microsoft.com/Forums/vstudio/en-US/3776734b-333e-423b-9c08-7c7a441c3e94/load-behavior-and-word-addin?forum=vsto
Các phương thuốc 'rõ ràng' cho vấn đề này là viết Manifest
vào HKCU cho mỗi người dùng (cũng như trong HKLM) lúc cài đặt thời gian HOẶC khi mỗi người dùng chạy các addin sự lần đầu tiên. Tuy nhiên, có một số hạn chế nghiêm trọng với cách tiếp cận này:
- Gỡ cài đặt trình bổ sung yêu cầu xóa mọi giá trị HKCU người dùng để ngăn người dùng gặp vấn đề tải (không được khuyến nghị và đặt các vấn đề khác) - Remove registry keys under HKCU on a per machine installation).
- Người dùng có các giá trị này trong hive HKCU (chuyển vùng) của họ, gặp sự cố khi họ đăng nhập vào máy trong cùng miền không cài đặt chương trình bổ trợ của chúng tôi.
Có một lỗi mà manifest không lấy từ HKLM nơi LoadBehavior
được thiết lập một cách thích hợp trong HKCU? Tôi nghĩ rằng vấn đề này sẽ được giải quyết nếu LoadBehavior
trong HKLM có thể được ghi đè trong HKCU mà không cần giá trị Manifest
cũng được ghi đè.
Có ai biết cách khắc phục sự cố này không?
Cảm ơn vì @ dirk-vollmar này. Chỉ cần làm rõ, lý do chính đằng sau việc muốn sử dụng 'LoadOnDemand' không phải vì chúng ta có một bổ trợ chậm, mà là bởi vì chúng ta có rất nhiều và các add-in mà tất cả đều là kinh doanh quan trọng. Chúng cạnh tranh cho các nguồn lực và thường "xung đột" và lỗi nếu được nạp cùng một lúc. Than ôi, chúng ta phải sống trong một thế giới mà chúng ta không thể thay đổi các add-in khác, và khi bạn có nhiều như hầu hết khách hàng của chúng tôi làm, bạn không thể yêu cầu tất cả họ cải thiện tải của họ. – RoKa