2010-08-05 3 views

Répondre

2

Enfin compris. Utilisé une action personnalisée VBScript.

Dim myUpgradeCode 
myUpgradeCode = "{6EFB1553-7F4F-4E26-A32B-E2F0F8E11CA9}" 

Dim justMe 
justMe = False 

'AssignmentType 
' Equals 0 if product is advertised or installed per-user. 
' Equals 1 if product is advertised or installed per-machine for all users. 

Set products = Session.Installer.RelatedProducts(myUpgradeCode) 
For Each product In products 
    astp = CLng(Session.Installer.ProductInfo(product, "AssignmentType")) 
    If astp = 0 Then 
     justMe = True 
    End If 
Next 

If JustMe Then 
    Session.Property("ALLUSERS") = "" 
Else 
    Session.Property("ALLUSERS") = "1" 
End If 

Et l'a exécuté avant AppSearch.

Fait!

0

Vous pouvez enregistrer la valeur de la propriété MSI ALLUSERS dans un emplacement bien défini dans le Registre lors de l'installation. Vous pouvez ensuite interroger cette valeur lors de la mise à niveau et agir en conséquence.

Vous pouvez également utiliser l'API MSI pour vérifier si votre produit est installé dans un contexte par machine ou par utilisateur. Pour ce faire, vous devez appeler la fonction MsiEnumProductsEx et voir si votre produit apparaît dans l'un des contextes d'installation.

+0

Ok .. Je l'ai eu à travailler dans Custom Action VBScript. Mais même si je mets les ALLUSERS à "{}", il s'installe pour tous les utilisateurs. Pourquoi? L'action personnalisée est exécutée juste avant "LaunchConditions". Il définit ALLUSERS sur "{}" ou "1". – Trainee4Life

Questions connexes