Ошибки Installshield при попытке установить обновление с драйвером
(используя installshield 2013)
У меня есть установщик, который устанавливает программное обеспечение, и теперь я добавляю в установщик совершенно новый драйвер устройства. Предостережение в том, что его (драйвер) следует устанавливать только на 32-битных компьютерах с Windows 7, мы также хотим воспользоваться преимуществами технологии plug and play, поэтому он должен быть готов к работе после установки. Однако, учитывая это, вполне можно установить программное обеспечение на компьютере с Win7-64. Это не сценарий, "официально" поддерживаемый за пределами компании, но необходимый для внутренних разработчиков.
Поэтому я добавил свой компонент и пометил его как 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_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 3: 2
MSI (s) (B8:58) [15:04:33:419]: Note: 1: 1402 2: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Installer\Rollback\Scripts 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.
Судя по тому, что я собрал в сети, это возможно из-за плохой установки, переводящей реестр в плохое состояние для этого драйвера. Я видел, как другие сталкивались с этой проблемой, без какого-либо разрешения. Я также немного растерялся из-за того, что делать или как вернуть мою тестовую машину в рабочее состояние. Я надеюсь, что вы, ребята, можете помочь или поделиться стратегией для подобного сценария, который вы нашли сработавшим.
PS Я также попытался сделать это отдельной функцией, и маркировка required
как NO
думая, что если это не удастся (как на моем ноутбуке), это не должно подвести весь установщик. Я не уверен, что наше ожидаемое поведение будет на нашей аппаратной платформе, если драйвер, где не удалось установить, я полагаю, сбой?
1 ответ
Я смог решить свои проблемы, используя Revo Un-Installer, чтобы избавиться от некоторых проблемных настроек реестра, пока что все хорошо, и мне не пришлось заново создавать образ моей машины в процессе.