使用自定义操作WIX安装程序传递变量

时间:2015-10-27 11:25:21

标签: vb.net wix

我在传递所需变量时遇到问题。问题是:

我正在创建和安装程序,需要在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>

问题在于我无法将这两段代码组合在一起工作。问题是我无法在属性中获取变量的值,因为需要在自定义操作中使用它。

我错过了什么让它工作或我完全以错误的方式做到了?

提前感谢,

1 个答案:

答案 0 :(得分:0)

我自己想通了,事实证明我只是朝着错误的方向前进。

这就是我所做的:

    <Property Id ="PLATFORM_PROGRAM_FILES" Secure ="yes">
  <![CDATA[$(var.FOLDER_NAME)]]>
</Property>

我所要做的就是给属性赋予变量。