2011-10-21 62 views
1

假设我有这个目录结构。WIX UI覆盖文件夹路径自定义操作

<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:\测试

<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

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

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

+0

谢谢!我只是没有资产的资本 – aherrick