Wix хранит путь в свойстве - PullRequest
0 голосов
/ 15 ноября 2018

Я боролся с этой программой установки Wix. Что мне нужно сделать, это сохранить путь JRE, выбранный человеком, выполняющим установку, в свойстве (я думаю, что мне нужно сделать это так).Получив это свойство, я намерен каким-то образом использовать его в конце установки, чтобы записать значение в файл.

Проблема в том, что я не могу сохранить значение DirectoryCombo / DirectoryList/ PathEdit в свойстве ...

Мой код выглядит так:

<!-- I use this to initialize the JREPATH to the most likely path..This works as expected -->
<CustomAction Id='INIT_JREPATH' Property='JREPATH' Value='[ProgramFilesFolder]\Java' Execute='firstSequence' />


<!-- When this button is clicked, a new dialog is opened, where the UI elements have the path initialized above..This works as expected.. -->
<Control Id='BrowseButton' Type='PushButton' X='276' Y='126' Width='90' Height='18' Text='{\VSI_MS_Sans_Serif13.0_0_0}B&amp;rowse...' TabSkip='no'>
   <Publish Property='SelectJreFolderDialog_Property' Value='JREPATH'><![CDATA[1]]></Publish>
   <Publish Event='SpawnDialog' Value='SelectJreFolderDialog'><![CDATA[1]]></Publish>
</Control>

<!-- This is where I got stuck -->
<Dialog Id='SelectJreFolderDialog' X='50' Y='50' Width='313' Height='223' Title='Browse for JRE Installation Folder' NoMinimize='yes'>
  <Control Id='OKButton' Type='PushButton' X='168' Y='198' Width='66' Height='18' Text='{\VSI_MS_Sans_Serif13.0_0_0}OK' TabSkip='no' Default='yes'>
  **<!-- The code from below are various attempts that I tried to set the property at button click**
    <Publish Property='SelectJreFolder_Property' Value='C:\Program Files (x86)\Java\jre1.8.0_181'><![CDATA[1]]></Publish>
    <Publish Event='SetProperty' Value='[SelectJreFolderDialog_Property]'><![CDATA[1]]></Publish>
  <!-- <Publish Event='SetTargetPath' Value='[SelectJreFolderDialog_Property]'><![CDATA[1]]></Publish>  --> 

    <Publish Event='EndDialog' Value='Return'><![CDATA[1]]></Publish>
</Control>
<Control Id='CancelButton' Type='PushButton' X='240' Y='198' Width='66' Height='18' Text='{\VSI_MS_Sans_Serif13.0_0_0}Cancel' TabSkip='no' Cancel='yes'>
  <Publish Event='Reset' Value='{}'><![CDATA[1]]></Publish>
  <Publish Event='EndDialog' Value='Return'><![CDATA[1]]></Publish>
</Control>
<Control Id='BrowseText' Type='Text' X='6' Y='9' Width='60' Height='12' Text='{\VSI_MS_Sans_Serif13.0_0_0}&amp;Browse:' TabSkip='no' />
<Control Id='FolderCombo' Type='DirectoryCombo' X='66' Y='6' Width='198' Height='120' Property='SelectJreFolderDialog_Property' Text='{\VSI_MS_Sans_Serif13.0_0_0}MsiDirectoryCombo' TabSkip='no' Indirect='yes' Removable='yes' Fixed='yes' Remote='yes' RAMDisk='yes' Floppy='yes'>
 <Publish Property='SelectJreFolder_Property' Value= '[SelectJreFolderDialog_Property]' ><![CDATA[1]]></Publish>
</Control>


 <!-- I have other elements here, a DirectoryList and a PathEdit, basically different approaches to selec the needed path..I did not add them because I don't think that they are relevant -->
</Dialog>

Проблема в том, что .. это не работает ... когда я пытаюсь установить значение, чтона самом деле в следующем диалоговом окне происходит то, что я получаю значение "JREPATH" вместо того, что выбирает человек, выполняющий установку ... ex вместо C: \ blsa bla \ java

Как я могу это исправить?Любые предложения? ... Наилучшим подходом, если это возможно, будет сохранение значения из DirectoryCombo при нажатии Ok ... не уверен, насколько выполнимо это ..

Большое спасибо!

Ответы [ 2 ]

0 голосов
/ 28 ноября 2018

Проблема была устранена путем удаления строки:

<Publish Property='SelectJreFolder_Property' Value= '[SelectJreFolderDialog_Property]' ><![CDATA[1]]></Publish>
0 голосов
/ 28 ноября 2018
<Publish Property='SelectJreFolderDialog_Property' Value='JREPATH'><![CDATA[1]]></Publish>

Вам необходимо установить значение [JREPATH], например:

<Publish Property='SelectJreFolderDialog_Property' Value='[JREPATH]'><![CDATA[1]]></Publish>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...