2017-08-14 4 views
0

Je suis réticent à poser cette question à ce moment, comme je le répète WiX - Doing a major upgrade on a multi instance install ... Et pourtant, j'espère que ma question va obtenir une réponse :)mise à niveau majeure sur un programme d'installation multi-instance

J'ai un programme d'installation avec plusieurs cas:

<Product Id="{GUID}" UpgradeCode="{GUID}" Version="!(wix.Version)" Name="MyProduct" Manufacturer="MyCompany"> 

    <MajorUpgrade Schedule="afterInstallExecute" DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 

    <Property Id="INSTANCEID" Value="Default" /> 
    <InstanceTransforms Property="INSTANCEID"> 
    <Instance Id="I01" ProductName="MyProduct_I01" ProductCode="{GUID}" UpgradeCode="{GUID}" /> 
    <Instance Id="I02" ProductName="MyProduct_I02" ProductCode="{GUID}" UpgradeCode="{GUID}" /> 
    . 
    . 
    . 
    <Instance Id="I49" ProductName="MyProduct_I49" ProductCode="{GUID}" UpgradeCode="{GUID}" /> 
    <Instance Id="I50" ProductName="MyProduct_I50" ProductCode="{GUID}" UpgradeCode="{GUID}" /> 
    </InstanceTransforms> 
</Product> 

Par souci de clarté, chaque nouvelle version utilise:

  • un autre numéro de version (différente dans au moins l'un des 3 premiers numéros)
  • Un autre code produit pour chaque instance
  • Le même code de mise à niveau pour chaque instance
  • j'installer chaque produit avec des privilèges d'administrateur de domaine

Avant de modifier le code produit chaque nouvelle version j'ai utilisé le même pour chaque version, et même si c'était un peu maladroit (conservant les composants supprimés pour toujours), le processus de ré-installation a fonctionné.

Maintenant, cependant, les réinstallations ultérieures utilisant des versions différentes font que msiexec.exe voit tous les composants comme manquants, échouant ainsi à l'installation. Il semblait qu'il était temps de passer à des mises à niveau majeures!

Mise à niveau du chemin naïve

msiexec.exe /i "installer.msi" /n {OLD_VERSION_PRODUCTCODE}

vous êtes invité faux message:

L'administrateur système a défini des stratégies pour empêcher cette installation.

Mise à niveau via réinstaller

msiexec.exe /i "installer.msi" /n {OLD_VERSION_PRODUCTCODE} REINSTALL=ALL REINSTALLMODE=vamus

(également essayé avec REINSTALLMODE=amus depuis un nouveau produit est une nouvelle installation, mais Nope)

Logged chaque composant comme absent et didn ne touchez aucun fichier (la mise à niveau a été signalée comme réussie):

Installé: Absent; Demande: Null; Action: Null

Je ne sais pas ce que je manque?

Répondre

0

je trouve une solution maladroite, mais il est en forme que pour un problème délicat:

<SetProperty Id="REINSTALL" Value="" Before="AppSearch" /> 
<SetProperty Id="REINSTALLMODE" Value="" Before="AppSearch" /> 

En MHS les propriétés REINSTALL-je sauter en quelque sorte sur le principal obstacle d'autorisation de mise à niveau et écarter un danger réel re-installation, me laissant avec la nouvelle version.

J'accepterai volontiers une solution plus orthodoxe, en particulier une qui n'implique pas de manipuler les propriétés de Windows Installer ...