Я сделал 64-битный установщик WixSharp, который должен устанавливать файлы в двух разных каталогах в разделе «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(string 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"))
}