Pregunta

Tengo una propiedad por la posibilidad de instalar accesos directos que necesitan ser pasado a través de argumentos de línea de comandos. Las condiciones parecen funcionar cuando me puse las propiedades dentro del archivo wxs, pero parecen ser ignorado cuando se configura a través de la línea de comandos. Desde el registro veo que se están estableciendo:

MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTUPSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLSTARTMENUSHORTCUT property. Its current value is '0'. Its new value: '1'.
MSI (s) (24:C8) [11:01:32:234]: PROPERTY CHANGE: Modifying INSTALLDESKTOPSHORTCUT property. Its current value is '0'. Its new value: '1'.

Sin embargo, no están siendo instalados los accesos directos.

Además, parece que ya que necesitan estar en su propio componente a ser capaz de establecer las condiciones en ellos, que ya no pueden ser accesos directos anunciados. ¿Cómo te condicionalmente instalado accesos directos anunciados?

código de acceso directo actual:

<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0"/>
...
<Component Id="StartMenuShortcut" Guid="MY-GUID">
  <Condition>INSTALLSTARTMENUSHORTCUT</Condition>
  <Shortcut Id="StartMenuServerShortcut"
    Directory="ProgramMenuDir"
    Name="Application Name" WorkingDirectory="INSTALLDIR" Advertise="no"
    Target="[!FileEXE]"
    Icon="Icon.ico" />
</Component>

Y repite para otros accesos directos

Editar:

Tratando lo que sugiere Sacha y añadiendo lo siguiente:

<Property Id="INSTALLSTARTUPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLDESKTOPSHORTCUT" Value="0" Secure="yes"/>
<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="yes"/>

Ahora se instala todos los accesos directos pesar de que está establecido en 0, tanto en el xml y en la línea de comandos. La línea de comandos que estoy pasando es:

msiexec /i MySetup.msi INSTALLSTARTUPSHORTCUT=0 INSTALLDESKTOPSHORTCUT=0 INSTALLSTARTMENUSHORTCUT=0 /l*v inst.log /qb

intentado poner los valores en las cotizaciones y sigue sin ir. No se muestra aquí, pero tuve éxito en la manipulación de la propiedad ALLUSERS hacer registros por usuario o por equipo haciendo ALLUSERS = "" o ALLUSERS = "2" Así pasa en propiedades debería ser posible, pero no estoy seguro de lo que estoy haciendo mal.

¿Fue útil?

Solución

Dos cosas ya que hay dos cuestiones aquí:

  1. Los accesos directos anunciados debe estar en el mismo componente que se instala el archivo que apuntan a. Es decir requried porque el instalador de Windows señala un Shorcut anunciado en el KeyPath del componente. Por lo tanto, no se puede utilizar Shorcuts anunciados si desea que sean instalados opcionalmente.

Tengo un entrada de blog acerca de cómo crear un atajo y pasar la validación .

  1. Las propiedades que se está utilizando necesidad de ser marcado seguro para pasar de la interfaz de usuario del proceso de instalación para el lado del servidor. Para ello acaba de hacer

Tenga en cuenta que no añadí un atributo de valor. Si se especifica un valor, incluso si es 0, entonces su INSTALLSTARTMENUSHORCUT evaluará a TRUE. Un no-definido Propiedad / en blanco es FALSE, cualquier otro valor es TRUE.

Otros consejos

¿Ha intentado marcar las propiedades tan seguro?

<Property Id="INSTALLSTARTMENUSHORTCUT" Value="0" Secure="Yes" />

En cuanto a la documentación de la de acceso directo de la tabla no creo que se puede obtener de forma condicional accesos directos anunciados. Nos evitar esto mediante la instalación de un acceso directo del menú inicio anunciado, y un acceso directo de escritorio normal.

Si IIRC publicidad ha de apostar a SÍ

Usted ha visto este ejemplo de MindCapers aquí , tuve problemas con los Shorcuts hasta que creado la entrada del registro.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top