有没有办法在WIX安装程序中创建符号链接?

时间:2013-01-03 15:03:29

标签: wix wix3 mklink

我需要为特定文件夹创建符号链接;该文件夹由WIX安装程序创建。有没有办法从WIX安装程序创建符号链接?我已经阅读了mklink,但我不知道如何在WIX(v3)中使用它?

2 个答案:

答案 0 :(得分:0)

您可以使用自定义操作来运行mklink。在InstallFinalize之后运行自定义操作。

或者您可以使用快捷方式而不是符号链接。

在自定义操作文件中:

[CustomAction]
    public static ActionResult symboliclink(Session session)
    {
        string filePath = session["FilePath"];
        string symboliclink = session["symboliclink"];
        Process p = new Process();

        p.StartInfo.FileName = "mklink.exe";
        p.StartInfo.Arguments = "/d" + symboliclink + " " + filePath;
        p.StartInfo.CreateNoWindow = true;
        p.StartInfo.UseShellExecute = false;
        p.StartInfo.WindowStyle = ProcessWindowStyle.Hidden;
        Environment.CurrentDirectory = Path.GetDirectoryName(p.StartInfo.FileName);
        p.Start();
        p.WaitForExit();


        return ActionResult.Success;
    }

Wix文件:

<Binary Id="Symboliclink" SourceFile="Symboliclink.CA.dll" />   <CustomAction Id="SymbolicLink" BinaryKey="Symboliclink" DllEntry="symboliclink" Return="ignore" Execute="immediate" />

在InstallExecuteSequence

中包含自定义操作
 <Custom Action="SymbolicLink" Sequence="6703"/>

答案 1 :(得分:0)

我使用Shortcut关键字创建了一个链接。我发现这是解决这个问题的最简单方法。请找到这个代码。

<Component Id="XXXX" Guid="E4920A35-13E1-4949-BD3A-7DCC8A70C647">
          <File Id="xxXX" Name="xxXX.yyy" Source="..\Installer\Miscellaneous\xxXX.yyy" DiskId="1" Vital="yes" />
              <Shortcut Id="xxXX_link" Directory="Dir1" Name="xxXX.yyy" Target="[INSTALLLOCATION]xxXX.yyy" WorkingDirectory="INSTALLLOCATION" />
</Component>

但这不等同于符号链接。