使用 .ini 文件中指定的路径更改 Xml 中的 RootDrive

Change the RootDrive in Xml with the path specified in .ini file

我正在使用 WIX 安装程序。我正在尝试读取从 .ini 文件到 XML 的目录路径。我必须红色路径并将文件安装到该特定路径。

    <Property Id="ROOTDRIVE">
        <![CDATA[*value which is read from .ini file has to be passed here*]]>
    </Property>
    <Property Id="MY_PROPERTY">
      <IniFileSearch Id="myIniSearch" Name="localtest.ini" Section="ENVIRONMENT" Key="LocalDirectory" Type="raw">
        <DirectorySearch Id="SPIniFilePath" Path="C:\">
          <FileSearch Id="SPIniFile" Name="localtest.ini"/>
        </DirectorySearch>
      </IniFileSearch> />
   </Property>

  <Fragment>
    <Directory Id="TARGETDIR" Name="SourceDir" >
      <Directory Id="myIniSearch">
        <Directory Id="INSTALLFOLDER" Name="!(bind.property.ProductName)" />
      </Directory>
   </Directory>
  </Fragment>

localtest.ini 是 .ini 文件。在C盘

    [ENVIRONMENT]
    LocalDirectory=D:\Ng

文件应安装到 .ini 文件中指定的路径。接下来我添加了 CustonAction。仍然安装在C盘

    <Property Id="MY_PROPERTY" Secure="yes">
      <IniFileSearch Id="myIniSearch" Name="localtest.ini" Section="ENVIRONMENT" Key="LocalDirectory" Type="raw">
        <DirectorySearch Id="SPIniFilePath" Path="C:\">
          <FileSearch Id="SPIniFile" Name="localtest.ini"/>
        </DirectorySearch>
      </IniFileSearch> 
    </Property>
<CustomAction Id="MyAction.SetProperty" Return="check" Property="MyAction" Value="[MY_PROPERTY]" />
<InstallExecuteSequence>
  <Custom Action="MyAction.SetProperty" After="AppSearch" />
</InstallExecuteSequence>
<DirectoryRef Id='MY_PROPERTY'>
  <Directory Id='INSTALLDIR_SimpleWebApp' Name='SimpleWebApp' />
</DirectoryRef>

从您的代码看来,MY_PROPERTY 将设置为在 ini 文件中找到的目录(如果找到的话)。在这种情况下,安排类型 51 自定义操作(在 AppSearch 之后),如果 MY_PROPERTY 不为空,则将 'INSTALLFOLDER' 设置为值“[MY_PROPERTY]!(bind.property.ProductName)” .

(我相信您可以删除 ROOTDRIVE 和 myIniSearch 属性)