2011-09-08 23 views
7

Tôi có yêu cầu nơi tôi cần hiển thị thỏa thuận cấp phép theo ngôn ngữ hệ điều hành. Thỏa thuận cấp phép bản địa hóa (.rtf) được lưu trữ trên máy chủ.WIX: cách thay đổi thỏa thuận cấp phép trong khi cài đặt

Tôi đã tạo hành động tùy chỉnh để phát hiện ngôn ngữ OS và tải xuống thỏa thuận cấp phép tương ứng, nhưng làm cách nào tôi có thể hiển thị thỏa thuận cấp phép được bản địa hóa trong hộp thoại thỏa thuận cấp phép?

Tôi có tất cả các tập hợp hộp thoại (.wxs). Tôi đang sử dụng hộp thoại Wix_Minimal.

tôi đã cố gắng thay đổi những dòng sau trong WelcomeEulaDlg.wxs

<Control Id="LicenseText" Type="ScrollableText" X="130" Y="36" Width="226" Height="162" Sunken="yes" TabSkip="no"> 
    <Text SourceFile="!(wix.WixUILicenseRtf=$(var.licenseRtf))" /> 
</Control> 

để

<Control Id="LicenseText" Type="ScrollableText" X="130" Y="36" Width="226" Height="162" Sunken="yes" TabSkip="no" Text="[MyPropertyConatingRTFData]"> 
</Control> 

nhưng, không có gì xuất hiện trong văn bản thỏa thuận cấp phép.

Tôi làm cách nào để đặt văn bản này?

+0

Tôi không nghĩ rằng nó có thể. Nhưng tôi có thể nghĩ về một hack: đặt một GUID làm văn bản; khi hộp thoại giấy phép hiển thị, hãy lên lịch hành động tùy chỉnh tìm thấy [điều khiển chỉnh sửa] (http://msdn.microsoft.com/en-us/library/aa371540.aspx) và nạp RTF bạn đã tải xuống vào đó. Cách tiếp cận này không đáng tin cậy nhưng bạn có thể thử nó. –

Trả lời

-2

Bạn có thể có biến phiên nói LOCLICENSEFILEPATH sẽ chứa đường dẫn đến tệp Giấy phép dựa trên bản địa hóa. Vì vậy, trong Control bạn chỉ cần vượt qua biến này.

<Control Id="AgreementText" Type="ScrollableText" X="20" Y="60" Width="330" Height="140" Sunken="yes" TabSkip="no"> 
    <Text SourceFile="[LOCLICENSEFILEPATH]" /> 
</Control> 
+0

Khi tôi biên dịch, tôi nhận được '[LOCLICENSEFILEPATH]' không tìm thấy –

+0

Bạn phải xác định biến 'LOCLICENSEFILEPATH' trước tiên. Ví dụ: '' –

+0

Tôi đã làm điều đó, nhưng vẫn còn –

3

Thật không may là thỏa thuận cấp phép chỉ là một tập tin tại thời gian xây dựng - một khi MSI được xây dựng RTF được nhúng vào trong định dạng văn bản như một giá trị trong bảng Control. (Bạn có thể xem này sử dụng Orca)

Điều này có nghĩa là để cập nhật này kiểm soát tự động, hành động tùy chỉnh của bạn (s) sẽ cần phải làm như sau:

  • Tải tập tin RTF
  • đọc RTF vào một chuỗi biến
  • Thay thế giá trị trong bảng MSI có liên quan với một cái gì đó như thế này:
    • 'UPDATE Control SET Text='" & sRTFText & "' WHERE Dialog_='LicenseAgreementDlg' AND Control='LicenseText'

Một giải pháp dễ dàng hơn sẽ bao gồm tất cả ngôn ngữ trong file RTF cùng :)

+2

Hmm, theo MSDN, "hành động tùy chỉnh không thể sửa đổi dữ liệu liên tục trong cơ sở dữ liệu" : http: //msdn.microsoft.com/en-us/library/aa370519.aspx ... do đó, điểm số 3 sẽ không hoạt động –

+0

Tôi đã thử xem mẫu msi trong orca nhưng trong thuộc tính văn bản trong điều khiển cấp phép giấy phép bị trống –

Các vấn đề liên quan