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?
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. –
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. –