2015-12-02 108 views
1

我制作了一个WixSharp 64位安装程序,它应该在“Program Files”下的两个不同目录下安装文件。下面是代码的精简版:如何使用WixSharp在ProgramFiles64Forder下安装多个子目录?

using System; 
using WixSharp; 
using File = WixSharp.File; 

public class Script { 

    public static void Main(string[] args) { 
     var project = 
      new Project("My Product", 
       new Dir(@"%ProgramFiles%", 
        new Dir(@"SubDir1", new File(@"Files\test2.txt")), 
        new Dir(@"SubDir2", new File(@"Files\test2.txt")) 
       )); 

     project.Platform = Platform.x64; 
     project.GUID = new Guid("6f330b47-2577-43ad-9095-1861ba25889b");  
     Compiler.BuildMsi(project); 
} 

}

的问题是,子目录下创建 “C:\%ProgramFiles64%\” 而不是在“c是:\ PROGRAM文件\”。

如果我只安装一个子目录,那么该目录将被正确安装到“c:\ Program Files”中。

如果我在没有将平台指定为x64的情况下执行相同的操作,文件将正确地位于“c:\ Program Files(x86)”下。

我在这里做错了什么?我怎么能得到那里的两个目录。

我第一次怀疑我可能会击中迪尔构造的错误超载,但使用下面的代码时,保证它进入迪尔的行为是相同的(串TARGETPATH,则params WixEntity []项目)构造函数:

  new Dir(@"%ProgramFiles%",new WixEntity[] { 
       new Dir(@"SubDir1", new File(@"Files\test2.txt")), 
       new Dir(@"SubDir2", new File(@"Files\test2.txt")) 
      } 

回答

相关问题