2011-04-23 15 views
6

Estaba siguiendo el tutorial here para implementar un acceso directo de desinstalación en el menú de inicio.¿Desinstalar el acceso directo en WiX cuando Product Id es * para permitir actualizaciones importantes?

En resumen, la forma de crear la entrada de desinstalación es el siguiente:

<Shortcut Id="UninstallProduct"    
      Name="Uninstall My Application" 
      Target="[SystemFolder]msiexec.exe" 
      Arguments="/x [ProductCode]" 
      Description="Uninstalls My Application" /> 

Sobre la base de la sugerencia de Rob Mensching here, si la aplicación es lo suficientemente pequeño y no es necesario para manejar las actualizaciones pequeñas y de menor importancia actualizaciones (que yo no), puede forzar que cada actualización sea una actualización importante. Esto se muestra here. He utilizado la sugerencia de Rob que era esto:

<Product Id="*" UpgradeCode="PUT-GUID-HERE" Version="$(var.ProductVersion)"> 
<Upgrade Id="PUT-GUID-HERE"> 
    <UpgradeVersion OnlyDetect="yes" Minimum="$(var.ProductVersion)" Property="NEWERVERSIONDETECTED" IncludeMinimum="no" /> 
    <UpgradeVersion OnlyDetect="no" Maximum="$(var.ProductVersion)" Property="OLDERVERSIONBEINGUPGRADED" IncludeMaximum="no" /> 
</Upgrade> 

<InstallExecuteSequence> 
    <RemoveExistingProducts After="InstallInitialize" /> 
</InstallExecuteSequence> 

Ahora mi pregunta es si es aleatorio Id de producto (*) para permitir una actualización importante a tener lugar, ¿hay alguna otra manera de añadir un acceso directo de desinstalación al menú de inicio o debemos hacerlo a través de Agregar/Quitar programas? Prefiero crear el acceso directo en el menú de inicio, ya que es más fácil para el usuario. Obviamente, como está ahora, no funcionará porque [ProductCode] que se usa en los argumentos de msiexec cambiará en cada instalación. Gracias.

Respuesta

4

¿Estás diciendo que lo has probado y que no funciona? ¿Cómo falla? ¿Cuál es el argumento de acceso directo? El uso de Product/@ Id = "*" establece la propiedad ProductCode, por lo que debería funcionar correctamente.

+0

Tal vez estoy haciendo algo trivial mal, pero falla cuando hace clic en Desinstalar, msiexec parece estar desinstalando la aplicación, pero no hace nada, la aplicación todavía está allí, todos los accesos directos aún están allí . ¿He Y Definido y estoy utilizando estos como se especifica en mi publicación original. Tanto Product UpgradeCode como Upgrade Id tienen el mismo GUID pero creo que el problema radica en que Product Id = * y msiexec usan Arguments = "/ x [ProductCode]. ¿Deberían ser diferentes? – Jack

+0

¿Estás diciendo [ProductCode] = Identificación del producto (*) en tiempo de compilación? – Jack

+0

Solo quería agregar, obtengo los mismos resultados (la desinstalación del menú de inicio no funciona) cuando uso: en lugar de las etiquetas Upgrade e InstallExecuteSequence – Jack

Cuestiones relacionadas