Создание каталога динамической установки в 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\*.*")));