При необходимости перезагрузки саморегистрация не происходит

У меня есть установщик Installscript. Когда я запускаю его для обновления продукта и части продукта работают, то требуется перезагрузка. -- Хорошо.

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

Я проверил файл setup.ilg, и он не сообщает мне никаких новостей: файлы скопированы, и саморегистрация, похоже, была выполнена.

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

Можете ли вы объяснить, почему не происходит саморегистрация и что я могу сделать, чтобы это произошло? Благодарю вас!


person Reinhard Mayr    schedule 02.10.2018    source источник
comment
Это проект MSI? Что говорит файл журнала?   -  person Stein Åsmul    schedule 03.10.2018
comment
Нет, это проект InstallScript, не относящийся к MSI. Мне не удалось создать файлы журналов, поэтому я придумал файл setup.ilg.   -  person Reinhard Mayr    schedule 08.10.2018
comment
Как регистрируются файлы? Делаете ли вы это с помощью Installscript, включив самостоятельную регистрацию для файла или какой-либо подход к файлу bat или аналогичный? Почему бы не запретить установку, если файлы открыты? Setup.exe /s /f2"C:\Setup.log" не работает для регистрации? параметры Setup.exe. Я никогда не пробовал параметр /debuglog.   -  person Stein Åsmul    schedule 08.10.2018
comment
Файлы регистрируются с использованием флага саморегистрации сборщика InstallShield, ручной работы не добавляется. › Почему бы не запретить установку, если файлы открыты? Как бы я это сделал? Мне также не удалось создать разумные журналы. Параметры /s /f2 дают мне только краткую сводку с ResultCode равным 0.   -  person Reinhard Mayr    schedule 10.01.2019
comment
Если файлы не могут самостоятельно зарегистрироваться, обычно отсутствует зависимость. Попробуйте запустить самостоятельную регистрацию вручную для установленных файлов и посмотрите, получите ли вы осмысленное сообщение об ошибке. В противном случае необходим сеанс проверки зависимостей.   -  person Stein Åsmul    schedule 10.01.2019
comment
@SteinÅsmul, спасибо за отзывчивость! Я могу прописать файлы вручную, я могу даже заново запустить настройку после перезагрузки с помощью функции восстановления, и она работает. Это как раз проблема, когда требуется перезагрузка.   -  person Reinhard Mayr    schedule 10.01.2019
comment
По какой причине вы не можете использовать COM Extract при сборке? Это устранит необходимость самостоятельной регистрации во время установки.   -  person Stein Åsmul    schedule 10.01.2019
comment
Добавил скриншот ниже.   -  person Stein Åsmul    schedule 10.01.2019
comment
Извлечение COM при сборке недоступно в проекте InstallScript, отличном от MSI.   -  person Reinhard Mayr    schedule 10.01.2019


Ответы (2)


Штейн попросил меня взвесить это.

Честно говоря, я не касался типов проектов InstallScript с 2003 года. Но я могу предположить, что происходит. Я бы предположил, что заблокированный файл заставляет MoveFileEx() использовать шаблон операции PendingFileRename, и что саморегистрация не происходит, потому что DLL еще не находится там, где она должна быть. Что-то должно было произойти после перезагрузки, чтобы вызвать LoadLibrary/DllRegisterServer() после перезагрузки, когда файл теперь находится в своем последнем месте отдыха.

Почему это не происходит автоматически? Понятия не имею. Я сделал быстрый поиск в Google и нашел эту статью:

http://helpnet.installshield.com/installshield19helplib/Subsystems/installshield19langref/helplibrary/LangrefXCopyFile.htm

К сожалению, мой корпоративный брандмауэр блокирует мне доступ к нему. Судя по тому, что показал мне Google, похоже, что у вас может быть обходной путь, используя функцию XCopy для решения этой проблемы.

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

person Christopher Painter    schedule 10.01.2019

Извлечение COM при сборке. Может быть, попробовать включить Извлечение COM при сборке, чтобы исключить необходимость самостоятельной регистрации? См. этот ответ: Не удалось запустить функцию сценария из Custom Действия. По сути, эта опция скрыта на странице свойств для каждого компонента.

Возможно, это старый, устаревший установщик, который вообще не является MSI?

Сообщества InstallShield:

person Stein Åsmul    schedule 10.01.2019
comment
Это невозможно, потому что это не проект MSI, а просто InstallScript. - person Reinhard Mayr; 10.01.2019
comment
Хорошо, вы можете попробовать некоторые сообщества Installshield, а я проконсультируюсь с затаившимся экспертом Painter. - person Stein Åsmul; 10.01.2019