2011-08-24 44 views
12

Tôi đang cố gắng tạo nhiều lối tắt cho ứng dụng của mình chuyển các đối số khác nhau trên dòng lệnh bằng cách sử dụng thuộc tính Arguments của phần tử Shortcut. Tôi muốn có thể tham chiếu thuộc tính hiện tại từ một thuộc tính khác trong tệp WiX của tôi.Tài sản tham khảo WiX Tài sản khác

Tôi muốn để có thể tạo ra một shortcut bằng cách tham khảo ARGUMENTS bất động sản qua:

<Component Id="MyAppProgramMenuShortcut" Guid="MY-GUID-HERE"> 
    <RegistryValue Root="HKCU" 
     Key="Software\[Manufacturer]\[ProductName]\MyAppShortcut" Type="string" 
     Value="" KeyPath="yes" /> 
    <Shortcut Id="ProgramMenuShortcutMyApp" Directory="ProgramMenuDir" 
     Name="MyApp" Target="[SHORTCUT_TARGET]" 
     Arguments="-jar myApp.jar [ARGUMENTS]" WorkingDirectory="INSTALLDIR" 
     Icon="logo.ico" /> 
</Component> 

Tôi đã thử một cái gì đó tương đương với:

<Property Id="PROGRAM_FILES">C:\Program Files</Property> 
<Property Id="MY_APP_DIR">[PROGRAM_FILES]\MyApp</Property> 
<Property Id="ARGUMENTS">[MY_APP_DIR]\fileA.xml [MY_APP_DIR]\fileB.xml</Property> 

nhưng sau đó tôi nhận được cảnh báo này khi đi qua thông qua candle.exe:

warni ng CNDL1077: Thuộc tính 'MY_APP_DIR' chứa '[PROGRAM_FILES]' trong giá trị của nó là tham chiếu bất hợp pháp đến một thuộc tính khác. Nếu giá trị này là một chuỗi ký tự, không phải là thuộc tính , vui lòng bỏ qua cảnh báo này. Để đặt thuộc tính với giá trị của thuộc tính khác, hãy sử dụng CustomAction với thuộc tính và giá trị thuộc tính.

Vì vậy, căn cứ vào đề nghị trong cảnh báo tôi chuyển sang một cái gì đó tương đương với:

<CustomAction Id="PROGRAM_FILES" Property="PROGRAM_FILES" Value="C:\Program Files"/> 
<CustomAction Id="MY_APP_DIR" Property="MY_APP_DIR" Value="[PROGRAM_FILES]\MyApp"/> 
<CustomAction Id="ARGUMENTS" Property="ARGUMENTS" Value="[MY_APP_DIR]\fileA.xml [MY_APP_DIR]\fileB.xml"/> 

và tôi không nhận được cảnh báo hoặc lỗi, nhưng vấn đề là khi tôi cài đặt ứng dụng các phím tắt don không có đối số trong trường mục tiêu.

Tôi có đang làm điều gì đó mà tôi nên làm không? Có cách nào để làm những gì tôi muốn làm không?

Trả lời

11

Bạn không cần thuộc tính cho Tệp chương trình hoặc thư mục cài đặt của sản phẩm. Sử dụng [#FileId] để tham chiếu đến đường dẫn đầy đủ đến tệp đó.

Ngoài ra, nếu bạn muốn nhiều phím tắt, chỉ cần có nhiều thành phần Shortcut với các thuộc tính khác nhau Arguments. Nếu bạn muốn một trong nhiều phím tắt, bạn có thể có nhiều Component s với Shortcut s và sử dụng Condition để chỉ cài đặt một trong số các phím tắt đó.

+0

Tôi không biết về cú pháp '[#FileId]'. Cảm ơn. Vấn đề duy nhất là cảnh báo ** LGHT1076: ICE69 ** khi chuyển qua _light.exe_. Vì vậy, nó hoạt động nhưng nó không được khuyến khích vì tôi đang sử dụng tham chiếu tập tin trong 'Thành phần' khác nhau. –

+3

Cảnh báo ICE69 * là OK nếu bạn luôn đảm bảo rằng các thành phần nằm trong cùng một tính năng. Cảnh báo ICE hầu như luôn có nghĩa là "này, đây là điều bạn nên xem xét để đảm bảo đó là ý của bạn", không phải điều gì đó là hay không được khuyến nghị. –

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