如何使用WixSharp在ProgramFiles64Forder下安装多个子目录?

时间:2015-12-02 09:42:50

标签: c# wix wixsharp

我制作了一个WixSharp 64位安装程序,它应该在" Program Files"下的两个不同目录下安装文件。这是代码的精简版本:

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 Files \"。

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

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

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

我首先怀疑我可能会遇到Dir构造函数的错误重载,但是当使用以下代码确保它进入Dir(字符串targetPath,params WixEntity [] items)构造函数时,行为是相同的:

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

2 个答案:

答案 0 :(得分:2)

我在Wix #projects页面问了同样的问题,Oleg_s找到了一个解决方法,并解释了为什么它不起作用。答案在这里:

http://wixsharp.codeplex.com/discussions/648259#post1454338

答案 1 :(得分:1)

# Download file contents via GET call
r = requests.get('http://myurl.com')

# Open folder and write contents to it
with open('/path/to/file.zip', 'wb') as fh:
    fh.write(r.content)