我在传递所需变量时遇到问题。问题是:
我正在创建和安装程序,需要在x86和x64上工作。使用以下代码更改我管理的安装目标:
<?if $(sys.BUILDARCH)=x64?>
<?define PlatformProgramFilesFolder = "ProgramFilesX86"?>
<?define FOLDER_NAME = Program Files (x86) ?>
<?else?>
<?define PlatformProgramFilesFolder = "ProgramFilesFolder"?>
<?define FOLDER_NAME = Program Files ?>
<?endif?>
<Directory Id="$(var.PlatformProgramFilesFolder)" Name="$(var.FOLDER_NAME)">
这样可以正常工作,但是我还有一个需要获取变量FOLDER_NAME的CA.dll,因为脚本会对文件进行一些更改,并且还需要更改这些文件的路径以指向正确的位置
我确实有一个自定义操作,可以将属性转移到同一个脚本
<Property Id ="MACHINE_ID_NUMBER" Secure ="yes">
<![CDATA[]]>
</Property>
<Property Id ="MACHINE_TYPE" Secure ="yes">
<![CDATA[]]>
</Property>
<CustomAction
Id="SetProperties"
Property="ValueAdaptionScript"
HideTarget="no"
Value="MachineID=[MACHINE_ID_NUMBER];MachineType=[MACHINE_TYPE]"
/>
<CustomAction
Id="ValueAdaptionScript"
BinaryKey="StringTransfer"
DllEntry="CustomAction1"
Execute="deferred"
Impersonate="no"
Return="check"
/>
<InstallExecuteSequence>
<Custom Action="SetProperties" Before="ValueAdaptionScript" />
<Custom Action="ValueAdaptionScript" Before="InstallFinalize">NOT REMOVE="ALL"</Custom>
</InstallExecuteSequence>
问题在于我无法将这两段代码组合在一起工作。问题是我无法在属性中获取变量的值,因为需要在自定义操作中使用它。
我错过了什么让它工作或我完全以错误的方式做到了?
提前感谢,
答案 0 :(得分:0)
我自己想通了,事实证明我只是朝着错误的方向前进。
这就是我所做的:
<Property Id ="PLATFORM_PROGRAM_FILES" Secure ="yes">
<![CDATA[$(var.FOLDER_NAME)]]>
</Property>
我所要做的就是给属性赋予变量。