отключение автоматического исправления инсталляции
От: Аноним  
Дата: 11.11.04 13:42
Оценка:
ситуация следующая — инсталлирую продукт (дистрибутив создан InstallShield'ом) — удаляю какой-либо компонент инсталляции(файл или например DSN). запускаю проинсталлированную прогу и msiexec пытаеться исправить(доинсталлировать) удаленный компонент


как от этого избавиться
Re: отключение автоматического исправления инсталляции
От: lkurts Россия http://lktalks.blogspot.com
Дата: 11.11.04 20:40
Оценка:
Здравствуйте, Аноним, Вы писали:

А>ситуация следующая — инсталлирую продукт (дистрибутив создан InstallShield'ом) — удаляю какой-либо компонент A>инсталляции(файл или например DSN). запускаю проинсталлированную прогу и msiexec пытаеться A>исправить(доинсталлировать) удаленный компонент

А>как от этого избавиться

Это у вас cрабатывает так называемая Windows Installer Resiliency. Подробную информацию про неё можно взять
наприме в MSDN если поискать вот такую статью PSS ID Number: 290997 (INFO: Description of Resiliency in Windows Installer).

Теперь к вопросу о том как её отключить.

1) В MSDN есть статья: PSS ID Number: 303439 (HOWTO: Disable Windows Installer Resiliency)
в которой, если вкратце то сказано что resiliency отменить нельзя но зато можно выключить
Windows Installer Service на машине и тогда resiliency отмениться сама собой поскольку она — часть installer

2) Можно на самом деле просто удалить информацию о том что программа заинсталлирована из базы данных MSI.
Это делается при помощи msizap, либо прир помощи программки MSICUU (от MS): здесь
И та и другая утилита позволят удалить информацию о конкретной программе из базы данных msi. Это прирведет вот к чему:
a) resiliency работать на этой программе не будет — потому что msi про неё как-бы ничего не знает
b) удалить эту программу при помощи Add/Remove Programs будет нельзя — из-за этого же

Итог: мне кажется подойдет второй способ.

P.S. Теоретически можно сделать ещ интереснее — база данных msi лежит в regisstry можно перед применением второго
способа этот кусок registry забэкапить, сделать все что нужно, а когда придет пора программу удалять — registry восстановить. Правда тут тоже есть подводные камни — желательно бэкапить не все, а только те кусочки которые относятся к вашей программе — либо быть уверенным что в промежутке ничего нового не инсталлировалось.
Re[2]: отключение автоматического исправления инсталляции
От: Аноним  
Дата: 12.11.04 07:31
Оценка:
Здравствуйте, lkurts, Вы писали:

L>Здравствуйте, Аноним, Вы писали:


А>>ситуация следующая — инсталлирую продукт (дистрибутив создан InstallShield'ом) — удаляю какой-либо компонент A>инсталляции(файл или например DSN). запускаю проинсталлированную прогу и msiexec пытаеться A>исправить(доинсталлировать) удаленный компонент

А>>как от этого избавиться

L>Это у вас cрабатывает так называемая Windows Installer Resiliency. Подробную информацию про неё можно взять

L>наприме в MSDN если поискать вот такую статью PSS ID Number: 290997 (INFO: Description of Resiliency in Windows Installer).

L>Теперь к вопросу о том как её отключить.


L>1) В MSDN есть статья: PSS ID Number: 303439 (HOWTO: Disable Windows Installer Resiliency)

L>в которой, если вкратце то сказано что resiliency отменить нельзя но зато можно выключить
L>Windows Installer Service на машине и тогда resiliency отмениться сама собой поскольку она — часть installer

L>2) Можно на самом деле просто удалить информацию о том что программа заинсталлирована из базы данных MSI.

L>Это делается при помощи msizap, либо прир помощи программки MSICUU (от MS): здесь
L>И та и другая утилита позволят удалить информацию о конкретной программе из базы данных msi. Это прирведет вот к чему:
L> a) resiliency работать на этой программе не будет — потому что msi про неё как-бы ничего не знает
L> b) удалить эту программу при помощи Add/Remove Programs будет нельзя — из-за этого же

L>Итог: мне кажется подойдет второй способ.


L>P.S. Теоретически можно сделать ещ интереснее — база данных msi лежит в regisstry можно перед применением второго

L>способа этот кусок registry забэкапить, сделать все что нужно, а когда придет пора программу удалять — registry восстановить. Правда тут тоже есть подводные камни — желательно бэкапить не все, а только те кусочки которые относятся к вашей программе — либо быть уверенным что в промежутке ничего нового не инсталлировалось.



спасибо за комментарии.

я так понял что отключение этой чудной функциональности без потери возможности Add/Remove возможно только на уровне системы(то есть отключается для всего MSI) HOWTO: Disable Windows Installer Resiliency(PSS ID Number: 303439)

конечно хотелось бы сделать это для конкретного продукта не теряя при этом информации для Add/Remove

еще раз спасибо
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.