Создание каталога динамической установки в WiXSharp

У меня проблемы с моими каталогами, я хочу, чтобы мой InstallDir был моим верхним родительским каталогом и чтобы любой другой Dir содержался в этой структуре папок. Я пробовал это несколькими способами и не могу решить, но я стремлюсь к тому, чтобы иметь возможность использовать installDirDialog для изменения места установки. Каталог, оставленный без изменений, устанавливается правильно, но если я должен был изменить место установки, он только создает новую структуру папок, а файлы устанавливаются в папку по умолчанию. Я знаю, почему он устанавливается в это место, потому что он ссылается на статическую строку. Я использовал приведенный ниже пример только для упрощения проблемы, с которой я столкнулся.

string dirs = @"%ProgramFiles%\My Company\My Product";
var project = new ManagedProject("MyProduct",
   new InstallDir(dirs),        
   new Dir(dirs + @"\DataAPI",
       new Files(@"E:\Temp\installertemp\DataAPI\*.*"))); 

Другой подход состоял в том, чтобы использовать свойство MSI и установить его в качестве пути установки.

public class General
    {
        public static string Product = "PRODUCT";
        public static string InstallLocation = "INSTALLDIRECTORY";
    }

В setup.csstring dirs = General.InstallLocation;

Затем я устанавливаю это свойство в диалоге установки. MsiRuntime.Session[General.InstallLocation] = installDir.Text;

Это тоже не сработало и только передало INSTALLDIRECTORY как путь.

1 ответ

Решение

После бесчисленных часов впустую решение было на самом деле очень простым и понятным для меня добрыми людьми из Wixsharp.

Просто переместите конечную скобку instalDir, чтобы включить любые дочерние каталоги и их файлы.

 new InstallDir(dirs,        
   new Dir("DataAPI",
       new Files(@"E:\Temp\installertemp\DataAPI\*.*")));  
Другие вопросы по тегам