2015-12-02 28 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")) 
      } 

回答