2014-09-17 3 views
0

Я новичок в Wix. Я использую версию 3.9 для запуска пользовательского действия. Я могу скопировать файлы и установить и удалить, но я пытаюсь запустить пользовательское действие без каких-либо удачных действий.Wix custom action не работает

Ниже приведен небольшой пример: ComponentGroup находится в другом файле, который создается теплом. Я запускаю установщик с протоколированием и ничего не вижу в файле журнала о том, что действие не выполняется при установке, когда я запускаю удаление, я вижу приглашение cmd.

Я также запутался в условиях Wix и как они оцениваются. Из различных источников, это то, что я вижу условия и

  • MyProperty возвращает истину, если свойство было установлено любое значение, включая 0 или ложной
  • НЕ MyProperty возвращает ИСТИНА свойство не было установлено

При использовании в условии это говорит о том, что если MyProperty является ложным, NOT MyProperty вернет false. И если MyProperty истинно, в условии MyProperty вернет false. Это меня смущает, и умышленное действие во время удаления путает меня.

Любая помощь будет оценена по достоинству.

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" 
    xmlns:bal="http://schemas.microsoft.com/wix/BalExtension" > 
    <Product Id="*" Name="GtLite" Language="1033" Version="1.0.0.0" Manufacturer="Acme" UpgradeCode="0cd4e6db-ec32-42b4-bcb8-1f51f37c7b44"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 

    <!-- Specify minimal UI --> 
    <UIRef Id="WixUI_Minimal" /> 

    <MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." /> 
    <MediaTemplate EmbedCab="yes" /> 

    <!-- Features to install --> 
    <Feature Id="ProductFeature" Title="FunTimes" Level="1"> 

     <ComponentGroupRef Id="BinFilesGroup" /> 
    </Feature> 

    <CustomAction Id="RunDataUtility" 
        Directory="FUN_FOLDER" ExeCommand="cmd.exe /k &quot;echo hello > [FUN_FOLDER]echo_test.txt&quot;" Execute="immediate" Return='asyncNoWait' /> 


    <InstallExecuteSequence> 

     <Custom Action="RunDataUtility" After="InstallFiles" >NOT INSTALLED</Custom> 
    </InstallExecuteSequence> 


    <Directory Id="TARGETDIR" Name="SourceDir"> 

     <!-- Define Installation folder under Program Data --> 

     <Directory Id="ProgramFolder"> 
     <Directory Id="INSTALL_FOLDER" Name="Acme" > 
      <Directory Id="FUN_FOLDER" Name="FunTimes" > 
      </Directory> 
     </Directory> 
     </Directory> 
    </Directory> 

    </Product> 

</Wix> 
+0

Где находится ваш текстовый файл для проверки эха? Если вы его устанавливаете, ваши пользовательские действия должны быть отложены, так как перед выполнением каких-либо файлов выполняются немедленные пользовательские действия. – PhilDW

+0

Эхо в файл, называемый echo_test.txt, было тестом, чтобы увидеть пользовательский запуск действия. Я изменил пользовательский тег After после установки на InstallFinalize, но оставил выполнение как незамедлительно, и теперь мое реальное пользовательское действие выполняется из папки установки. Также изменен BIN_FOLDER на FUN_FOLDER. Я все еще очень новичок в создании и работе над своим пониманием этого. – dgxhubbard

ответ

1

Вы передаете BIN_FOLDER через командную строку? Я спрашиваю, потому что я не могу видеть, что здесь установлен. Хотя я не тестировал эту команду, но я предполагаю, что это должно сработать. Пожалуйста, попробуйте и дайте мне знать.

<CustomAction Id="ConfigureApp_Cmd" Property="ConfigureApp" Execute="immediate" 
    Value="&quot;cmd.exe /k&quot; &quot;echo hello > [BIN_FOLDER]echo_test.txt&quot; nopause;" /> 
<CustomAction Id="ConfigureApp" BinaryKey="WixCA" DllEntry="CAQuietExec" Execute="deferred" Return="asyncNoWait" Impersonate="no"/> 

<InstallExecuteSequence> 
    <Custom Action="ConfigureApp_Cmd" After="StartServices"><![CDATA[NOT(Installed)]]></Custom> 
    <Custom Action="ConfigureApp" After="ConfigureApp_Cmd"><![CDATA[NOT(Installed)]]></Custom> 
</InstallExecuteSequence> 

Вы, возможно, придется пройти что-то подобное BIN_FOLDER = C: \ Acme \ Bin, чтобы сделать эту работу.

+0

BIN_FOLDER должен был быть FUN_FOLDER. Я изменил файл, чтобы упростить пример. – dgxhubbard

+0

Теперь у меня установлена ​​моя установленная утилита. Я использовал эхо в качестве теста. Я думаю, что ключ был вашим состоянием в Custom. – dgxhubbard

Смежные вопросы