Проекты на PascalABC.NET

Да, пробовал. Намучался. И именно поэтому послал NSIS куда подальше)))

Единственное что я могу представить - валидация. Но 7Z тоже проводит валидацию, я проверил.

Но опять же, самое главное для меня - чтоб запустил и через некоторое время смотришь - ага, уже завершилось, значит можно запускать паскаль.

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

Причем тут валидация? Разумеется, любой разархиватор выполняет проверку контрольных сумм файлов, это обязательная практика, но не в этом дело.

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

А то что прекомпиляция выполняется - это точная информация, или ваши догадки?

И - конечно, если IDE и компилятор будут подстроены под компьютер на который их установило - это ускорит запуск, но это не должно влиять на скорость после запуска…

  1. Вызов ngen.exe в скрипте NSIS (предкомпиляция):

  1. Вызов gacutil.exe в скрипте NSIS (установка библиотек в системный кэш GAC):

Теоретически это так. Но вот попробуйте замерьте у себя разницу на практике, может быть она ничтожна на приличном железе, а может и правда заметна.

Кхм, ну установка стала действительно медленнее, хотя всё равно раз в 5 быстрее стандартной))) В скорости запуска IDE разницы не заметил, есть более рациональные идеи как протестировать это?

P.S. Убрал ожидание завершения “ngen.exe” и “gacutil.exe” перед продолжением установки - теперь процессорное время на 100% жрёт, но зато скорость установки всего в полотора-два раза медленнее чем без них.

P.P.S.

У меня не доходит до конца. Распаковывает, а потом зависает, выбросив предварительно такое:

Summary

System.UnauthorizedAccessException: Отказано в доступе по пути “C:\Program Files (x86)\PascalABC.NET\TreeConverter.dll”. в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) в System.IO.File.InternalDelete(String path, Boolean checkHost) в downloader.InstallableFile.Install()

Файл g:\temp\PABCInstallerTemp\WeifenLuo.WinFormsUI.Docking.dll=>C:\Program Files (x86)\PascalABC.NET\WeifenLuo.WinFormsUI.Docking.dll

System.UnauthorizedAccessException: Отказано в доступе по пути “C:\Program Files (x86)\PascalABC.NET\WeifenLuo.WinFormsUI.Docking.dll”. в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) в System.IO.File.InternalDelete(String path, Boolean checkHost) в downloader.InstallableFile.Install()

Файл g:\temp\PABCInstallerTemp\YieldHelpers.dll=>C:\Program Files (x86)\PascalABC.NET\YieldHelpers.dll

System.UnauthorizedAccessException: Отказано в доступе по пути “C:\Program Files (x86)\PascalABC.NET\YieldHelpers.dll”. в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) в System.IO.File.InternalDelete(String path, Boolean checkHost) в downloader.InstallableFile.Install()

Установщик пытался удалить старый файл перед тем как записать на его место новый. Но какая то программа использует старый .dll, или винда их защищает. Попробуйте запустить его выключив всё. Если разберётесь - напишите что это было.

P.S. Это не зависание. Программа установила что могла, а затем выписала что не удалось установить. И теперь ждёт ввода от пользователя (точнее - Enter чтоб завершится).

Это всё понятно. Попробовал перезагрузиться и отключить антивирус – результат тот же. Файлы все без лишних атрибутов. Может Win’10 бунтует? Загадка…

Win10 - ЗЛО!

Модератор, а по теме есть что сказать?

Есть. Запуск производился от имени администратора?

Вот это по делу! По-разному запускал. От админа другая ошибка:

Summary

подготовка скачиваю распаковываю Устанавливаю Удаляю папку в которую распоковывал при выполнении возникла ошибка: System.UnauthorizedAccessException: Отказано в доступе по пути “g:\temp\PABCInstallerTemp\ExecHide.exe”. в System.IO.__Error.WinIOError(Int32 errorCode, String maybeFullPath) в System.IO.File.InternalDelete(String path, Boolean checkHost) в downloader.downloader.DeleteFolder(String path) в downloader.downloader.$Main()

А это похоже на то, что Windows и правда защищает файлы. Либо - файл запущен.

Похоже, как-то защищает кто-то… Файл точно не запущен, антивирус отключал…

Антивирус защищает только свои файлы.

Он может при появлении в системе новых файлов (например, при установке или распаковке) запретить их копирование на диск в том случае, если они показались ему подозрительными.

Может. Но тогда он сделает отметку в журнале, а если антивирус хороший - уберет подозрительный файл в песочницу.

Если интересно порыться, можно еще журналы посмотреть

Ни в журнале, ни в карантине ничего нет… Sysinlernals, что ли, брать теперь?

Ну… есть еще железный вариант - просто “забить” :sunglasses:

1 лайк

Мне почему этот проект интересен, он позволяет в сети на 80 машин быстро установить новую версию. Дома-то я и так справляюсь :slight_smile: А в журнале тоже ничего не нашёл…