У меня есть установка wix ниже.Вывод командной строки Wix из .tar.gz
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" Name="SomeApplication" Language="1033" Version="1.0.0.0" Manufacturer="Company" UpgradeCode="4810b5e4-21d8-4a45-b289-eafb10dddc0a">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<Media Id="1" Cabinet="Cab1.cab" EmbedCab="yes" />
<Feature Id="ProductFeature" Title="EvokoInstaller" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
<UIRef Id="WixUI_InstallDir" />
<WixVariable Id="WixUILicenseRtf" Value="LICENSE.rtf" />
<Property Id="WIXUI_INSTALLDIR" Value="INSTALLFOLDER" />
<InstallExecuteSequence>
<Custom Action="ExtractService" Before="InstallFinalize">NOT Installed</Custom>
</InstallExecuteSequence>
<CustomAction Id="ExtractService" Directory="INSTALLFOLDER" Execute="deferred" ExeCommand="7z e some_service.tar.gz && 7z x some_service.tar" Return="check"/>
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="SomeInstaller"/>
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="packages">
<File Source="some_service.tar.gz" />
</Component>
</ComponentGroup>
</Fragment>
</Wix>
Теперь он копирует файл some_service.tar.gz в каталог установки. Я хотел бы извлечь файл после его копирования. Я бы хотел, чтобы это было сделано автоматически Wix.
Команда 7z e some_service.tar.gz && 7z x some_service.tar
делает это точно, когда я делаю это вручную и командная строка запускается как aministrator.
Как я могу выполнить его из Wix и удалять сжатые файлы, как только она извлекается.
EDIT1:
После @ комментарий ArkadySitnitsky, я есть добавить предложенный код, и теперь я не могу скопировать some_service.tar.gz файл установки назначения.
Пожалуйста, проверьте изображение:
edit2:
Вот лог с регистратора событий после установки купирован с ошибкой.
Product: SomeProduct -- Error 1722. There is a problem with this Windows >Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor. Action ExtractService, location: C:\Program Files (x86)\SomeInstaller\, command: 7z e some_service.tar.gz
EDIT3:
Когда я добавить паузу в конце команды , как это: ExeCommand="7z e some_service.tar.gz pause"
я снова смог установить его. Он копирует .tar.gz и оставляет его как есть.
EDIT4:
Что касается Сжатый удаления файлов после удаления делается я пробовал:
<CustomAction Id="ExtractService3"
Directory="INSTALLFOLDER"
Impersonate='no'
Execute="deferred"
ExeCommand="rm liso_service.tar.gz"
Return="check"/>
<CustomAction Id="ExtractService4"
Directory="INSTALLFOLDER"
Impersonate='no'
Execute="deferred"
ExeCommand="rm liso_service.tar"
Return="check"/>
и
<Custom Action="ExtractService3" After="ExtractService2">NOT Deleted</Custom>
<Custom Action="ExtractService4" After="ExtractService2">NOT Deleted</Custom>
Но опять-таки приводит к ивовый прут то же Worning всплывающее окно. Не могли бы вы посоветовать это.
EDIT5:
<Custom Action="ExtractService3" After="ExtractService2"></Custom>
<Custom Action="ExtractService4" After="ExtractService2"></Custom>
все тот же результат
EDIT6:
rm
команда не работает, когда я попробовал вручную и она сообщила об ошибке:
cygintl-2.dll is missing from your computer
I прочитали на другом посту, что это из-за OpenSHH не правильно установлен. Я не должен иметь OpenSHH как зависимость, поэтому я удалил его. После этого команда rm
была непризнанной. Таким образом, я попробовал команду del
(вручную). Он работает, но только командная строка запускается как администратор.
EDIT7:
ExeCommand="del /f /q some_service.tar.gz"
результатов с тем же всплывающим окном.Но в папке установки есть только some_service.tar кажется, что some_service.tar.gz удален. При попытке вручную удалить del /f /q some_service.tar
он говорит
Access is denied.
EDIT8:
Я уже пытаюсь удалить оба файла .tar и tar.gz. Смотрите ниже, пожалуйста:
<CustomAction Id="ExtractService"
Directory="INSTALLFOLDER"
Impersonate='no'
Execute="deferred"
ExeCommand="7z e -y some_service.tar.gz"
Return="check"/>
<CustomAction Id="ExtractService2"
Directory="INSTALLFOLDER"
Impersonate='no'
Execute="deferred"
ExeCommand="7z x -y some_service.tar"
Return="check"/>
<CustomAction Id="ExtractService3"
Directory="INSTALLFOLDER"
Impersonate='no'
Execute="deferred"
ExeCommand="del /f /q some_service.tar.gz"
Return="check"/>
<CustomAction Id="ExtractService4"
Directory="INSTALLFOLDER"
Impersonate='no'
Execute="deferred"
ExeCommand="del /f /q some_service.tar"
Return="check"/>
<InstallExecuteSequence>
<Custom Action="ExtractService" Before="InstallFinalize">NOT Installed</Custom>
<Custom Action="ExtractService2" After="ExtractService">NOT Installed</Custom>
<Custom Action="ExtractService3" After="ExtractService2" ></Custom>
<Custom Action="ExtractService4" After="ExtractService2" ></Custom>
</InstallExecuteSequence>
Вы пробовали запустить пользовательское действие с Execute = «отложены»? –
@ArkadySitnitsky Я только что попробовал, и то же самое происходит. Ничего. – eomeroff
Ваш заказ действие не планируется, попробуйте добавить: не установлен InstallExecuteSequence> –