1

J'ai un programme d'installation avec l'aide mise à niveau de notre version précédente:Wix/MSI - Mise à niveau en mode majeur silencieux

<Product Id="*" 
    Name="$(var.ProductName)" 
    Language="1033" 
    Version="$(var.InstallerVersion)" 
    Manufacturer="$(var.Manufacturer)" 
    UpgradeCode="$(var.UpgradeCode)"> 

<Upgrade Id="$(var.UpgradeCode)"> 
    <UpgradeVersion Minimum="$(var.InstallerVersion)" IncludeMinimum="no" OnlyDetect="yes" Property="NEWERVERSIONFOUND" /> 
    <UpgradeVersion Minimum="5.0.0" IncludeMinimum="yes" Maximum="$(var.InstallerVersion)" IncludeMaximum="yes" Property="OLDERVERSIONFOUND" MigrateFeatures="yes" /> 
    <UpgradeVersion Minimum="0.0.0" IncludeMinimum="yes" Maximum="5.0.0" IncludeMaximum="no" Property="OLDESTVERSIONFOUND" MigrateFeatures="yes" /> 
</Upgrade> 

<InstallExecuteSequence> 
    <Custom Action="SetReInstallProperty" After="FindRelatedProducts">OLDERVERSIONFOUND OR OLDESTVERSIONFOUND</Custom> 
    <Custom Action="SetReInstallModeProperty" After="FindRelatedProducts">OLDERVERSIONFOUND OR OLDESTVERSIONFOUND</Custom> 
    <RemoveExistingProducts After="InstallInitialize">OLDERVERSIONFOUND OR OLDESTVERSIONFOUND</RemoveExistingProducts> 

Quand je lance ce programme d'installation sur la version 4.2 plus en mode interface utilisateur, mise à niveau fonctionne très bien. Mais quand je l'exécute en mode silencieux avec/q, il fonctionne en mode maintenance et essaie de se désinstaller.

Ce sont les parties du journal:

MSI (s) (EC:00) [10:49:44:999]: PROPERTY CHANGE: Adding ACTION property. Its value is 'INSTALL'. 
MSI (s) (EC:00) [10:49:44:999]: Doing action: INSTALL 
Action start 10:49:44: INSTALL. 
MSI (s) (EC:00) [10:49:44:999]: Running ExecuteSequence 
MSI (s) (EC:00) [10:49:45:000]: Doing action: FindRelatedProducts 
Action start 10:49:45: FindRelatedProducts. 
MSI (s) (EC:00) [10:49:45:000]: PROPERTY CHANGE: Adding OLDESTVERSIONFOUND property. Its value is '{16DF8961-26DE-4A05-B759-102976C5EA22}'. 
MSI (s) (EC:00) [10:49:45:000]: PROPERTY CHANGE: Adding MIGRATE property. Its value is '{16DF8961-26DE-4A05-B759-102976C5EA22}'. 
MSI (s) (EC:00) [10:49:45:001]: Doing action: SetReInstallModeProperty 
Action ended 10:49:45: FindRelatedProducts. Return value 1. 
Action start 10:49:45: SetReInstallModeProperty. 
MSI (s) (EC:00) [10:49:45:001]: Doing action: SetReInstallProperty 
Action ended 10:49:45: SetReInstallModeProperty. Return value 1. 
MSI (s) (EC:00) [10:49:45:001]: PROPERTY CHANGE: Adding REINSTALL property. Its value is 'all'. 

...

MSI (s) (EC:00) [10:49:47:605]: Doing action: MigrateFeatureStates 
Action ended 10:49:47: ReadNCPExtensions. Return value 1. 
MSI (s) (EC:00) [10:49:47:605]: Migrating feature settings from product(s) '{16DF8961-26DE-4A05-B759-102976C5EA22}' 
Action start 10:49:47: MigrateFeatureStates. 
MSI (s) (EC:00) [10:49:47:606]: Doing action: InstallValidate 
Action ended 10:49:47: MigrateFeatureStates. Return value 1. 
Action start 10:49:47: InstallValidate. 
MSI (s) (EC:00) [10:49:47:606]: PROPERTY CHANGE: Deleting MsiRestartManagerSessionKey property. Its current value is '0c59f7d17b575b409c4f5593caddd7f9'. 
MSI (s) (EC:00) [10:49:47:606]: Feature: MainFeature; Installed: Absent; Request: Null; Action: Null 
MSI (s) (EC:00) [10:49:47:606]: Component: C.Name1.dll; Installed: Absent; Request: Null; Action: Null 
MSI (s) (EC:00) [10:49:47:606]: Component: C.Name2.dll; Installed: Absent; Request: Null; Action: Null 

