Удаление пакета не поддерживается

Я пытаюсь создать MSP из последних и предыдущих MSI, как в приведенном ниже сценарии:

  • Предыдущий MSI фиксируется и используется в качестве базового уровня.
  • Последний MSI создается с новой модификацией файлов, включенных каждую ночь, и он будет получать новую версию продукта при каждом поколении (что происходит с каждой сборкой на сервере).
  • Предыдущий MSI, который является базовым, установлен на компьютере; скажем, у него версия 1.0.0.0.
  • MSP, сгенерированный при первой сборке, успешно установлен, теперь версия продукта 1.0.0.1.
  • Последняя версия MSI теперь 1.0.0.2, и в ней есть новые модификации, и мы хотим создать новый MSP, чтобы получить эти модификации на машине, MSP создается на основе разницы между предыдущей MSI 1.0.0.0 и последней версией 1.0. .0.2.

Проблема в том, что при попытке установить второй MSP мы получаем сообщение об ошибке:

Удаление пакета не поддерживается.

И ниже журнал ошибок:

MSI (s) (78:EC) [07:57:01:214]: Final Patch Application Order:
MSI (s) (78:EC) [07:57:01:214]: {C39177DC-24FD-432E-9D50-159E7E3CC62C} - C:\temp\[Package Name].msp
MSI (s) (78:EC) [07:57:01:214]: Other Patches:
MSI (s) (78:EC) [07:57:01:214]: Unknown\Absent: {9BEBFF56-7735-4618-BF01-01E96548FA81} - 
MSI (s) (78:EC) [07:57:01:214]: Product: [Package Name] - Update '[Package Name]' could not be removed. Error code 1646. 
Additional information is available in the log file C:\Users\Administrator\Desktop\msp.log.

MSI (s) (78:EC) [07:57:01:214]: Windows Installer removed an update. Product Name: [Package Name]. Product Version: 1.3.0.0.81.159. Product Language: 1033. 
Manufacturer: [Company]. Update Name: [Package Name]. Removal success or error status: 0.

MSI (s) (78:EC) [07:57:01:214]: Product: [Package Name] - Update '{C39177DC-24FD-432E-9D50-159E7E3CC62C}' could not be installed. Error code 1646. 
Additional information is available in the log file C:\Users\Administrator\Desktop\msp.log.

MSI (s) (78:EC) [07:57:01:214]: Windows Installer installed an update. Product Name: [Package Name]. Product Version: 1.3.0.0.81.159. Product Language: 1033. 
Manufacturer: [Company]. Update Name: {C39177DC-24FD-432E-9D50-159E7E3CC62C}. Installation success or error status: 1646.

MSI (s) (78:EC) [07:57:01:214]: Product: [Package Name] -- Installation failed.

MSI (s) (78:EC) [07:57:01:214]: Windows Installer installed the product. Product Name: [Package Name]. Product Version: 1.3.0.0.81.159. Product Language: 1033. 
Manufacturer: [Company]. Installation success or error status: 1646.

Uninstallation of the update package is not supported.
C:\Windows\Installer\5d9684f.msi

Это разрешено делать? Или нам нужно изменить предыдущий MSI при каждой установке MSP, поэтому мы сохраняем каждый MSP только с отдельными файлами?


person Fouad Roumieh    schedule 07.11.2015    source источник


Ответы (1)


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

В целом ваш подход выглядит правильным. Базовый уровень всегда равен 1.0.0, а исправление всегда создается как разница между этим базовым значением и каждым новым файлом MSI. Ваш комментарий «... MSP создается на основе разницы между предыдущей версией MSI 1.0.0.0 и последней версией 1.0.0.2». немного вводит в заблуждение, потому что в ваших примерах предыдущий MSI был 1.0.0.1. Возможно вы имели ввиду базу 1.0.0.0.

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

Однако ваши примеры ProductVersion не соответствуют тому, что в журнале. Версия продукта: 1.3.0.0.81.159 не является допустимой версией:

https://msdn.microsoft.com/en-us/library/aa370859(v=vs.85).aspx

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

person PhilDW    schedule 08.11.2015
comment
Версия 1.0.0.* Я использую ее для объяснения, и да, фактическая версия — 1.3.0.*. Первый MSP был сгенерирован между 1.0.0.0 и 1.0.0.1, этот MSP установлен на машине. Затем, когда генерируется 1.0.0.2 msi, я использовал в качестве последнего msi, а базовый (предыдущий) msi по-прежнему 1.0.0.0, генерируется версия msp 1.0.0.2, но при попытке установить поверх 1.0.0.1 msp, Я получаю ошибку в соответствии с основным сообщением. Да, каждый раз, когда для MSP создается новый GUID, продукт msi остается одним и тем же. Это разрешено или мне нужно изменить базу на 1.0.0.1 при создании MSP 1.0.0.2? - person Fouad Roumieh; 09.11.2015
comment
Если вы имеете в виду, что версия продукта, состоящая из 6 цифр, недействительна, она работает и никогда не получала ошибок, а также применяет ее в ARP. - person Fouad Roumieh; 09.11.2015
comment
При отсутствии всех настроек в файле PCP и логе создания патча могу лишь указать на то, что явно не так. И ProductVersion явно недействителен, в документах говорится, что используются три цифры, поэтому, чтобы увеличить версию, вы должны увеличить первые три цифры. В противном случае все ваши версии патчей 1.3.0. Также убедитесь, что вы не меняете ProductCode. - person PhilDW; 10.11.2015
comment
У меня тоже похожая проблема. Я пытаюсь заставить Patch работать с элементом SqlScript. В моем новом (1.0.1.0), если я добавляю новый компонент с элементом SqlScript, то в ARP исчезает только параметр удаления, даже если в файле исправления установлено значение AllowRemoval=yes. Если я не добавляю новый компонент, а только изменяю существующий компонент, эта проблема не возникает. Кроме того, это похоже только на элемент SqlScript, а не на другие файлы. - person Ven; 08.06.2018