Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 如何根据以前安装的版本选择Everyone/Just Me?_Visual Studio_Windows Installer_Setup Project - Fatal编程技术网

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

Visual studio 如何根据以前安装的版本选择Everyone/Just Me?,visual-studio,windows-installer,setup-project,Visual Studio,Windows Installer,Setup Project,使用VisualStudio安装项目。我想将Everyone/Just Me选项更改为与上次安装过程中选择的用户相同。您可以在安装过程中将ALLUSERSMSI属性的值保存到注册表中定义良好的位置。然后,您可以在升级时查询该值并相应地执行操作 您还可以使用MSI api检查您的产品是在每台机器还是每用户上下文中安装的。为此,您需要调用该函数并查看您的产品是否出现在任一安装上下文中。最终解决了这个问题。使用VBScript自定义操作 Dim myUpgradeCode myUpgradeCode

使用VisualStudio安装项目。我想将Everyone/Just Me选项更改为与上次安装过程中选择的用户相同。

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


您还可以使用MSI api检查您的产品是在每台机器还是每用户上下文中安装的。为此,您需要调用该函数并查看您的产品是否出现在任一安装上下文中。

最终解决了这个问题。使用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之前执行它


完成了

好的。。让它在自定义动作VBScript中工作。但即使我将ALLUSERS设置为“{}”,它也会为所有用户安装。为什么?自定义操作在“LaunchConditions”之前执行。它将诱惑者设置为“{}”或“1”。