有没有办法将数据传递给(托管的、C#的) CustomAction?优选地,使用会话对象的CustomActionData集合。我还想在UI控件部分中使用CustomAction的返回值。
更具体地说,我希望允许用户指定用户名和密码,我正在安装的服务将在该用户名和密码下运行。因此,我创建了一个对话框,当用户单击Next时,我希望启动一个自定义操作来检查凭据是否有效。如果帐户存在,则自定义操作将返回Success,如果帐户不存在,则返回其他值(最好是NotExecuted或SkipRemainingActions,但将接受失败)。然后,在(wxs)对话框中,如果自定义操作返回成功,只需转到下一个对话框(按照安装顺序)。如果该操作返回备用值(NotExecuted),则会出现一个SpawnDialog,告诉用户帐户无法验证,但如果他们愿意,可以使用yes或no按钮继续操作。
如果有人能解释一下用Wix做这件事的最好方法,那就太好了。谢谢。
发布于 2011-11-08 01:17:43
考虑到windows installer UI的局限性,我决定采用一种稍微不同的方法。我现在启用/禁用Next按钮,这取决于基本字段输入是否有效,即如果Username字段为空,则该按钮被禁用。我使用(C#) CustomAction验证用户帐户是否存在,方法是通过属性传递用户名/密码,并在另一个属性中返回结果。回到安装程序UI中,如果帐户无效,则会出现一个消息框。
我还提供了一个复选框,允许用户忽略帐户检查并继续操作。
我是从https://geekproject.com/post/wix-service-account-dialog/那里得到这个想法的
请参见下图。
发布于 2011-11-04 08:40:40
Windows Installer并不真正通过C#自定义操作来支持此功能。
WiX工具集提供了对从C#访问安装程序属性的支持,但它确实有一些限制。另外,我不认为你可以用它来控制自定义操作返回代码。
所以最好的解决方案仍然是一个接收安装句柄的win32 DLL:http://www.codeproject.com/KB/install/msicustomaction.aspx
这样,您就可以使用Windows Installer API读取和设置属性:
创建自定义操作后,您可以使用installer属性而不是返回代码来调节下一个对话框:
控件事件,该操作通知用户无法继续的原因或其选项为
这里有一篇更详细的文章:http://setupanddeployment.com/installation-user-interface/validate-user-input-installation/
这种方法可以防止用户继续处理无效数据,但可以很容易地为用户提供一些选项,并自动处理这些选项。
https://stackoverflow.com/questions/7990840
复制