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

时间:2011-10-21 20:57:41

标签: c# installer wix

假设我有这个目录结构。

<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;
}

我可以采取哪些不同的方式?

1 个答案:

答案 0 :(得分:1)

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

之后,您可以使用以下自定义操作之一来更改安装期间的属性值: