Почему моя собственность Wix не оценивается?

StackOverflow https://stackoverflow.com/questions/1616127

  •  06-07-2019
  •  | 
  •  

Вопрос

Я пытаюсь имитировать свойство InstallURL для VS.net установите MSI...Я добрался до того места, где WIX MSI откроет браузер на странице загрузки, на которую я хочу, чтобы он перешел.Я думал, что все идет отлично, потому что на моей тестовой машине веб-страница открылась, когда у меня не был установлен компонент MSXML6.Однако все пошло наперекосяк, когда я обнаружил, что веб-страница открылась, даже когда у меня был установлен компонент.

Я ищу компонент MSXML6, используя свойство без RegistrySearch.Однако, насколько я могу судить, значение реестра даже не оценивается, и поэтому оно "всегда" выглядит так, как будто оно не установлено.

Вот соответствующая часть моего WXS:

    <Property Id="MSXML6">
        <RegistrySearch Id="MSXML6Search" Root="HKCR" Key="Msxml2.DOMDocument.6.0" Type="raw" />
    </Property>
    <Property Id="TEST">
        <RegistrySearch Id="TESTSearch" Root="HKLM" Type="raw" Name="Version" Key="SOFTWARE\Microsoft\DirectX" />
    </Property>
    <Property Id="cmd.exe" Value="cmd.exe" />
    <CustomAction Id="OpenMSXML6Download" Property="cmd.exe" ExeCommand="/c start http://www.microsoft.com/downloads/details.aspx?FamilyID=993c0bcf-3bcf-4009-be21-27e85e1857b1" Execute="immediate" Return="check" />
    <CustomAction Id="OpenMSXML6DownloadError" Error="This component requires MSXML6. =[MSXML6]=[cmd.exe]=[TEST]=  A web browser has been opened to the download page.  Please install MSXML6 and then re-install the connector." />

    <!-- installation execution sequence -->
    <InstallExecuteSequence>
        <!-- wires the error dialog to the downgrade event -->
        <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>

        <!-- execution to delete old install info after upgrade-->
        <RemoveExistingProducts After="InstallValidate" />

        <!-- Forces MSXML6 to be pre-installed -->
        <!-- <Custom Action="OpenMSXML6Download" Before="FindRelatedProducts">NOT MSXML6</Custom> -->
        <Custom Action="OpenMSXML6Download" Before="FindRelatedProducts">NOT MSXML6</Custom>
        <Custom Action="OpenMSXML6DownloadError" After="OpenMSXML6Download">NOT MSXML6</Custom>
    </InstallExecuteSequence>

    <!-- ui information for the custom actions above. -->
    <InstallUISequence>
        <Custom Action="PreventDowngrading" After="FindRelatedProducts">NEWPRODUCTFOUND</Custom>
        <Custom Action="OpenMSXML6Download" Before="FindRelatedProducts">NOT MSXML6</Custom>
        <Custom Action="OpenMSXML6DownloadError" After="OpenMSXML6Download">NOT MSXML6</Custom>
    </InstallUISequence>

Что это делает, так это то, что если MSXML6 не определен, то он открывает веб-страницу, а затем печатает пользовательское сообщение об ошибке.Обратите внимание, что я пытаюсь напечатать значение свойства в сообщении об ошибке (я не уверен, допустимо ли это или нет, но, похоже, так оно и есть.) Текст, который я вижу, гласит: "Для этого компонента требуется MSXML6.==[cmd.exe]==..." таким образом, он выводит значение свойства 'cmd.exe', но не двух других...может быть, это потому, что я определяю свойство явно, я не уверен...В любом случае, я также запустил MSI с включенной отладкой, и в файле журнала я не вижу абсолютно никаких ссылок на MSXML6 или тестовые свойства, которые когда-либо устанавливались.Я подтвердил, что значения реестра действительно установлены, хотя я не уверен на 100%, как обращаться с разделом реестра Msxml2, поскольку у него нет никаких реальных значений, только значение по умолчанию.(Я предполагаю, что отказ от параметра 'Name' - правильный способ справиться с этим.)

Помочь??

Это было полезно?

Решение

Мне удалось разобраться с этим...это был довольно простой ответ.Основная проблема заключалась в том, что Пользовательские действия выполнялись до AppSearch, именно там оцениваются свойства RegistrySearch.Смотрите мой пост в блоге по адресу Кодировщик CTICoder для получения подробной информации.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top