参数传递给CustomAction和使用返回值

有没有办法将数据传递到一个(管理,C#)CustomAction? 最好使用Session对象的CustomActionData集合。 我也想我的UI控制部分中使用来自我CustomAction的返回值。

更具体地讲,我想允许用户指定一个用户名和密码下我安装服务将运行。 因此,我创建了一个对话框,当用户点击下一步我要开始,检查证书有效自定义操作。 如果存在帐户和其他一些值,如果它不自定义操作将返回成功(优选NotExecuted或SkipRemainingActions,但将解决的失败)。 然后在(WXS)对话框中,如果自定义操作返回成功只是去到下一个对话框(安装序列中)。 如果动作返回替代值(NotExecuted)一SpawnDialog会出现告诉该帐户无法验证用户,但他们可以继续,如果他们喜欢用是或否按钮。

如果有人可以解释维克斯做到这一点的最好方式,将是巨大的。 谢谢。

--------------解决方案-------------

由于Windows安装程序用户界面的局限性,我决定采取稍微不同的方法。 我现在启用/禁用根据基本领域的投入是否有效Next按钮,也就是说,如果用户名字段为空,那么按钮将被禁用。 我使用的是(C#)CustomAction以验证用户帐户存在,由通过属性传递的用户名/密码,并在另一个属性返回结果。 回到安装程序的用户界面中,如果帐户无效出现一个消息框。

我还提供一个复选框允许用户忽略帐户检查和刚刚继续。

我的想法得到了来自http://www.geekproject.com/showtopic.aspx?ID=94

见下面的图片。

参数传递给CustomAction和使用返回值


Windows安装程序并没有真正通过C#自定义操作支持这一点。

WiX的工具集提供支持,从C#访问安装程序属性,但它确实有一定的局限性。 另外,我不认为你可以用它控制自定义操作返回代码。

所以最好的解决办法仍然是接收安装手柄一个Win32 DLL:http://www.codeproject.com/KB/install/msicustomaction.aspx

这样,您就可以使用Windows安装程序API来读取和设置属性:

  • http://msdn.microsoft.com/en-us/library/windows/desktop/aa370134(v=VS.85).aspx
  • http://msdn.microsoft.com/en-us/library/windows/desktop/aa370391(v=vs.85).aspx

在创建自定义操作后,可以调节使用安装程序属性,而不是返回代码在下一个对话框:

  • 调理NewDialog控制事件,显示下一个对话框
  • 其中调理通知用户为什么他不能继续或者他有什么选项是一个消息框自定义操作

下面是详细信息的文章:http://setupanddeployment.com/installation-user-interface/validate-user-input-installation/

这种方法可以防止用户从无效的数据继续,但可以很容易地适应他提供一些选择,并自动处理它们。

分类:威克斯 时间:2015-03-15 人气:0
本文关键词: 威克斯
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.343 (s). 10 q(s)