...

MSI (s) (EC:00) [10:49:47:621]: PROPERTY CHANGE: Adding REMOVE property. Its value is 'ALL'. 
MSI (s) (EC:00) [10:49:47:622]: Doing action: SetARPINSTALLLOCATION 
Action ended 10:49:47: InstallValidate. Return value 1. 
MSI (s) (EC:00) [10:49:47:622]: PROPERTY CHANGE: Adding ARPINSTALLLOCATION property. Its value is 'C:\Program Files (x86)\SmartDrive Systems Inc\SmartDrive Data Forwarding Gateway\'. 
Action start 10:49:47: SetARPINSTALLLOCATION. 
MSI (s) (EC:00) [10:49:47:622]: Doing action: InstallInitialize 
Action ended 10:49:47: SetARPINSTALLLOCATION. Return value 1. 
MSI (s) (EC:00) [10:49:47:622]: Machine policy value 'AlwaysInstallElevated' is 0 
MSI (s) (EC:00) [10:49:47:622]: User policy value 'AlwaysInstallElevated' is 0 
MSI (s) (EC:00) [10:49:47:622]: BeginTransaction: Locking Server 
MSI (s) (EC:00) [10:49:47:623]: SRSetRestorePoint skipped for this transaction. 
MSI (s) (EC:00) [10:49:47:623]: Server not locked: locking for product {D097B768-E833-4511-A1F6-E51BD1A02258} 
Action start 10:49:47: InstallInitialize. 
MSI (s) (EC:00) [10:49:47:936]: Doing action: RemoveExistingProducts 
Action ended 10:49:47: InstallInitialize. Return value 1. 
MSI (s) (EC:00) [10:49:47:937]: Skipping RemoveExistingProducts action: current configuration is maintenance mode or an uninstall 
Action start 10:49:47: RemoveExistingProducts. 
MSI (s) (EC:00) [10:49:47:937]: Doing action: ProcessComponents 
Action ended 10:49:47: RemoveExistingProducts. Return value 0. 
Action start 10:49:47: ProcessComponents. 
MSI (s) (EC:00) [10:49:47:938]: Doing action: UnpublishFeatures 
Action ended 10:49:47: ProcessComponents. Return value 1. 
Action start 10:49:47: UnpublishFeatures. 
MSI (s) (EC:00) [10:49:47:938]: Doing action: StopServices 
Action ended 10:49:47: UnpublishFeatures. Return value 1. 
Action start 10:49:47: StopServices. 
MSI (s) (EC:00) [10:49:47:939]: Doing action: DeleteServices 
Action ended 10:49:47: StopServices. Return value 1. 
Action start 10:49:47: DeleteServices. 

Les principaux noms de fonctions dans les deux programmes d'installation est différent. Lorsque je change le nom de la fonction dans la nouvelle version comme dans 4.2, la mise à niveau fonctionne en mode silencieux, mais arrête de travailler en mode UI avec un journal similaire: après MigrateFeatureState tous les composants sont dans l'état Installed: Absent; Demande: Null; Action: Null et REMOVE mis à ALL. Des idées pour lesquelles il se comporte si étrange?

+0

Quelle est la ligne de commande utilisée pour l'installation en mode silencieux? En outre, j'ai observé à partir du journal que vous définissez la valeur de REINSTALL sur "all". Vous ne savez pas si cela fait une différence, mais pouvez-vous la définir sur ALL capital et essayer une fois? De même, pouvez-vous confirmer que les deux états RemoveExistingProducts et MigrateFeature sont présents dans les tables InstallUISequence et InstallExecuteSequence? –

+0

Avec REINSTALL = "ALL" résultat identique. MigrateFeatureStates présent dans les deux séquences. RemoveExistingProducts - dans InstallExecuteSequence uniquement. –

Répondre

1

J'ai défini le nom de la fonction principale de la même manière que dans l'ancien installeur et j'ai supprimé mon action personnalisée SetReinstallProperty et la mise à niveau fonctionne maintenant dans les deux modes.

+0

Dans ce cas, que se passe-t-il si vous continuez à utiliser la propriété REINSTALL? Juste curieux –