Reference WiX属性引用另一个属性
我试图通过使用元素的Reference WiX属性引用另一个属性,reference,wix,properties,Reference,Wix,Properties,我试图通过使用元素的arguments属性,为我的应用程序创建多个快捷方式,在命令行上传递不同的参数。我希望能够从我的WiX文件中的另一个属性引用现有属性 我希望能够通过以下方式通过引用参数属性来创建快捷方式: <Component Id="MyAppProgramMenuShortcut" Guid="MY-GUID-HERE"> <RegistryValue Root="HKCU" Key="Software\[Manufacturer]\[Prod
arguments
属性,为我的应用程序创建多个快捷方式,在命令行上传递不同的参数。我希望能够从我的WiX文件中的另一个属性引用现有属性
我希望能够通过以下方式通过引用参数
属性来创建快捷方式:
<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>
我尝试了一些相当于:
<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>
<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"/>
C:\程序文件
[程序文件]\MyApp
[MY_APP_DIR]\fileA.xml[MY_APP_DIR]\fileB.xml
但是,当我通过candle.exe传递它时,会收到以下警告:
警告CNDL1077:“我的应用程序目录”属性包含
“[PROGRAM_FILES]”的值,该值是对的非法引用
另一个属性。如果此值是字符串文字,而不是属性
参考,请忽略此警告。使用
另一个属性的值,将CustomAction与属性和值一起使用
属性
因此,根据警告中的建议,我切换到相当于:
<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>
<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"/>
我没有收到任何警告或错误,但问题是,当我安装应用程序时,快捷方式在目标字段中没有参数
我不是在做我应该做的事情吗?有什么方法可以完成我想做的吗?您不需要程序文件或产品安装目录的属性。使用
[#FileId]
引用该文件的完整路径
另外,如果您想要多个快捷方式,只需使用多个具有不同的
参数
属性的快捷方式
元素即可。如果您想要几个快捷方式中的一个,您可以使用多个带有快捷方式的组件
s,并使用条件
仅安装其中一个。我不知道[#FileId]
语法。谢谢唯一的问题是通过light.exe时出现警告LGHT1076:ICE69。因此,它可以工作,但不推荐使用,因为我在不同的组件中使用文件引用。如果始终确保组件处于相同的功能中,ICE69警告是可以的。ICE警告几乎总是意味着“嘿,这是你应该看的东西,以确保它是你的意思,”而不是什么是或不建议。