Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/wix/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reference WiX属性引用另一个属性_Reference_Wix_Properties - Fatal编程技术网

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警告几乎总是意味着“嘿,这是你应该看的东西,以确保它是你的意思,”而不是什么是或不建议。