2017-02-20 37 views
0

Ниже приведен мой код. Мне нужно установить файлы .inf и .cer после выполнения файла MSI. Я попытался обратиться к различным ресурсам wix, но ничего не смог найти. Я тестирую установщик на виртуальной машине, но он, похоже, не работает. Я новичок в wix и нуждаюсь в помощи в этом, просматривая код и указывая на мои ошибки.Windows Installer XML (WIX) Help: Не удается выполнить команду оболочки через exeCommand

<?xml version="1.0" encoding="UTF-8"?> 
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"> 
    <Product Id="*" Name="Cal" Language="1033" Version="1.0.0.0" Manufacturer="Cal" UpgradeCode="my-code"> 
    <Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" /> 




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


    <Feature Id="ProductFeature" Title="Cal" Level="1"> 
     <ComponentGroupRef Id="ProductComponents" /> 

    </Feature> 
    <!--<CustomActionRef Id="InstallAction1" />--> 
    </Product> 

    <Fragment> 
    <Directory Id="TARGETDIR" Name="SourceDir"> 
     <Directory Id="ProgramFilesFolder"> 
     <Directory Id="INSTALLFOLDER" Name="Cal" /> 
     <Directory Id="SilInst" Name="BackInst"> 
     </Directory> 
     </Directory> 
    </Directory> 
    </Fragment> 

    <Fragment> 
    <ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER"> 

     <Component Id="P2"> 
     <File Source="C1.sys" /> 
     </Component> 


     <Component Id="P6"> 
     <File Source="C1.inf" /> 
     </Component> 
     <Component Id="P7"> 
     <File Source="C1.cer" /> 
     </Component> 

    </ComponentGroup> 
    </Fragment> 
    <Fragment> 
    <CustomAction Id='InstallAction1' Directory='INSTALLFOLDER' ExeCommand='RUNDLL32.EXE SETUPAPI.DLL,InstallHinfSection DefaultInstall 132 C1.inf' Execute='deferred' 
         Return='check'/> 
    <CustomAction Id='InstallAction2' Directory='INSTALLFOLDER' ExeCommand='certutil -addstore C1.cer -s -r localMachine trustedpublisher' Execute='deferred' 
        Return='check'/> 


    <InstallExecuteSequence> 
     <Custom Action="InstallAction2" After='InstallFiles'/> 
    <Custom Action="InstallAction1" After='InstallAction2'/> 
    </InstallExecuteSequence> 
    </Fragment> 
</Wix> 
+0

Откройте MSI в Orca или вместо этого и проверьте в таблице InstallExecuteSequence, если выполнено ваше пользовательское действие. –

+0

Для установки драйверов вам следует рассмотреть возможность использования расширения Difxapp: http://wixtoolset.org/documentation/manual/v3/xsd/difxapp/driver.html –

ответ

0

Для устранения неполадок создайте журнал установки, затем выполните поиск идентификатора настраиваемого действия. Для установки драйвера и сертификата на машину обычно требуются повышенные разрешения. Поэтому для ваших пользовательских действий используйте Impersonate="no". См. How to run a Custom Action inside an MSI created in WiX with elevated privileges?