View previous topic :: View next topic |
Author |
Message |
Plinius
Joined: 29 Oct 2008 Posts: 7 Location: Владимир
|
(Separately) Posted: Tue May 27, 2014 08:26 Post subject: Программа не запускается (31) |
|
|
Речь пойдёт не об аналогичной ошибке при запуске ярлыков, как подумали некоторые. Речь пойдёт про запуск конкретных исполняемых файлов с расширением exe.
Если подобная тема уже была, то прошу прощения. Тогда пульните в меня нужной ссылкой, потому как по поиску описание данного случая я не нашёл (возможно плохо искал).
Что имеем? Windows 7 x64 SP1. Тотал - официальная версия 8.51а x64, установленная на компьютере. Ещё имеем одну старенькую программу (не суть важно какую), инсталлятор которой запускается программой setup.exe. При попытке запуска указанного файла под Тоталом получаем известное окно ошибки: "Программа не запускается! (31)".
Я сначала не понял в чём дело, т.к. чётко помню, что раньше под Тоталом спокойно запускал эту программу. Действительно, удаляю 8.51a x64 с файлами настроек и устанавливаю также официальный 8.01 x64. Запускаю этот setup.exe - и, о чудо, всё запускается. Сношу 8.01 x64, ставлю обратно 8.51a x64 - опять получаю окно с ошибкой (31). Поменял 64-битную 8.51a на 32-битную. Уже всё стало запускаться. Насчёт 32-разрядной версии 8.50 не скажу, не пробовал, но под 64-битной 8.50 эта программа также не запускалась. В итоге, получается, что моя программа почему-то не очень дружит с последними версиями Тотала разрядности x64.
По данной ситуации у меня вопрос: в новых версиях у меня какие-то неверные настройки 64-битного Тотала или это его глюк? Если кто захочет промоделировать эту ситуацию, то могу скинуть на файлообменник файл setup.exe, на котором вылетает ошибка 31. Если модератор разрешит, то ссылку выложу в теме. Если нет, то дам по запросу в личке. Естественно, при запуске этого файла он ругнётся на отсутствие других установочных файлов, но тут важно другое - либо программа запустится и ругнётся на отсутствие других файлов, либо уже ругнётся сам Тотал, т.е. почему-то не захочет запустить этот файл. Под проводником Windows всё запускается. |
|
Back to top |
|
|
Avada
Joined: 01 Aug 2008 Posts: 10252 Location: Россия, Саратов
|
(Separately) Posted: Tue May 27, 2014 08:58 Post subject: |
|
|
Plinius
Ссылку на файл — мне в личку. В общем виде это обсуждать бессмысленно, надо смотреть конкретно.
Добавлено спустя 56 минут:
Ссылка на файл. Я сам смогу проверить только вечером. _________________ Даже самая богатая фантазия
Не представит себе наши безобразия. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Tue May 27, 2014 10:22 Post subject: |
|
|
Действительно интересно, в 8.50 beta 2 x64 уже не запускается, а в 8.01 x64 ещё запускается.
Ага, полагаю, это связано с этим:
Quote: | 14.04.13 Fixed: Do not try to run 16-bit programs from 64-bit TC, they cause a segmentation fault in ShellExecuteEx (64) |
Вообще удивлён, что в 64-битной винде запускаются 16-битные экзешники. Был уверен, что 16-битной подсистемы в ней нет вообще (но видимо, это касается только программ под DOS, раз графическая запускается). _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Tue May 27, 2014 14:18 Post subject: |
|
|
MVV wrote: | Вообще удивлён, что в 64-битной винде запускаются 16-битные экзешники. Был уверен, что 16-битной подсистемы в ней нет вообще (но видимо, это касается только программ под DOS, раз графическая запускается). |
А они и не запускаются. И неважно, графическая или нет. Например, программа SHED для редактирования SHG-изображений 16-битная и графическая, но не запускается (что ощутимо ударило в своё время по моей работе над русиком Тотала, т. к. интерактивные картинки в HLP-справке сделаны именно в SHG-формате).
А с данным инсталлятором всё обстоит оччень любопытненько. Если его запустить, а потом посмотреть информацию о процессе, будет видно, что на самом деле образ процесса принадлежит файлу C:\Windows\SysWOW64\InstallShield\setup.exe, несмотря на то, что командная строка выглядит следующим образом:
Code: | "C:\Temp\SETUP.EXE" -isw64"C:\Temp\SETUP.EXE" |
Если проследить через Process Monitor, то видно, что запускается именно InstallShield, и что вышеприведённая командная строка является такой сразу же при инициализации процесса. Далее, если посмотреть чуть выше, то обнаруживается, что процесс Тотала (а, вернее, системная библиотека, сидящая в его памяти, через которую Тотал выполняет запуск программ) дёргает файлик C:\Windows\AppPatch\sysmain.sdb, то есть включается механизм обеспечения совместимости приложений. И у меня сильное подозрение, что именно в этом файлике прописан запуск InstallShield'а, если вдруг обнаруживается, что запускаемый файл — инсталлятор, построенный именно на этой технологии (как в нашем случае). В результате винда запускает 32-битный InstallShield, передавая ему наш 16-битный инсталлятор, и никакого запуска 16-битной программы не происходит. Инсталлятор просто распаковывает файл своими средствами.
Резюме: Мистики с 16-битками никакой не обнаружилось, а баг я зарепортил. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
(Separately) Posted: Tue May 27, 2014 14:45 Post subject: |
|
|
Да, похоже, инструмент совместимости определяет, что это установщик InstallShield, и запускает системный 32-битный Setup.exe.
А мистику мы не имели возможности обнаружить, т.к. система на самом деле не запускала 16-битный процесс, а запускала вместо него 32-битный. Вот если изменить экзешник, чтобы он по базе не пробивался...
В любом случае, не думаю, что есть смысл полагаться на патчи совместимости при определении, что запускать, а что - нет, уж очень их много, и уж очень они кривые... _________________ TCFS2 + TCFS2Tools: Полноэкранный режим и многое другое (обсуждение)
WINCMD.RU: AskParam, CopyTree, NTLinks, Sudo, VirtualPanel… |
|
Back to top |
|
|
Plinius
Joined: 29 Oct 2008 Posts: 7 Location: Владимир
|
(Separately) Posted: Tue May 27, 2014 15:13 Post subject: |
|
|
Большое спасибо. |
|
Back to top |
|
|
Plinius
Joined: 29 Oct 2008 Posts: 7 Location: Владимир
|
(Separately) Posted: Wed May 28, 2014 18:25 Post subject: |
|
|
Интересное наблюдение.
По пути
Code: | C:\Windows\SysWOW64\InstallShield\ |
находятся три файла
Code: | setup.exe
_setup.dll
_isdel.exe
|
Эти же три файла присутствуют в дистрибутиве моей старой программы. Берём, заменяем старые копии файлов из указанного выше каталога новыми - и вуаля - программа запускается под Тоталом 8.51a x64 и к тому же устанавливается корректно. Ловкость рук и никакого мошенничества. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
CaptainFlint
Joined: 14 Dec 2004 Posts: 6151 Location: Москва
|
(Separately) Posted: Thu May 29, 2014 15:54 Post subject: |
|
|
Гислер ответил, что это намеренное поведение, исправлять не планируется. Проблема в том, что Тотал не может заранее отличить такой "запускающийся" 16-битный файл от любого другого, а попытка запуска обычной 16-битной программы вызывает падение в системной функции. Поэтому Гислер запретил запуск всех 16-битных приложений из 64-битного Тотала. _________________ Почему же, ё-моё, ты нигде не пишешь "ё"? |
|
Back to top |
|
|
Plinius
Joined: 29 Oct 2008 Posts: 7 Location: Владимир
|
(Separately) Posted: Thu May 29, 2014 18:12 Post subject: |
|
|
Жаль, конечно. Тем более что под проводником всё работает исправно, никаких сбоев не возникает. Так пользователь может быть сбит с толку, что программа не запускается, хотя это не так.
Да, в 90-е годы довольно часто делали полностью 32-битные программы, хотя инсталляторы к ним оставались по-прежнему 16-битными. Раньше это было некритично, а сейчас этот момент стал ощущаться. |
|
Back to top |
|
|
Flasher
Joined: 06 Nov 2009 Posts: 14229 Location: Москва
|
(Separately) Posted: Thu May 29, 2014 21:11 Post subject: |
|
|
Plinius
Предлагаю навесить во внутренних ассоциациях запуск exe проводником. _________________ Автору сборки TC Image (Andrey_A) настоятельно рекомендуется не распространять на иных ресурсах любую предоставленную мной где-либо техническую информацию по автоматизации и оптимизации в работе с ТС и системой. |
|
Back to top |
|
|
MVV
Joined: 15 Oct 2009 Posts: 4811 Location: Ростов-Дон
|
|
Back to top |
|
|
Plinius
Joined: 29 Oct 2008 Posts: 7 Location: Владимир
|
(Separately) Posted: Fri May 30, 2014 22:34 Post subject: |
|
|
MVV wrote: | Ещё можно через Shift+Enter или Ctrl+Enter и Enter. | Да, это быстрый способ. Спасибо за советы. |
|
Back to top |
|
|
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
Powered by phpBB © 2001, 2005 phpBB Group
|