Je cherche à fournir un package d'installation simple (MSI) que je veux prendre en charge avec des mises à jour (correctifs) qui remplacent tous les correctifs précédents. Donc j'ai un MSI V1.0.0 et 2 correctifs V1.0.1 et V1.0.2. L'utilisateur devrait pouvoir installer simplement le dernier correctif quelles que soient les correctifs précédents déjà appliqués au système. Mon projet contient 2 fonctionnalités (Client et Serveur). La base du correctif est toujours le package RTM (HelloWorld 1.0.msi / HelloWorld 1.0.wixpdb).
La génération (construction) de tous les correctifs fonctionne, donc les procédures de mise à jour 1.0.0 -> 1.0.1 et 1.0.0 -> 1.0.2 fonctionnent, mais lorsque j'essaie de mettre à jour de 1.0.1 à 1.0.2, le correctif échoue avec le message d'erreur suivant : "Le correctif de mise à jour ne peut pas être installé par le service Windows Installer car le programme à mettre à niveau peut être manquant, ou le correctif de mise à niveau peut mettre à jour une version différente du programme. Vérifiez que le programme à mettre à niveau existe sur votre ordinateur et que vous avez le correctif de mise à niveau correct.". Encore pire, lorsque j'exécute le correctif 1.0.1 sur un système où 1.0.2 est déjà installé, le correctif écrase l'installation existante avec une version plus ancienne !? Je suis totalement perdu...
J'ai également trouvé plusieurs articles de blog sur le web sur la création de correctifs, mais rien qui fonctionne avec mon scénario de remplacement.
code de correctif wix - "patch1.wxs":
script de création du correctif 1 - "generate_patch1.bat":
"%WIX%\bin\torch.exe" -p -xi ".\_Distrb\HelloWorld 1.0.wixpdb" ".\_Distrb\HelloWorld 1.0.1.wixpdb" -out ".\_Build\patch1.wixmst"
"%WIX%\bin\candle.exe" -out ".\_Build\patch1.wixobj" ".\patch1.wxs"
"%WIX%\bin\light.exe" ".\_Build\patch1.wixobj" -out ".\_Build\patch1.wixmsp"
"%WIX%\bin\pyro.exe" ".\_Build\patch1.wixmsp" -out ".\_Distrb\HelloWorld 1.0 Patch1.msp" -t HelloWorldRTM ".\_Build\patch1.wixmst"
code de correctif wix - "patch2.wxs":
script de création du correctif 2 - "generate_patch2.bat":
"%WIX%\bin\torch.exe" -p -xi ".\_Distrb\HelloWorld 1.0.wixpdb" ".\_Distrb\HelloWorld 1.0.2.wixpdb" -out ".\_Build\patch2.wixmst"
"%WIX%\bin\candle.exe" -out ".\_Build\patch2.wixobj" ".\patch2.wxs"
"%WIX%\bin\light.exe" ".\_Build\patch2.wixobj" -out ".\_Build\patch2.wixmsp"
"%WIX%\bin\pyro.exe" ".\_Build\patch2.wixmsp" -out ".\_Distrb\HelloWorld 1.0 Patch 2.msp" -t HelloWorldRTM ".\_Build\patch2.wixmst"