小编Dan*_*iel的帖子

WiX:将安装路径传递给托管自定义操作

新的一天,新的问题;-)仍然需要与托管自定义操作斗争.我已经设法调用自定义操作并将一些测试数据传递给它.现在我想用我需要的真实数据替换testdata.这里问题就出现了:我想调用一个安装在我的安装子目录中的批处理文件.因此,我需要将安装路径传递给自定义操作.Afaik这可以使用customactiondata mechnism完成.但这不起作用.当我记录安装时,我可以看到习惯用户INSTALLLOCATION之外指向正确的路径,但是当我查看惯例时,customactiondata属性为空...

任何人都可以查看我的代码并给我一个提示我做错了什么?谢谢你的优点!

调用自定义操作的合并模块:

<Module Id="DflHelpInstaller" Language="1033" Version="1.0.0.0">
    <Package Id="f952de58-1dc6-46b3-872a-7a49e2d9ea0a" Manufacturer="DflHelpInstaller" InstallerVersion="200" />

<Binary Id='RegisterDflHelpDll' SourceFile="$(var.REGISTERHELP.TargetDir)RegisterDflHelp.CA.dll" />

    <CustomAction Id='RegisterDflHelp' BinaryKey='RegisterDflHelpDll'  DllEntry='RegisterDflHelp' Execute='deferred' />

    <CustomAction Id="RegisterDflHelp.SetProperty" Return="check" Property="RegisterDflHelp" Value='[INSTALLLOCATION]' Execute='immediate' />


    <InstallExecuteSequence>
      <Custom Action='RegisterDflHelp.SetProperty' After='CostFinalize' />
      <Custom Action='RegisterDflHelp' After='InstallFiles' />
    </InstallExecuteSequence>

    <Directory Id="TARGETDIR" Name="SourceDir">
        </Directory>
    <ComponentGroupRef Id="HelpGroup"/>

    </Module>
</Wix>
Run Code Online (Sandbox Code Playgroud)

使用MergeModule的安装程序项目概述:

....

<Directory Id="TARGETDIR" Name="SourceDir">
        <Directory Id="ProgramFilesFolder" SourceName="PFFiles">
<Directory Id="Company" Name='$(var.COMPANY)'>
  <Directory Id="INSTALLLOCATION" SourceName='$var.v[SDK_VERSION]'>
    <Component Id="MyBanner" Guid="C8C28B92-9326-4991-BFB1-BBDFDF3653AB">
      <File Id ="Banner.bmp" Source="Banner.bmp" KeyPath="yes" DiskId="1"/>
    </Component>
    <Merge Id ="DflHelpInstaller" SourceFile="DflHelpInstaller.msm" Language="1033" DiskId="1" />
      </Directory> …
Run Code Online (Sandbox Code Playgroud)

installer windows-installer wix wix3

10
推荐指数
4
解决办法
2万
查看次数

标签 统计

installer ×1

windows-installer ×1

wix ×1

wix3 ×1