无人值守(命令行)安装强制执行EULA验收

时间:2010-08-12 16:47:27

标签: c# windows-installer msiexec

我有一个我正在使用的安装项目,并已将EULA添加到用户界面。我需要支持无人值守(命令行)安装以及通过运行安装程序进行GUI安装。 EULA在GUI安装中强制执行,但不在无人值守的情况下强制执行。

目前,我正在以下列格式运行命令行安装,传递自定义操作中使用的参数:

MSIEXEC / i ProjectSetup.msi / qn / l * log.txt Param1 =“Foo”Param2 = Bar

最糟糕的情况我想我可能需要一个额外的参数“AcceptEULA”并且如果在我们进行命令行安装时找不到它,则会弹出安装。任何人都可以提供的任何指导都非常感谢。

3 个答案:

答案 0 :(得分:2)

启动GUI时首次运行时显示EULA。例如。像各种sysinternals工具一样(FileMon,RegMon等)。好的想法是它适用于xcopy部署。

答案 1 :(得分:2)

每个人都应该意识到Param1 Param2和AcceptEULA不能传递给MSI。只能传递像ACCEPTEULA这样的公共属性(全部大写)。

MSI可以通过使用一个自定义属性(例如ACCEPTEULA和内置属性UILevel)的LaunchCondition来轻松完成此操作。目标是仅在UILevel = 5或ACCEPTEULA = 1或产品(已经)安装时才允许安装

条件:

UILevel = 5或ACCEPTEULA或已安装

您必须接受EULA才能安装[ProductName]。

公共属性: http://msdn.microsoft.com/en-us/library/aa370912(VS.85).aspx

启动条件: http://msdn.microsoft.com/en-us/library/aa369752(VS.85).aspx

UILevel: http://msdn.microsoft.com/en-us/library/aa372096(VS.85).aspx

答案 2 :(得分:0)

我通常认为单击“接受”不仅仅是简单地使用软件具有法律约束力。在某些司法管辖区,接受EULA是赋予用户安装/运行软件的权利。

否则,我只是调整安装程序,因此它永远不会出现EULA,因此我不受它们约束。