Estoy tratando de conseguir un condicional componente para trabajar.

Sin embargo no funciona en todos, así que estoy perplejo.

Tengo los siguientes bloques de código:

La función está definida de la siguiente forma:

<Feature Id="MainFeature" Level="1" Title="!(loc.FEATURE.MAINFEATURE.TITLE)" 
         Description="!(loc.FEATURE.MAINFEATURE.DESCRIPTION)" Display="collapse">
      <ComponentRef Id="MainExecutable" />
      <ComponentRef Id="pmd" />
</Feature>

y el componente se define como

<Component Id="MainExecutable" Guid="*">
 <Condition><![CDATA[(&MainFeature = 3) AND NOT (!MainFeature = 3)]]></Condition>
    <File Id="MainExecutableFile" Name="SampleApp.exe" 
          Source="..\ProductBuild\sampleFile.txt" KeyPath="yes">
     <Shortcut Id="MainExecutableStartMenu" Directory="ProgramMenuDir" 
               Name="!(loc.APPNAME)" WorkingDirectory="INSTALLDIR" 
               Icon="icon.ico" IconIndex="0" Advertise="yes"/>
     <Shortcut Id="MainExecutableDesktop" Directory="DesktopFolder" 
               Name="!(loc.APPNAME)" WorkingDirectory="INSTALLDIR" 
               Icon="icon.ico" IconIndex="0" Advertise="yes" />
    </File>
</Component>

Sin embargo los archivos nunca se instalan!

InformationsquelleAutor Dreaddan | 2013-03-27

1 Comentario

  1. 6

    Un Component Condition no es evaluado en un momento en que la característica de los estados se han determinado. Por lo tanto, su Condition nunca evaulate correctamente (como usted lo ha encontrado).

    Sin embargo, no estoy seguro de que necesitas el Condition. Los componentes se instalará únicamente cuando su Característica principal es establecer a ser instalada. Parece que su Condition está tratando de replicar el construido en el comportamiento (pero no puede debido a la anterior).

    • Se me rompió esta en algún detalle: joyofsetup.com/2008/04/09/…
    • Rob – Gah! Como pensaba que no está haciendo lo que se espera…. El ejemplo anterior es muy rebuscado para proporcionar una forma muy sencilla de casos de uso. Quiero instalar un corte corto, dependiendo de si un componente está instalado o no, pero yo quería agrupar a todos los atajos juntos para hacer la vida más fácil…. No importa.lt;br/> @Bob – que es probablemente el único blog no he encontrado al intentar averiguar por qué no su trabajo! Se golpea el clavo en la cabeza – la documentación es engañosa en el mejor!
    • Sí, suena como un caso de «no hacerlo de esa manera». 😉 Espero que un encontrar una solución elegante que todavía funciona bien con el Instalador de Windows.

Dejar respuesta

Please enter your comment!
Please enter your name here