2011-08-24 12 views
12

Sto tentando di creare più collegamenti alla mia applicazione che passano diversi argomenti sulla riga di comando utilizzando l'attributo Arguments dell'elemento Shortcut. Voglio poter fare riferimento a una proprietà esistente da un'altra proprietà nel mio file WiX.Riferimento proprietà WiX Un'altra proprietà

Voglio essere in grado di creare un collegamento facendo riferimento alla proprietà ARGUMENTS via:

<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> 

Ho provato qualcosa di equivalente a:

<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> 

ma tanto sono questo avviso quando si passa attraverso candle.exe:

warni CNDL1077: La proprietà 'MY_APP_DIR' contiene '[PROGRAM_FILES]' nel suo valore che è un riferimento illegale a un'altra proprietà. Se questo valore è un valore letterale stringa, non un riferimento di proprietà , ignorare questo avviso. Per impostare una proprietà con il valore di un'altra proprietà, utilizzare un'azione CustomAction con proprietà e valore attributi.

Quindi, sulla base del suggerimento l'avvertimento sono passato a qualcosa di equivalente a:

<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"/> 

e non ottengo alcuna avvisi o errori, ma il problema è che quando installo l'applicazione le scorciatoie don avere gli argomenti nel campo obiettivo

Non sto facendo qualcosa che dovrei fare? C'è un modo per fare ciò che voglio fare?

risposta

11

Non sono necessarie le proprietà per i file di programma o la directory di installazione del prodotto. Utilizzare [#FileId] per fare riferimento al percorso completo del file.

Inoltre, se vuoi più scorciatoie, hai più elementi Shortcut con diversi attributi Arguments. Se si desidera una delle numerose scorciatoie, è possibile avere più Component s con Shortcut se utilizzare uno Condition per installarne solo uno.

+0

Non conoscevo la sintassi '[#FileId]'. Grazie. L'unico problema è un ** avviso LGHT1076: ICE69 ** quando viene passato attraverso _light.exe_. Quindi, funziona ma non è raccomandato dal momento che sto usando il riferimento al file in 'Component's diversi. –

+3

Un avviso ICE69 * * è OK se si assicura sempre che i componenti siano nella stessa funzione. Gli avvertimenti ICE indicano quasi sempre "hey, questo è qualcosa che dovresti controllare per assicurarti che sia ciò che intendevi", non che qualcosa sia raccomandato o no. –

Problemi correlati