Да, пробовал. Намучался. И именно поэтому послал NSIS куда подальше)))
Единственное что я могу представить - валидация. Но 7Z тоже проводит валидацию, я проверил.
Но опять же, самое главное для меня - чтоб запустил и через некоторое время смотришь - ага, уже завершилось, значит можно запускать паскаль.
Хотя, теперь - так и хочется запустить этот установщик лишний раз, и наблюдать как из за того что я потратил больше сил единожды - теперь могу расслабится и смотреть как вся работа выполняется за меня. Очень много удовольствия приносит)))
Причем тут валидация? Разумеется, любой разархиватор выполняет проверку контрольных сумм файлов, это обязательная практика, но не в этом дело.
Я задавался вопросом о том, есть ли какой-то практический выигрыш в дальнейшей работе от того, что инсталлятор выполняет предкомпиляцию всех сборок (вместо JIT-компиляции их виртуальной машиной уже во время исполнения).
А то что прекомпиляция выполняется - это точная информация, или ваши догадки?
И - конечно, если IDE и компилятор будут подстроены под компьютер на который их установило - это ускорит запуск, но это не должно влиять на скорость после запуска…
Кхм, ну установка стала действительно медленнее, хотя всё равно раз в 5 быстрее стандартной))) В скорости запуска IDE разницы не заметил, есть более рациональные идеи как протестировать это?
P.S. Убрал ожидание завершения “ngen.exe” и “gacutil.exe” перед продолжением установки - теперь процессорное время на 100% жрёт, но зато скорость установки всего в полотора-два раза медленнее чем без них.
У меня не доходит до конца. Распаковывает, а потом зависает, выбросив предварительно такое:
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()
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()
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 чтоб завершится).
Вот это по делу! По-разному запускал. От админа другая ошибка:
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()
Он может при появлении в системе новых файлов (например, при установке или распаковке) запретить их копирование на диск в том случае, если они показались ему подозрительными.
Мне почему этот проект интересен, он позволяет в сети на 80 машин быстро установить новую версию. Дома-то я и так справляюсь А в журнале тоже ничего не нашёл…