簡體   English   中英

通過自定義操作WIX安裝程序傳遞變量

[英]passing variable with an custom action WIX installer

我在傳遞所需的變量時遇到問題。 問題是這樣的:

我正在創建和安裝程序,需要同時在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)">

這可以正常工作,但是我也有一個CA.dll,需要獲取變量FOLDER_NAME,因為腳本對文件進行了一些更改,並且這些文件的路徑也需要更改,以便指向正確的位置。

我確實有一個將屬性轉移到同一腳本的自定義操作

    <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>

問題是我無法將這兩段代碼組合在一起並正常工作。 問題是我無法像在自定義操作中使用它那樣獲取屬性中變量的值。

我錯過了什么才能使其正常工作,或者我完全以錯誤的方式進行了工作?

提前致謝,

我自己弄清楚了,事實證明,我只是在錯誤的方向尋找,這很容易。

這是我所做的:

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

我要做的就是給屬性賦變量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM