2016-11-03 5 views
1

J'essaye de faire un double paquetage et j'ai des problèmes avec la mise à niveau.package double usage et MajorUpgrade

par défaut sont ma propriété ALLUSERS=2 et MSIINSTALLPERUSER=1

sur la boîte de dialogue readyToInstall si l ' « installation pour tous les utilisateurs » est cochée, j'utilise SetProperty pour mettre ALLUSERS=1 et MSIINSTALLPERUSER={} (juste pour être sûr). Cette partie fonctionne correctement, le registre est défini dans HKLM et les fichiers dans Program Files.

pendant upgdrade Mais ... j'ai une action personnalisée qui vérifient après la AppSearch si les touches sont en HKLM il mis ALLUSERS=1 et MSIINSTALLPERUSER={}.

Si j'effectue une mise à jour mineure, les fichiers sont mis à niveau correctement.

si je fais une mise à jour majeure, les registres sont encore dans le HKLM mais les fichiers passer à LocalAppData (il suit la valeur par défaut, en fait), sans tenir compte du fait que je force le ALLUSERS à 1 après la AppSearch. (j'essaie même de le forcer après l'état de la fonctionnalité migrate juste pour imiter l'interface utilisateur mais cela n'a pas fonctionné non plus).

Y at-il un moyen d'effectuer une mise à niveau majeure avec un package à double usage?

Répondre

0

Sur la base de l'extrait suivant, il semble que vous êtes confronté à scénario B:

Major Mises à niveau peut échouer
Si vous utilisez la fonction de code de mise à niveau de Windows Installer pour effectuer une mise à jour majeure la détection du logiciel existant échouera si: (a) le logiciel d'origine a été installé avec ALLUSERS=”” et le nouveau logiciel a ALLUSERS=1 dans sa table de propriétés ou transmis sur la ligne de commande ou (b) le logiciel d'origine a été installé avec ALLUSERS=1 et le nouveau logiciel a ALLUSERS=”” ou ALLUSERS n'est pas défini dans la table de propriétés ou sur la ligne de commande.

Pour plus d'informations:https://shieldmaster.wordpress.com/2012/05/03/understanding-per-user-or-per-machine-context-for-application-setup-packages/