У меня проблемы с моими каталогами, я хочу, чтобы мой 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.cs
string dirs = General.InstallLocation;
Затем я устанавливаю это свойство в диалоговом окне установки.
MsiRuntime.Session[General.InstallLocation] = installDir.Text;
Это тоже не сработало и в качестве пути было передано только INSTALLDIRECTORY.
После бесчисленных часов, потраченных впустую, решение было на самом деле очень простым, и мне его объяснили добрые люди из Wixsharp.
Просто переместите конечную скобку instalDir, чтобы включить дочерние Dirs и их файлы.
new InstallDir(dirs,
new Dir("DataAPI",
new Files(@"E:\Temp\installertemp\DataAPI\*.*")));