我使用的是Microsoft Visual Studio 2019和Microsoft Visual Studio安装程序项目V1.0.2。
我知道如何生成系统范围的安装程序:
设置项目的InstallAllUsers
属性设置为true- CCD_ 3用户界面的CCD_ 2属性设置为false
- CCD_ 5的CCD_ 4被设置为CCD_
我也很清楚如何在不需要管理员提升的情况下生成用户安装程序:
安装项目的InstallAllUsers
属性设置为false
Installation Folder
用户界面的InstallAllUserVisible
属性设置为false"%ProgramFiles%Windows Kits10binx86MsiInfo.exe" "$(BuiltOuputPath)" /w 10
请参阅https://stackoverflow.com/a/55700346/7556646和https://superuser.com/a/1633474/738960.
现在我问自己以下问题:
是否有可能将系统安装程序和用户安装程序放在同一msi文件和同一安装项目中?
是否可能基于
InstallAllUsers
属性设置Application Folder
的DefaultLocation
?当InstallAllUserVisible
属性设置为true时,可以在Installation Folder
用户界面中更改InstallAllUsers
属性。对于系统范围的安装来说,上面的生成后事件会是一个问题吗?
-
是的,事实上,这是构建MSI包的正常方式,以便系统管理员可以选择适合其环境的安装类型。在安装程序的初始UI阶段,或者通过无人参与安装的属性,管理员将选择他们是否想要";"只有我";或一个";所有用户";安装虽然很少使用,但还有其他安装选项,如基于网络的管理安装点安装,管理员可能也希望看到您支持这些安装选项。
-
是的,但不要那样做。目标文件夹应该由命令行或UI设置,而不是由包设置。有关更多详细信息,请参阅TARGETDIR属性文档。默认情况下,Windows安装程序将根据包中已有的属性构造一个合适的位置。
请注意,TARGETDIR属性的值通常设置在命令行或通过用户界面。设置TARGETDIR的依据不建议在"属性"表中编写路径,因为计算机在本地驱动器的设置上有所不同。
- 不,如果您打算设置按用户安装的首选项,那么您已经正确地完成了此操作。通常,您会显示一个UI对话框来选择安装类型,然后为安装的执行阶段设置ALLUSERS属性。管理员非常熟悉设置ALLUSERS来选择他们想要的安装类型。通过在构建中为他们这样做,您将按用户安装作为默认设置,并通过命令行屏蔽(可能(支持所有用户安装。该文档提供了抑制UAC提示所需步骤的附加信息,从而增强了每个用户的安装体验
要在安装应用程序时抑制UAC对话框的显示,请使用>包的作者应该做以下事情:
在Windows Vista上使用Windows Installer 4.0或更高版本安装应用程序。不要依赖于使用提升的系统权限在>计算机
在每个用户上下文中安装应用程序,并将其设为默认值>包的安装上下文。如果未设置ALLUSERS属性,则>安装程序在每个用户的上下文中安装程序包。如果不包括>ALLUSERS属性,安装程序不设置此属性>因此每个用户的安装成为默认的安装上下文。您可以>通过在命令行上设置ALLUSERS属性来覆盖此默认值。在字计数摘要属性中设置位3以指示提升的特权>不需要安装应用程序。