2017-08-21 3 views
0

Un msi simple créé en utilisant WiX. Essayer d'installer un produit. Sur certains ordinateurs, il échouera, sans erreur, et le journal d'installation contiendra ces lignes:Windows Installer n'installe pas de fonction et ne signale aucune erreur. (Demande: Null)

PROPERTY CHANGE: Adding WIX_UPGRADE_DETECTED property. Its value is '{7C9...0A0}' 
PROPERTY CHANGE: Adding MIGRATE property. Its value is '{7C9...0A0}' 
Product Code from property table after transforms: '{68F...FAE}' 
Product not registered: beginning first-time install 
Doing action: INSTALL 
Doing action: InstallValidate 
Feature: ProductFeature; Installed: Absent; Request: Null; Action: Null 
MIGRATE = {7C9...0A0};{A9B...BCE} 
Installation completed successfully. 

D'une certaine façon, décide Windows Installer qu'il n'y a rien à faire (demande: Null), même si elle reconnaît que cette est la première fois installer. Cet ordinateur avait une version précédente du produit installée. Comment forcer l'installation du programme d'installation?

Voici le code WiX concerné:

<Product Id="*" 
      Name="..." 
      Language="1033" 
      Version="..." 
      Manufacturer="..." 
      UpgradeCode="8D8...196"> 

<Package Id="*" 
      InstallerVersion="200" 
      Compressed="yes" 
      InstallScope="perMachine" 
      InstallPrivileges="elevated" 
      Platform="$(var.Platform)" /> 

<Property Id="REINSTALLMODE" Value="amus" /> 

<MajorUpgrade AllowDowngrades="yes" IgnoreRemoveFailure="yes" AllowSameVersionUpgrades="no"/> 

<Feature Id="ProductFeature" Title="..." Level="1" Absent="disallow" AllowAdvertise="no" InstallDefault="local" TypicalDefault="install"> 
     <Condition Level="1">True</Condition> 

journal d'installation complète: https://www.dropbox.com/s/abnryavh203a82w/acme_installer_log.txt?dl=0

+1

Salut, pouvez-vous ajouter un peu de votre code pertinent s'il vous plaît? Tout ce qui concerne la logique de mise à niveau serait utile. –

+1

Probablement en rapport avec qui est par défaut. Cela ne permettra pas l'installation de nouvelles fonctionnalités qui ne faisaient pas partie de l'installation précédente (je pense). Plus d'infos sur MigrateFeatureStates https://msdn.microsoft.com/en-us/library/windows/desktop/aa370034(v=vs.85).aspx –

+0

Ajout du code WiX. Merci. –

Répondre

1

Cela a été trop long pour un commentaire, en ajoutant une réponse. Juste quelques choses:

  1. Vous devriez certainement pas mettre REINSTALLMODE="amus" pour tout package MSI.

    • Si vous incluez modules de fusion dans cette configuration, vous pouvez rétrograder des fichiers partagés - même si vous sinon ne pas écrire à des emplacements partagés vous-même.
    • Le meilleur serait le "omus" par défaut, mais je suppose que "emus" est également ok (Reinstall if the file is missing, or is an equal or older version).
  2. Il ressemble certainement à l'MigrateFeatureStates action est au moins lié au problème vu:

    • MigrateFeatureStates: based on existing product, setting feature 'ProductFeature' to 'Absent' state.

    • Votre INSTALLLEVEL property semble bien.

    • Vous pouvez ouvrir le MSI compilé et vérifier qu'il n'y a aucune entrée dans le Condition table (ce qui peut modifier les états de sélection de fonctionnalité). Il ne devrait rien y avoir, mais peut-être juste vérifier. Je suppose que vous pourriez essayer de mettre le Absent attribute pour WiX Feature element à "disallow", recompiler et voir si cela change les choses.Si c'est votre seule fonctionnalité, je voudrais faire ce changement en plus d'utiliser la suggestion Phils pour définir MigrateFeatureStates to "No". Pourquoi autoriser la suppression de votre seule fonctionnalité?

  3. Il est un peu étrange la façon dont ce problème est survenu. Peut-être avez-vous exécuté modifier sur votre MSI et simplement sélectionné la fonctionnalité à désinstaller dans l'ancienne installation sur la machine? Cela semble peu probable - surtout si c'est votre seule caractéristique.

    • Avez-vous installé plusieurs versions antérieures de votre produit sur la machine en question, ou est-il qu'une seule version antérieure?

    • De nouveau, y a-t-il des entrées dans la "table de conditions" dans le fichier MSI compilé? (Vérifiez en utilisant Orca).

    • Avez-vous modifié le nom de la fonction dans votre nouveau package?

