如何根据以前安装的版本选择Everyone / Just Me?

时间:2010-08-05 11:34:51

标签: visual-studio windows-installer setup-project

使用Visual Studio安装项目。我想将Everyone / Just Me选项更改为与之前安装期间选择的用户相同。

2 个答案:

答案 0 :(得分:2)

终于明白了。使用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

在AppSearch之前执行。

完成!

答案 1 :(得分:0)

您可以在安装期间将ALLUSERS MSI属性的值保存到注册表中定义良好的位置。然后,您可以在升级时查询该值并相应地执行操作。

您还可以使用MSI API检查是否在每台计算机或每用户上下文中安装了您的产品。为此,您可以调用MsiEnumProductsEx函数,查看您的产品是否出现在任何安装环境中。