es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cambie la variable RootDrive en Xml con la ruta especificada en el archivo .ini.

Estoy trabajando en Instalador WIX. Estoy intentando leer la ruta del directorio desde el archivo .ini a XML. Tengo que leer la ruta y obtener los archivos instalados en esa ruta en particular.

    <Property Id="ROOTDRIVE">
        <![CDATA[*el valor que se lee del archivo .ini debe pasarse aquí*]]>
    </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>

El archivo localtest.ini es el archivo .ini. Está en la unidad C.

[ENVIRONMENT]
LocalDirectory=D:\Ng

Los archivos deben ser instalados en la ruta especificada en el archivo .ini. A continuación, añadí una acción personalizada (CustomAction). Sin embargo, todavía se instala en la unidad 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>
Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    El problema aquí parece ser que la propiedad “MY_PROPERTY” no se está estableciendo correctamente, por lo que los archivos no se están instalando en la ruta correcta. Para solucionar esto, se utiliza una acción personalizada para establecer el valor de “MY_PROPERTY” a partir del valor leído del archivo .ini mediante el elemento IniFileSearch.

    Para asegurarse de que la acción personalizada se ejecute después de la acción AppSearch, se agrega al elemento InstallExecuteSequence con el atributo After establecido en “AppSearch”.

    Finalmente, se actualiza el elemento DirectoryRef para usar “MY_PROPERTY” como el Id y establecer el directorio INSTALLDIR_SimpleWebApp como un subdirectorio de este directorio. Esto asegurará que los archivos se instalen en la ruta especificada en el archivo .ini.

    <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"></filesearch>
        </directorysearch>
      </inifilesearch> 
    </property>
    <customaction id="MyAction.SetProperty" return="check" property="MY_PROPERTY" value="[MY_PROPERTY]"></customaction>
    <installexecutesequence>
      <custom action="MyAction.SetProperty" after="AppSearch"></custom>
    </installexecutesequence>
    <directoryref id="MY_PROPERTY">
      <directory id="INSTALLDIR_SimpleWebApp" name="SimpleWebApp"></directory>
    </directoryref>
    

Comments are closed.