En tout état de cause, vous devriez être en mesure de « fixer » l'installation brisée par 1) simplement l'exécution de votre configuration existante et en ajoutant ADDLOCAL = ALL à votre commande msiexec.exe installer - Je pense que remplacera l'action MigrateFeatureStates (pas un correctif réel, juste une solution de contournement). Ou 2) vous pouvez désactiver MigrateFeatureStates et recompiler la configuration - qui devrait arranger les choses de façon permanente, et 3) si je vous je fixerait le Absent attribute pour la WiX Feature element-"disallow" afin que votre (seulement) fonction ne peut pas? être retiré.

Phil, si vous voyez ceci, savez-vous quelle est la propriété MIGRATE vue dans le journal? Il ressemble à des choses spécifiques Wix - à moins que c'est quelque chose de cette table de mise à niveau de MSI:

MSI (c) (04:24) [13:01:38:751]: Doing action: FindRelatedProducts 
MSI (c) (04:24) [13:01:38:751]: Note: 1: 2205 2: 3: ActionText 
Action 13:01:38: FindRelatedProducts. Searching for related applications Found application: [1] 
Action start 13:01:38: FindRelatedProducts. 
FindRelatedProducts: 
MSI (c) (04:24) [13:01:38:751]: PROPERTY CHANGE: Adding WIX_UPGRADE_DETECTED property. Its value is '{7C945F97-A2CC-4EEB-87AC-3D23D6C490A0}'. 
MSI (c) (04:24) [13:01:38:751]: PROPERTY CHANGE: Adding MIGRATE property. Its value is '{7C945F97-A2CC-4EEB-87AC-3D23D6C490A0}'. 
FindRelatedProducts: 
MSI (c) (04:24) [13:01:38:752]: PROPERTY CHANGE: Modifying WIX_UPGRADE_DETECTED property. Its current value is '{7C945F97-A2CC-4EEB-87AC-3D23D6C490A0}'. Its new value: '{7C945F97-A2CC-4EEB-87AC-3D23D6C490A0};{A9B1787A-32E4-4D51-819D-B3F879574BCE}'. 
MSI (c) (04:24) [13:01:38:752]: PROPERTY CHANGE: Modifying MIGRATE property. Its current value is '{7C945F97-A2CC-4EEB-87AC-3D23D6C490A0}'. Its new value: '{7C945F97-A2CC-4EEB-87AC-3D23D6C490A0};{A9B1787A-32E4-4D51-819D-B3F879574BCE}'. 
Action ended 13:01:38: FindRelatedProducts. Return value 1. 

tandrasz: pour autant que je peux voir les deux GUIDs qui se trouvent par FindRelatedProducts ({7C945F97-A2CC-4EEB-87AC-3D23D6C490A0};{A9B1787A-32E4-4D51-819D-B3F879574BCE}), sont différents de le code de produit de votre nouvelle configuration ({68F5E655-2E2D-492E-B445-BE1650AF5FAE}). Cela donne l'impression qu'il y a deux "produits connexes" trouvés par FindRelatedProducts sur la machine en question. Deux anciennes versions du même MSI sont-elles installées ou avez-vous une «suite» de fichiers MSI qui partagent tous le même code de mise à niveau?. Si deux packages "non liés" sont installés, MigrateFeatureStates ne trouve peut-être aucun moyen de migrer les états d'entité entre ces deux et le nouveau package que vous installez?

+0

Merci Stein pour l'analyse approfondie. Cet ordinateur avait quelques versions précédentes du même MSI installé. Le nom de la fonctionnalité n'a pas changé. Il n'y a que Feature = ProductFeature, Level = 1, Condition = True dans la table Condition. La définition de MigrateFeatures = "no" dans l'élément MajorUpgrade a résolu le problème, mais je suivrai également vos autres recommandations. Je vous remercie! –

+0

Hmmm, j'ai eu Absent = "interdire" pour la fonction. –

2

Vous n'avez pas défini MigrateFeatures dans votre élément MajorUpgrade. La documentation indique que la valeur par défaut est Oui.

http://wixtoolset.org/documentation/manual/v3/xsd/wix/majorupgrade.html

Le journal montre que vous faites une mise à niveau, par conséquent, les seules caractéristiques qui vont être installés est le même jeu qui sont déjà installés.

On ne sait pas combien de fonctionnalités il y a dans votre produit, mais si vous voulez toujours toutes les fonctionnalités à installer lors d'une MigrateFeatures de réglage de mise à niveau n °

Quoi qu'il en soit, il serait préférable de fournir tout le journal pour voir ce qui se passe et s'il y a une autre explication.

+0

Je vais supprimer les données client et ajouter le journal entier. –

+0

Il n'y a qu'une seule fonctionnalité. –

+0

Journal d'installation complet: https://www.dropbox.com/s/abnryavh203a82w/acme_installer_log.txt?dl = 0 –