2017-03-08 102 views
0

我有一个Visual Studio安装程序(VS 2010)项目,其中包含自定义操作以验证用户在安装过程中是否已将值输入到其中一个UI文本框中。如果该值不存在,则显示错误消息并停止安装。这一切工作正常。在修复程序时显示安装程序UI

当用户进入程序和功能并尝试修复应用程序时出现问题。他们看到错误需要价值,并且无法继续。我想我想要做的是在修复时显示UI,并为用户提供输入值的机会。这可能吗?是否有另一种方法可以让他们成功完成维修过程?

回答

0

您不能导致Programs and Features中的修复按钮显示超过basic UI。您可以将属性ARPNOREPAIR设置为1以隐藏该按钮,这会要求用户输入维护(通常通过修改或更改按钮)以从程序和功能执行此类操作。然而,自动修复仍然会使用基本的用户界面,并且用户可以通过msiexec的适当参数从命令行调用任何内容。

虽然您可以为后者解决大多数问题(仅告诉他们用您的值设置什么属性),但自动修复很难抑制。因此,无论您是否需要检测自动修复并修改您的方法(我对REINSTALLMODE有模糊记忆,其中包括p,这在其他地方很少提及),或者修改您的一般方法,以免在维护期间输入此值。

不知道更多关于这个值是什么或它的目的是什么,我暂时建议最后一种方法,因为它很简单和习惯。在首次安装过程中接受该值并将其存储在注册表中,并在维护操作期间从注册表中读取该值。或者让他们进入(覆盖)它,如果他们正在完整UI或从命令行运行维护。如果这是一个配置属性,这几乎肯定是正确的举措。如果它更像是一个“密码”,这是值得怀疑的,但我认为你应该相信Windows对管理访问的保护,而不是任何可以在MSI中实施的密码方案。

无论你做什么,不要忘记处理基本和无声的UI案例。对于第一次安装,特别是最好是为该值设置默认回退或明确检查该值,记录详细消息以便用户确定正在进行的操作并中止安装。如果该值实际上是需要的,那么同样的方法应该适用于其他调用。当程序已经安装时请注意中止;破碎的自动修复或卸载都是糟糕的体验。

相关问题