Wix 从自定义操作获取目标文件路径

Wix 从自定义操作获取目标文件路径,wix,windows-installer,custom-action,Wix,Windows Installer,Custom Action,如何从自定义操作获取要安装的文件的路径 我正在创建一个WIX扩展,它有一个自定义元素,可以嵌套在组件下,如下所示: <Component Id="FooComponent"> <File Id="filekey" Name="foo.txt"> <myextension:Stuff /> </File> </Component> StrAllocFormatted(&pwzFormattedF

如何从自定义操作获取要安装的文件的路径

我正在创建一个WIX扩展,它有一个自定义元素,可以嵌套在
组件下,如下所示:

<Component Id="FooComponent">
   <File Id="filekey" Name="foo.txt">
       <myextension:Stuff />
   </File>
</Component>
    StrAllocFormatted(&pwzFormattedFile, L"[#%s]", pwzFileId);
    WcaGetFormattedString(pwzFormattedFile, &pwzGamePath);
这里的
WcaGetFormattedString
基本上是
MsiFormatRecord


仍然没有答案,这是解决问题的正确方法吗?

基本上,您可以使用CustomActionData间接方式,以该格式将[!filekey]传递给延迟的自定义操作。然后在自定义操作中获得属性值[CustomActionData]。这可能有助于:


具体来说,如果用于准备CustomActionData的type 51自定义操作的目标为[!filekey],那么当您在自定义操作中检索CustomActionData属性的值时,它将包含文件的完整路径、整个路径和文件名。这显然是可行的,但如果对许多文件执行此操作,则不太实际。

我的意思是,我需要将其扩展为目标系统上的实际文件路径。也就是说,给定一个文件ID(filekey),我需要知道这个文件将安装在哪里(物理文件路径)。或者你们认为格式化的字符串在Customactiondata中自动展开?澄清一下-问题不是如何将字符串从即时CA或用户界面传递到不同的CA。。。我的意思是:给定一个文件id(filekey),我需要知道这个文件将安装在哪里。。即文件所属组件的目录路径。我需要从自定义操作中获取此信息。。我希望这能澄清这个问题。。。我的意思是,用户可以为功能选择目标路径,对,并且这些功能中的组件被安装到这些路径。在给定文件密钥的情况下,我如何找到它们?我不知道是我没有正确解释它,还是你不理解,所以我添加了一个我刚刚测试过的明确示例,它可以工作。可能我把问题说得有点不清楚。。。无论如何,现在我很高兴在看了WIX游戏和NetFX扩展的源代码之后。它似乎已经解决了这个问题。谢谢你抽出时间。以下是代码片段的链接,该代码片段有助于: