Ничто из вышеперечисленного или где-либо еще не работало для меня.То, что сработало, стало проще и понятнее.
Как и многие другие, мне нужно запросить у пользователя установщика целевые расположения файлов SQL Server .mdf и .ldf, которые, вероятно, будут находиться вне предустановленныхСтруктура каталога установки.Фактически, мой предыдущий диалог запрашивает у пользователя целевой сервер базы данных.Учитывая это, я затем настраиваю пользовательскую кнопку «Далее» предыдущего диалогового окна, чтобы (а) найти пути mdf и ldf «основной» базы данных сервера, а затем (b) установить по умолчанию пути новой базы данных к пути основной базы данных.
Но часы разочарования, заставляющие PathEdit играть хорошо с BrowseDlg, оказались бесполезными.Я закончил тем, что создал свойство-заглушку PATH_TEMP_BROWSE.Именно вызов SetTarget в BrowseDlg заставляет нас подключиться к дереву каталогов Wix.Избавьтесь от этой строки в вашем собственном плагиате BrowseDlg и вместо этого передайте выбранный пользователем каталог через PATH_TEMP_BROWSE таким образом:
<Dialog Id="DirectoryBrowserDlg" Width="370" Height="270" Title="Dir Browse">
<Control Id="Path" Type="PathEdit" X="25" Y="202" Width="320" Height="18" Property="PATH_TEMP_BROWSE" Indirect="yes" />
<Control Id="OK" Type="PushButton" X="240" Y="243" Width="56" Height="17" Default="yes" Text="!(loc.WixUIOK)">
<!-- NO! -->
<!--<Publish Event="SetTargetPath" Value="[_BrowseProperty]">1</Publish>-->
<Publish Event="EndDialog" Value="Return">1</Publish>
</Control>
...
<Control Id="DirectoryCombo" Type="DirectoryCombo" X="70" Y="55" Width="220" Height="80" Property="PATH_TEMP_BROWSE" Indirect="yes" Fixed="yes" Remote="yes">
<Subscribe Event="IgnoreChange" Attribute="IgnoreChange" />
</Control>
...
<Control Id="DirectoryList" Type="DirectoryList" X="25" Y="83" Width="320" Height="98" Property="PATH_TEMP_BROWSE" Sunken="yes" Indirect="yes" TabSkip="no" />
...
</Dialog>
Затем, чтобы использовать мою всплывающую модальную директорию DirectoryBrowserDlg в моей установкеДиалог, который запрашивает у пользователя имя новой базы данных и ее логические файлы ...
<Control Id="MdfPath"
Type="PathEdit"
X="37"
Y="184"
Width="313"
Height="18"
Property="PATH_DBMDFCS"
/>
<Control Id="MdfBrowse"
Type="PushButton"
X="350"
Y="184"
Width="22"
Height="17"
Text="Browse..."
>
<Publish Property="PATH_TEMP_BROWSE" Value="PATH_DBMDFCS" Order="1">1</Publish>
<Publish Event="SpawnDialog" Value="DirectoryBrowserDlg" Order="2">1</Publish>
<Publish Property="PATH_DBMDFCS" Value="PATH_TEMP_BROWSE" Order="3" />
</Control>
Сделайте то же самое для вашего файла .ldf.
KISS