Ошибки Installshield при попытке установить обновление с драйвером

#windows #installation #driver #installshield #installshield-2013

#Windows #установка #драйвер #installshield #installshield-2013

Вопрос:

(с использованием installshield 2013)

У меня есть установщик, который устанавливает программное обеспечение, и теперь я добавляю в установщик совершенно новый драйвер устройства shinny. Проблема в том, что он (драйвер) должен устанавливаться только на 32-разрядных компьютерах с Windows 7, мы также хотим воспользоваться преимуществами plug and play, поэтому он должен быть готов к работе после установки. Однако, имея это в виду, вполне допустимо, чтобы программное обеспечение было установлено на компьютере с 64-разрядной версией Win7. Это не сценарий, «официально» поддерживаемый за пределами компании, но необходимый для внутренних разработчиков.

Итак, что я сделал, это добавил свой компонент и пометил его как 32-разрядный драйвер. Если я попытаюсь установить на свой ноутбук (win7 64bit), я получу ERROR - You need to use the 64-bit version of DIFXAPP.DLL to install drivers on this machine. Черт! Коллега предложил мне использовать следующие условия VersionNT >= 601 AND NOT VersionNT64 для MSIProcessDriver , эти же условия, похоже, не работают на самом компоненте, мне сказали, что в процессе слишком поздно, чтобы эти условия сработали. Мне также пришлось добавить те же условия в MSICleanUpOnSuccess , чтобы обновления работали на моем ноутбуке. Я не знаю, правильное ли это решение, но оно работает для меня, и я могу установить и обновить. И вот тут-то и начинается моя проблема, на самой аппаратной платформе я смог установить один раз, но я не могу обновить или установить какую-либо другую версию установщика, само приложение устанавливается нормально, но установщик всегда возвращает «прерванный». Я получаю следующее

 DIFXAPP: ERROR 0x65A creating MsiUninstallDrivers custom action for Win7Drivers
DIFXAPP: RETURN: ProcessDriverPackages() 1626 (0x65A)
CustomAction MsiProcessDrivers returned actual error code 1603 (note this may not be 100% accurate if translation happened inside sandbox)
Action ended 15:04:33: MsiProcessDrivers. Return value 3.
MSI (s) (B8:58) [15:04:33:419]: Machine policy value 'DisableRollback' is 0
MSI (s) (B8:58) [15:04:33:419]: Note: 1: 1402 2: HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionInstallerRollbackScripts 3: 2 
MSI (s) (B8:58) [15:04:33:419]: Note: 1: 1402 2: HKEY_LOCAL_MACHINESoftwareMicrosoftWindowsCurrentVersionInstallerRollbackScripts 3: 2 
MSI (s) (B8:58) [15:04:33:419]: Calling SRSetRestorePoint API. dwRestorePtType: 13, dwEventType: 103, llSequenceNumber: 29, szDescription: "".
MSI (s) (B8:58) [15:04:33:419]: The call to SRSetRestorePoint API succeeded. Returned status: 0.
MSI (s) (B8:58) [15:04:33:419]: Unlocking Server
Action ended 15:04:33: INSTALL. Return value 3. 
  

Из того, что я собрал в сети, возможно, это связано с неправильной установкой, приводящей реестр в плохое состояние для этого драйвера. Я видел, что другие сталкивались с этой проблемой без какого-либо опубликованного разрешения. Я также немного не понимаю, что делать или как вернуть мою тестовую машину в рабочее состояние. Я надеюсь, что вы, ребята, можете помочь или поделиться стратегией для аналогичного сценария, который, как вы обнаружили, работает.

p.s. Я также попытался сделать это отдельной функцией и пометить required как NO , думая, что в случае сбоя (например, на моем ноутбуке) это не должно привести к сбою всего установщика. Я не уверен, каким будет наше ожидаемое поведение на нашей аппаратной платформе, если драйвер, который не удалось установить, я полагаю, потерпит неудачу?

Ответ №1:

Я смог решить свои проблемы, используя Revo un-installer для удаления некоторых проблемных параметров реестра, пока все хорошо, и мне не пришлось перерисовывать свой компьютер в процессе.