使用 .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 属性)
我正在使用 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 属性)