WIX: ошибка установки исправления без повышения прав доступа

#wix #certificate #installation #patch #uac

#wix #сертификат #установка #исправление #uac

Вопрос:

У меня возникли внезапные проблемы. Обычно мне удавалось создавать исправления для установочных пакетов MSI таким образом, чтобы при применении исправления не требовались права администратора, что позволяло обновлять установленное приложение из стандартной учетной записи пользователя. Загрузчик EXE, установочный пакет MSI и исправление MSP подписаны одним и тем же действительным сертификатом.

Однако теперь у меня внезапно возникла проблема, из-за которой это больше не работает. При установке исправления появляется диалоговое окно UAC с запросом пароля администратора. Итак, я включил ведение журнала при установке исправления, и вот что сообщает мне установщик Microsoft:

 MSI (s) (58:40) [09:11:17:787]: Certificate of signed file 'C:WindowsInstaller23f85ae.msp' differs in  size with the certificate authored in the package
MSI (s) (58:40) [09:11:35:025]: MSI_LUA: Credential Request return = 0x800704C7
This installation is forbidden by system policy. Contact your system administrator.
  

Но сертификат, которым я подписываю все файлы (exe, msi, msp), тот же самый.
Есть предложения?
(WIX используется для создания установочного пакета)

РЕДАКТИРОВАТЬ: Кроме того, я попытался извлечь сертификаты из встроенных пакетов MSI и MSP, и они имеют одинаковый размер. Итак, я действительно не понимаю, почему я получаю это сообщение об ошибке в журнале установки Microsoft для исправления.

Ответ №1:

Я работал над той же проблемой. При попытке установить исправление .msp установщик выдал мне то же сообщение: «Сертификат подписанного файла ‘C:WindowsInstaller…..msp ‘ отличается по размеру от сертификата, созданного в пакете»

Я хочу поделиться своим решением. Мне потребовалось два дня, чтобы разобраться в этом.

Моя проблема заключалась в том, что сертификат, который я вставляю в таблицу MsiPatchCertificate, был в другом формате. Он должен быть в формате DER. Чтобы преобразовать сертификат из формата PEM в DER, используйте:

openssl x509 -выводит сертификат der -in.pem -выводит сертификат.cer

Комментарии:

1. Спасибо, что поделились своей проблемой и решением! Я проверю это, если / когда я снова столкнусь с этой проблемой. 🙂

Ответ №2:

Хорошо, я, наконец, нашел проблему, действительно, в пакет был включен сертификат, и срок его действия давно истек. Однако остается загадкой, почему проблемы с установкой возникли только сейчас и не так давно.

Ну что ж…