是否可以在c#中按钮单击调用安装程序类而不是在设置自定义操作中?

时间:2011-02-04 10:14:07

标签: c# installer

如果用户没有管理员权限。如何在从注册表中读取的按钮单击事件上调用安装程序类,并在c#中将值写入注册表?

因为我在用户注册时收到错误,所以在注册表中写入值并且用户无权写入注册表。所以我知道只有安装程序类才有权这样做。那么我怎样才能做到这一点呢?

2 个答案:

答案 0 :(得分:0)

建议的方法是使用两种不同的自定义操作:

  • 安装UI中的一个读取数据(您的注册表值)
  • 另一个在InstallExecuteSequence(安装期间)写入数据

这样你就不会有权限问题。

答案 1 :(得分:0)

没有一个可能有理由想要这样做。安装程序类自定义操作无权访问MSI句柄。这意味着他们无法获取/设置属性。唯一可以使用的是更改计算机的配置,它违反了所有Windows Installer最佳实践,以便在用户界面序列中执行此操作。

在UI中的按钮上唯一应该做的是验证处理,必须在进入下一个对话框之前完成。一个示例是验证用户输入,例如用于连接到SQL服务器的凭据。连接到SQL服务器并对其执行某些操作的繁重工作应该在执行序列中作为延迟自定义操作完成。

我建议调查WiX DTF。这比Installer类自定义操作提供了更多功能,并允许您创建遵循最佳实践的解决方案。

相关问题