一个定制操作,它读取文件并将值存储在会话obj中。是否可以在调用其他自定义操作时将其用作属性

时间:2019-04-22 15:05:03

标签: wix

<CustomAction I'd=readValue binaryKey = custom.dll 
    DllEntryy = readfilevalue Execute= deferred Return = 
  check/>

// // In a .cs file code to read the file having method 

// readfilevalue。    //我正在设定        Customsession.writesessionvalue(key,value);

//   In another .wxs file invoking executables
  <Custom Action = someExe After= someOtherExe>
         <!CDATA[  key < someValue]>
  <Custom>

//我可以在此“定制”标签中获取键值吗?如果没有     //如何获得该值,请提出建议。

1 个答案:

答案 0 :(得分:0)

否,延迟的操作(@ Execute =“ deferred”)与共享的Windows Installer会话之间存在very limited information flow。该流程包括向操作发送一些属性(包括CustomActionData),并从中接收进度信息以及成功或失败,但是不会携带您所描述的任意数据。

您所看到的选项:

  • 立即执行第一个自定义操作,使其可以参与计划。如果操作需要提升的特权或访问其他延迟操作所放置的内容,则此方法将行不通,但否则是执行此操作的最“正确”方法。请注意,如果数据本身可以被现有的搜索模式(例如RegistrySearch)读取,那将比立即执行自定义操作更好。
  • 合并这两个操作,因此不需要这种信息流。
  • 使用不受支持的黑客手段,例如在Windows Installer外部共享文件位置,这两个操作都可以访问。然后,您可以通过它发送信息。请注意,清除此错误可能很难正确,并且其不受支持的性质可能会在神秘的场景中导致其他问题。 (有关获取上下文信息的链接暗示了原因。)