Pregunta

Las actualizaciones funcionan bien si ningún componente ha cambiado, pero cada vez que un componente cambia, la actualización falla y requiere que el usuario desinstale y reinstale manualmente.

Algunos fragmentos:

<Product Id="*" Name="My Application" Language="1033" Version="!(bind.FileVersion.ClientEXE)" Manufacturer="My Company" UpgradeCode="MYGUID-b94a-44eb-8e92-9286f1d89bbd">
    <Package Id="*" Description="My Installer" Comments="Copyright My Company 2008" InstallerVersion="200" Compressed="yes" />
    <Upgrade Id="MYGUID-b94a-44eb-8e92-9286f1d89bbd">
      <UpgradeVersion Language="1033" Property="UPGRADEFOUND" Minimum="0.0.0.0" Maximum="99.99.99.99" IncludeMinimum="yes" IncludeMaximum="yes" />
    </Upgrade>


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

Además, tengo algún problema con la siguiente clave de registro que a veces no se elimina al desinstalar y no entiendo por qué:

      <Component Id="InstalledRegistry" Guid="SOMEGUID-0a17-4c6b-983d-8f3feb3a7724">
        <RegistryKey Id="InstalledRegKey" Root="HKMU" Key="SOFTWARE\MyCompany\Client" Action="createAndRemoveOnUninstall">
          <RegistryValue Name="Version" Type="string" Value="!(bind.FileVersion.ClientEXE)" KeyPath="yes"/>
        </RegistryKey>
      </Component>

Eso es lo que comprueba el programa de arranque para saber si lanzar msiexec con " REINSTALL = ALL REINSTALLMODE = vamus " o no, por lo que si se desinstaló pero la clave de registro no se eliminó, la configuración intentaría realizar una actualización y fallaría en silencio.

Avíseme si necesita más información


Editar: Hubo otro problema después con solo algunos archivos que se actualizaron. Se cambió RemoveExistingProducts a After = " InstallValidate " y eso resolvió eso. Lo hace un poco más lento ya que elimina por completo la instalación anterior en lugar de simplemente actualizar los archivos que cambiaron (lo que no pareció detectar correctamente para mí) pero hace el trabajo.

¿Fue útil?

Solución

FWIW, no necesita ningún argumento de línea de comandos para realizar una actualización importante.

El código me parece correcto, entonces, ¿podría ser que el número de Versión no haya cambiado? (teniendo en cuenta que Windows Installer solo se preocupa por las tres primeras partes si está utilizando un número de versión de 4 partes)

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