Wix ошибка 1721, связанная с CustomAction
У меня есть следующие CostomAction
test.bat содержит следующие строки :
В основном он предназначен для того, чтобы при запуске установщика batch file должен быть выполнен. batch file должен создать новый каталог «[Agent]Manuals » и скопировать все файлы из [SourceDir]Manuals в [Agent]Manuals.
Когда я строю .wxs, он не дает никаких ошибок, но когда я запускаю .msi, он жалуется на следующее в файлах журнала
Ошибка 1721. Есть проблема с этим пакетом Windows Installer. Программа, необходимая для завершения этой установки, не может быть запущена. Обратитесь в службу поддержки или к поставщику упаковки. Действие: инструкции, местоположение: C:\Windows\Installer\MSI1F50.tmp, команда: C:\dev\CD\Agent\pd\components\link\source\Link\Installer\WiX\WiX\bin\Debug\Manuals "D:\Cam\city\Agent\Manuals
У кого-нибудь был опыт работы с такого рода ошибками? Будет здорово, если кто-нибудь поможет мне решить эту проблему.
3 ответа
- Запустите WiX EXE CustomAction из TempFolder
Я использую WiX 3.5 для следующего. У меня есть несколько файлов (EXE и DLL), которые мне нужно извлечь в папку TEMP в начале установки (до того, как появится EULA), а затем запустить EXE. У меня есть рабочая часть, которая извлекает файлы, используя http: / / msiext.codeplex.com/ . Код выглядит…
- WiX CustomAction ExeCommand не в состоянии?
У меня есть командная строка, которую я хочу запустить во время установки модуля слияния (созданного WiX ) с приведенным ниже кодом. <CustomAction Id=’SetWebsiteProtocols’ Execute=’commit’ Return=’ignore’ Impersonate=yes FileKey=’Web.config’ ExeCommand=’c:\windows\system32\inetsrv\appcmd.exe…
Скорее всего, ваше пользовательское действие нуждается в привилегиях администратора. Попробуйте установить атрибут Execute
в deferred
и Impersonate
в no
. Обратите внимание, что эти параметры требуют, чтобы действие было запланировано после стандартного действия InstallFinalize
.
Может быть, проблема в кавычках. Изменение в кавычках ExeCommand. Попробуйте это:
Обычно вам нужно вызвать cmd /c foo.bat (или команду на Win9x), чтобы обработать .bat файлов.
Однако я бы никогда, никогда не сделал этого ни в одном из моих установщиков. Это нарушает общий дизайн на Windows Installer. MSI-это транзакционный, декларативный язык программирования. Инъекция вне процесса процедурного кода значительно увеличивает вероятность неудачи (как вы сейчас испытываете) и, что еще хуже, сводит на нет транзакционные преимущества MSI.
Например, если вы создадите папку и скопируете файл, он не будет отменен во время отката и не будет удален во время удаления. Вместо этого вы должны использовать встроенные функции Windows Installer ( элементы CreateFolder и CopyFile ) для достижения своих целей.
В том случае, когда пользовательские действия действительно необходимы (в вашем примере вы просто изобретаете колесо с более низким решением), они должны быть разработаны с использованием надежных языков и поддерживать декларативный (управляемый данными) и транзакционный дизайн, уважая модель безопасности, которую использует MSI.
- WiX пользовательское действие, запуск EXE, код ошибки 1721
Я прочитал много примеров в интернете, но не могу понять, что происходит не так. У меня есть установщик WiX, который копирует все файлы сервера MySQL в определенное место при установке. Затем я хочу запустить MySQLInstanceConfig.exe до окончания установки. <CustomAction…
- Wix CustomAction dll
У меня есть пользовательское действие, использующее CAQuietExec, которое терпит неудачу в определенных сценариях — единственные сообщения об ошибках появляются в файле журнала, который отлично подходит для меня как разработчика и бесполезен для конечного пользователя. Моя цель — поймать неудачное…
Похожие вопросы:
У меня есть следующие CustomAction: <CustomAction Id=ActionName After=InstallFinalize> <![CDATA[NOT Installed AND (VSTORUNTIME4=#1)]]> </CustomAction> Проблема в том, что в…
Я использую Wix для настройки файла Windows Installer .msi. У меня есть CustomAction, который устанавливает ScheduledTask, а в CustomAction я вставил несколько операторов session.Log. Если я строю…
В настоящее время я работаю над пользовательским действием в DLL, которое я экспортирую для использования установщиком WiX, и недавно я обнаружил следующую ошибку в журнале при запуске установщика:…
Я использую WiX 3.5 для следующего. У меня есть несколько файлов (EXE и DLL), которые мне нужно извлечь в папку TEMP в начале установки (до того, как появится EULA), а затем запустить EXE. У меня…
У меня есть командная строка, которую я хочу запустить во время установки модуля слияния (созданного WiX ) с приведенным ниже кодом. <CustomAction Id=’SetWebsiteProtocols’ Execute=’commit’…
Я прочитал много примеров в интернете, но не могу понять, что происходит не так. У меня есть установщик WiX, который копирует все файлы сервера MySQL в определенное место при установке. Затем я хочу…
У меня есть пользовательское действие, использующее CAQuietExec, которое терпит неудачу в определенных сценариях — единственные сообщения об ошибках появляются в файле журнала, который отлично…
Я хочу отменить установку, если NetCore 3.1 (предварительный просмотр) не установлен Я создаю это CustomAction : using Microsoft.Deployment.WindowsInstaller; using Microsoft.Win32; namespace…
У меня есть установщик WiX, который запускает функцию extern в c++ dll как пользовательское действие ( Execute=deferred ). я передаю ему необходимые значения свойств, устанавливая свойство, имя…
Я пытаюсь создать установщик MSI для своего приложения, который является настроенным elasticsearch. Мне нужно запустить команду elasticsearch-service.bat install из cmd в середине установки. Но что…