Как установить VC++ 2005 Redistributable x64 и x86 в автоматическом режиме с помощью WIX

Я редактирую проект установки WIX (XML установщика Windows) и хочу автоматически установить распространяемые файлы VC++ (2005x86, 2005x64) с помощью WIX.
Я использую настраиваемые действия в своем коде, показанном ниже:

<Product ...>
  <CustomAction Id="vcredist2005x64" ExeCommand="/q" Execute="deferred"
   Return="asyncNoWait" Impersonate="no">
  <CustomAction Id="vcredist2005x86" ExeCommand="/q" Execute="deferred"
   Return="asyncNoWait" Impersonate="no">
</Product>
...
<Fragment>
  <InstallExecuteSequence>
    <Custom Action="vcredist2005x64" Before="InstallFinalize">NOT Installed</Custom>
    <Custom Action="vcredist2005x86" After="vcredist2005x64">NOT Installed</Custom>
  </InstallExecuteSequence>
</Fragment>

Однако при выполнении установщика, сгенерированного из приведенного выше кода, появляется диалоговое окно установщика Windows, в котором говорится: "Устанавливается другая программа. Дождитесь завершения установки, а затем попробуйте установить это программное обеспечение еще раз".
Кажется, что два распространяемых компонента конфликтуют (обратите внимание, что при выполнении, например, 2013x64 и 2005x64 конфликтов не возникает, и они устанавливаются автоматически).

Затем я переключился на использование проекта Bootstrapper (Burn) и написал код ниже:

<Bundle ...>
  <Chain>
    <ExePackage Id="vcredist2005x64" SourceFile="C:\path\to\vcredist_x64.exe"/>
    <ExePackage Id="vcredist2005x86" SourceFile="C:\path\to\vcredist_x86.exe"/>
  </Chain>
</Bundle>
...
<Fragment>
  <PackageGroup Id="vcredist">
    <ExePackage Id="vcredist2005x64"
                Cache="yes" PerMachine="yes" Permanent="yes" Vital="yes" Compressed="yes"
                SourceFile="C:\path\to\vcredist_x64.exe"
                InstallCommand="/q"
                SuppressSignatureVerification="yes"
                Protocol="burn"
                />
    <ExePackage Id="vcredist2005x86" ... />  <!-- same as above -->
  </PackageGroup>
</Fragment>

При записи конфликтов не возникает, но установить их молча не удается, т. е. после запуска Bootstrapper появляются диалоги с условиями лицензии на программное обеспечение Microsoft. Я хотел бы, чтобы диалоговые окна не появлялись.
Приветствую любые советы. Спасибо.


person kamelio    schedule 08.09.2015    source источник
comment
Только что пришло мне в голову, но, согласно документам msiexec, переключатель для автоматической установки — «/ qn», возможно, замените вашу команду InstallCommand на / qn вместо / q?   -  person A.Game    schedule 08.09.2015


Ответы (2)


Следующее работает почти так, как вы просили: оно автоматизированное, поэтому запрос лицензии не требуется, но оно не полностью бесшумное, поэтому вы ненадолго увидите всплывающие окна при установке зависимостей VS2005. Может быть дополнительно улучшено, но переключатели, похоже, не соблюдаются должным образом.

В любом случае, сначала распакуйте vcredist_x86.exe (или x64) с помощью 7-Zip или другого программного обеспечения, чтобы получить внутренний файл VCREDI~3.EXE. Удалите оригинал и переименуйте последний в vcredist_x86.exe (или x64). После использования этого пакета WiX:

  <Bundle>

    <!-- ... -->

    <Chain>
      <ExePackage Id="vcredist2005x86" SourceFile="D:\vcredist_x86.exe"/>
    </Chain>
  </Bundle>

  <Fragment>
    <PackageGroup Id="vcredist">
      <ExePackage Id="vcredist2005x86"
                  Cache="yes" PerMachine="yes" Permanent="yes" Vital="yes" Compressed="yes"
                  SourceFile="D:\vcredist_x86.exe"
                  InstallCommand="/Q /C:&quot;msiexec /i vcredist.msi /qn&quot;"
                  SuppressSignatureVerification="yes"
                  Protocol="burn"
                />
    </PackageGroup>
  </Fragment>

Этот ссылка мне помогла.

person ceztko    schedule 09.10.2015
comment
Ваше решение работает так, как я хотел. Это то, чего я хотел. Спасибо! - person kamelio; 20.10.2015

Эти распространяемые файлы устанавливаются на основе MSI. Windows не разрешает рекурсивные операции MSI, поэтому вы получаете сообщение об ошибке при их установке, потому что уже запущена другая установка — ваша, из которой вы вызываете настраиваемые действия.

Так что это действительно сводится к проблеме с записью, и это должно работать, так что это направление, в котором нужно двигаться, извините, я не могу помочь с этой частью.

person PhilDW    schedule 10.10.2015