C# WIX UI覆盖文件夹路径自定义操作

C# WIX UI覆盖文件夹路径自定义操作,c#,installation,wix,C#,Installation,Wix,假设我有这个目录结构 <Directory Id="TARGETDIR" Name="SourceDir"> <Directory Id="test" Name="test"> <Component Id="file" Guid="*"> <File Id="file" Source="file.dll"></File> </Component> </Directory> &l

假设我有这个目录结构

<Directory Id="TARGETDIR" Name="SourceDir">
  <Directory Id="test" Name="test">
    <Component Id="file" Guid="*">
      <File Id="file" Source="file.dll"></File>
    </Component>
  </Directory>
</Directory>

这将把file.dll安装到C:\test中。我要做的是在安装过程中,用C:\newpath\覆盖该文件目录,并在那里安装该文件。我已经尝试了一个定制的行动,没有运气。我确实看到了编写的调试行,所以我知道它正在被调用,只是文件仍然安装在C:\test中

<InstallExecuteSequence>
  <Custom Action="OverwriteDir" After="CostFinalize" />  
</InstallExecuteSequence>

[CustomAction]
public static ActionResult OverwriteDir(Session session)
{
     System.Diagnostics.Debug.WriteLine(session["tester"]);
     session["tester"] = "C:\\newpath";
     return ActionResult.Success;
}

[海关行动]
公共静态操作结果覆盖EDIR(会话)
{
System.Diagnostics.Debug.WriteLine(会话[“tester”]);
会话[“测试仪”]=“C:\\newpath”;
返回操作结果。成功;
}

有什么不同的方法吗?

首先,您需要确保MSI中包含您的文件的文件夹使用公共安装程序属性(名称中没有小写字母)作为其ID。最好的解决方案是TARGETDIR,因为它已经配置

之后,您可以使用以下自定义操作之一在安装过程中更改属性值:

  • 更改之前计划的目录属性值的自定义操作
  • a更改目录路径(应在CostFinalize之后安排)

首先,您需要确保MSI中包含您的文件的文件夹使用公共安装程序属性(名称中没有小写字母)作为其ID。最好的解决方案是TARGETDIR,因为它已配置

之后,您可以使用以下自定义操作之一在安装过程中更改属性值:

  • 更改之前计划的目录属性值的自定义操作
  • a更改目录路径(应在CostFinalize之后安排)