Как увеличить размер исполняемого файла
Обновлено: 21.11.2024
У меня возникла странная проблема с исполняемым файлом en. Когда я переношу этот исполняемый файл с ПК A на ПК B с помощью IP-мессенджера, его размер изменяется. Функционально он по-прежнему ведет себя так же. Опять же, когда я переношу файл с ПК B на ПК C, исполняемый файл возвращается к исходному размеру. Я попытался сравнить оба этих исполняемых файла разного размера с помощью сравнения HEX, и было обнаружено довольно много байтов, которые изменились.
Что может быть причиной этого?
ПРИМЕЧАНИЕ. Все эти системы используют операционную систему Windows.
Обновляли ли вы определения вирусов в последнее время? Кроме того, не могли бы вы подтвердить, что хэш (например, CRC32) также меняется?
Разные размеры блоков могут привести к незначительному изменению фактического размера файла, но содержимое файла не должно измениться.
@Gleno: Просто к вашему сведению, но CRC32 не является настоящим «хэшем», и с ним легко столкнуться. Для обеспечения целостности файлов лучше использовать MD5 или SHA.
@grawity, вероятность того, что два разных файла выведут один и тот же CRC32, достаточно мала. Вы правы в том, что существуют лучшие хэши, но CRC32 — очень распространенная проверка целостности файлов.
@Gleno: Да, но только от случайного повреждения, а не от вредоносных программ. (Не связано, но интересно: многие ISO-образы, распространяемые Microsoft, имеют FFFFFFFF в качестве CRC32.)
2 ответа 2
В прошлом у меня возникали проблемы с преобразованием CR/LF -> CR или конфликты режимов передачи ASCII/двоичных файлов в различных контекстах передачи файлов. Если теория полезной нагрузки вируса не подтверждается, вы можете пойти по этому пути, чтобы узнать, происходит ли это в вашем случае.
Если перенос исполняемого файла из системы A в систему B каким-то образом изменяет его, а перенос обратно в систему A очевидно изменяет его обратно, то я бы сказал, что это распространенный признак вируса. инфекционное заболевание. То есть EXE-файл заражен. Однако в исходной системе (A) этот вирус активен и приводит к тому, что размер файла указывается в исходном виде. Однако, проверив скопированный файл на "чистой" системе (B), вы сможете увидеть разницу.
Мой совет: загрузите EXE-файл из системы B (где файл кажется больше) в VirusTotal, который проверит его несколькими антивирусами одновременно за считанные минуты. Если файл заражен, вы, скорее всего, узнаете об этом.
Можете ли вы пояснить, почему вирус увеличивает размер файла в системе? Теоретически, я думаю, я мог бы увидеть, как это может повлиять на то, что утилита может отображать как размер. Я упускаю еще одну возможность?
Когда вирус заражает файл, он добавляет к нему свою полезную нагрузку, поэтому файл увеличивается. Чтобы избежать обнаружения, в зараженной системе (где вирус является резидентным и активным) он показывает размер файла таким, каким он был до заражения. Но если вы скопируете этот файл в чистую систему, вы увидите его истинный размер, который был до заражения, плюс размер полезной нагрузки вируса.
Хотите улучшить этот вопрос? Обновите вопрос, чтобы он соответствовал теме Stack Overflow.
Закрыто 5 месяцев назад.
Я сделал браузер на Python. Я преобразовал его в exe-файл с помощью pyinstaller. Но его размер составляет 109 426 КБ. Мне нужно загрузить его в некоторые места, и он показывает «Пожалуйста, попробуйте загрузить файлы до 25md». Что я буду делать? Как изменить этот большой exe-файл 24mb?
Если вы не включили библиотеки (их много!), которые на самом деле не используете, маловероятно, что это будет возможно. Уменьшить размер со 110 МБ до 25 МБ вряд ли удастся.
Это может означать, что в вашем браузере слишком много больших зависимостей. Вы должны видеть, что вы используете и как уменьшить его. Если вы еще этого не сделали, используйте виртуальную среду (или аналогичный инструмент управления пакетами), чтобы лучше управлять пакетами только для вашего проекта.
Пожалуйста, отредактируйте вопрос, чтобы ограничить его конкретной проблемой с достаточными подробностями, чтобы определить адекватный ответ.
2 ответа 2
Ну, я тоже столкнулся с той же проблемой, но в моем случае я создаю виртуальную среду и снова устанавливаю модуль в виртуальной среде, причина этого в том, что когда вы создаете exe-файл, все модули на вашем компьютере упакованы с exe-файл (даже ненужные модули), поэтому создайте виртуальную среду, а затем экспортирует только необходимые модули.
Вы также можете попробовать Nuitka вместо PyInstaller.
В отличие от PyInstaller, Nuitka обычно создает исполняемые файлы меньшего размера. Nuitka компилирует все исходники в компактный машинный код и включает строго только используемые (рекурсивно импортированные) модули и не более того.
Хотя нет гарантии, что Nuitka сделает двоичный файл меньшего размера, вы все же можете попробовать.
Чтобы использовать Nuitka, выполните следующие действия:
Установите Nuitka с помощью python -m pip install nuitka zstandard . Важное примечание - в этой команде вы можете увидеть zstandard, этот модуль обязателен к установке, он нужен для того, чтобы ваш конечный exe-файл был намного меньше, Nuitka автоматически использует этот модуль, если он установлен.
Установите компилятор C++, Visual Studio (MSVC) в Windows или GCC в Linux ( sudo apt install g++ gcc ). Для Visual Studio достаточно установить Community версию. Компилятор C++ необходим для Nuitka, потому что он преобразует все исходники Python в C/C++ и компилирует их.
Если вы не хотите устанавливать Visual Studio, Nuitka предлагает автоматически загрузить/установить набор инструментов MSYS/MinGW с компилятором C/C++ на шаге 5 сборки, описанном ниже. На этом этапе он спросит Продолжить загрузку? [Да/Нет] , введите yes и Enter. Тогда вместо Visual Studio будет использоваться компилятор MinGW C++. Если MinGW не будет работать для вас и выведет некоторые ошибки во время сборки, у вас нет другого выбора, и вам нужно установить Visual Studio.
Если в Windows запустить командную строку Visual Studio Native x64, ссылка на нее должна быть установлена и находиться на рабочем столе (или в меню «Пуск»). В Linux просто запустите терминал. Также измените каталог, в котором находится ваш скрипт Python.
Запустите python -m nuitka --assume-yes-for-downloads --onefile --standalone your_program.py . Также в некоторых системах используется префикс python -m nuitka. не работает, тогда просто используйте nuitka, т.е. запустите nuitka --assume-yes-for-downloads --onefile --standalone your_program.py . Это создаст ваш окончательный EXE. Сборка всех исходников занимает некоторое время. Также во время сборки Nuitka может запросить что-то вроде Package . нужен для установки. Продолжить загрузку? [Да/Нет] несколько раз, введите yes и нажмите Enter для подтверждения и продолжения.
Если во время сборки на шаге 5 появляются какие-либо предупреждения или ошибки, устраните их, это поможет вам получить окончательный EXE-файл очень хорошего качества. Предупреждения отображаются красным цветом, одним из типов предупреждений может быть то, что Nuitka предлагает вам установить дополнительный модуль, например zstandard , выполните все предложенные предупреждения!
Если шаг 5. выполнен успешно, вы получите файл your_program.exe рядом с вашим скриптом Python. Этот EXE-файл — единственный файл, который необходимо загрузить вашим друзьям, для запуска этого EXE-файла не требуется предварительно установленный Python на их компьютере.
Если вы используете Windows, вы можете использовать два дополнительных флага (при необходимости) на шаге 5 сборки. . Первый флаг - --windows-uac-uiaccess. Он необходим, если вашему приложению по каким-то причинам требуются права администратора. Добавление этого флага попросит пользователя предоставить разрешение администратора при запуске приложения.
Второй флаг Windows — --windows-disable-console. Используйте его, если вам вообще не нужна консоль при запуске приложения. Используйте его, если у вас есть только графическое приложение, которому не нужно ничего отображать в консоли.
Также запустите nuitka --help, чтобы увидеть все доступные параметры командной строки, в Nuitka есть много полезных параметров.
Этот форум перенесен в раздел вопросов и ответов Майкрософт. Посетите Microsoft Q&A, чтобы публиковать новые вопросы.
Вопрос:
Вопрос
Раньше размер моего исполняемого файла составлял около 10 МБ в VS2010, после того как я преобразовал его в VS2019, размер скомпилированного исполняемого файла увеличился до 72 МБ. Размер файла 10мб считаю слишком большим, а сейчас даже он вырос до 72мб. Любое решение для этого?
Все ответы
Раньше размер моего исполняемого файла составлял около 10 МБ в VS2010, после того как я преобразовал его в VS2019, размер скомпилированного исполняемого файла увеличился до 72 МБ. Размер файла 10мб считаю слишком большим, а сейчас даже он вырос до 72мб. Любое решение для этого?
потому что я загружаю последний исполняемый файл в основной каталог. Клиентская рабочая станция загрузит последний исполняемый файл для обновления локального исполняемого файла. чем больше размер исполняемого файла, тем дольше загружается (зависит от скорости сети).
Вы открываете свой проект в VS2019, размер исполняемого файла меняется с 10 МБ на 70 МБ после перекомпиляции? Вы больше ничего не делали?
Просто переустановите дизайнер отчетов. Затем скомпилируйте его.
потому что я загружаю последний исполняемый файл в основной каталог. Клиентская рабочая станция загрузит последний исполняемый файл для обновления локального исполняемого файла. чем больше размер исполняемого файла, тем дольше загружается (в зависимости от скорости сети).
Что бы это ни стоило.
С другой стороны, возможно, у вас слишком много кода в исполняемом файле, корневом проекте, вы не реализуете SoC и не выделяете код в проект classlib, библиотеку DLL, на которую ссылается корневой проект, что может снизить размер исполняемого файла путем отделения кода от корневого проекта.
Важно свести размер файла созданного приложения к минимуму, особенно для мобильных устройств или магазинов приложений, в которых установлены ограничения по размеру. Первым шагом в уменьшении размера является определение того, какие активы вносят в него наибольший вклад, потому что эти активы являются наиболее вероятными кандидатами на оптимизацию.Эта информация доступна в журнале редактора сразу после того, как вы выполнили сборку. Перейдите в окно консоли (меню: «Окно» > «Основные» > «Сокращение игровой консоли»
См. в глоссарии), щелкните маленькую раскрывающуюся панель в правом верхнем углу и выберите «Открыть журнал редактора».
Журнал редактора сразу после сборки
В журнале редактора содержится сводная информация об Активах с разбивкой по типам, а затем перечислены все отдельные Активы в порядке их вклада. Как правило, такие вещи, как текстуры, звуки и анимация, занимают больше всего памяти, в то время как скрипты — фрагмент кода, который позволяет вам создавать свои собственные компоненты, запускать игровые события, изменять свойства компонентов с течением времени и реагировать на пользовательский ввод любым удобным для вас способом. Дополнительная информация
См. в Глоссарии, Уровни и шейдеры Программа, работающая на графическом процессоре. Дополнительная информация
См. в глоссарии обычно оказывают наименьшее влияние. Заголовки файлов, упомянутые в списке, не являются активами — на самом деле это дополнительные данные, которые добавляются в «сырые» файлы активов для хранения ссылок и настроек. Заголовки обычно очень мало влияют на размер ресурса, но значение может быть большим, если у вас много больших ресурсов в папке ресурсов.
Журнал редактора помогает определить ресурсы, которые вы, возможно, захотите удалить или оптимизировать, но прежде чем начать, вам следует учесть следующее:
Unity перекодирует импортированные активы в свои собственные внутренние форматы, поэтому выбор типа исходного актива не имеет значения. Например, если у вас есть многослойная текстура Photoshop в проекте, она сглаживается и сжимается перед построением. Экспорт текстуры в виде файла .jpg не влияет на размер сборки, поэтому при разработке следует придерживаться наиболее удобного для вас формата.
Unity удаляет большинство неиспользуемых ассетов во время сборки, поэтому вы ничего не получите, удалив ассеты из проекта вручную. Единственные ассеты, которые не удаляются, — это скрипты (которые в любом случае очень маленькие) и ассеты в папке «Ресурсы» (поскольку Unity не может определить, какие из них нужны, а какие нет). Имея это в виду, вы должны убедиться, что в папке «Ресурсы» находятся только те активы, которые вам нужны для игры. Возможно, вы сможете заменить активы в папке «Ресурсы» на AssetBundles — это означает, что Unity загружает активы динамически, тем самым уменьшая размер проигрывателя.
Предложения по уменьшению размера сборки
Текстуры
Текстуры обычно занимают больше всего места в сборке. Первым решением этой проблемы является использование сжатых форматов текстур. Формат файла для обработки текстур во время рендеринга в реальном времени аппаратным обеспечением для трехмерной графики, таким как видеокарта или мобильное устройство. Подробнее
см. в глоссарии. Дополнительные сведения см. в документации по сжатию текстур для конкретных платформ.
Если это не уменьшит размер файла в достаточной степени, попробуйте уменьшить физический размер (в пикселях) изображений текстуры. Чтобы сделать это без изменения фактического исходного содержимого, выберите текстуру в представлении «Проект», а в окне «Инспектор» — окно Unity, в котором отображается информация о текущем выбранном игровом объекте, активе или настройках проекта, что позволяет вам просматривать и редактировать значения. Дополнительная информация
См. в окне Глоссарий, уменьшите максимальный размер. Чтобы увидеть, как это выглядит в игре, увеличьте GameObject. Основной объект в сценах Unity, который может представлять персонажей, реквизит, декорации, камеры, путевые точки и многое другое. Функциональность GameObject определяется прикрепленными к нему компонентами. Дополнительная информация
См. в глоссарии, где используется текстура, а затем отрегулируйте максимальный размер, пока он не начнет выглядеть хуже в сцене. Сцена содержит окружение и меню вашей игры. Думайте о каждом уникальном файле сцены как об уникальном уровне. В каждой сцене вы размещаете свое окружение, препятствия и декорации, по сути проектируя и создавая свою игру по частям. Дополнительная информация
См. в режиме просмотра глоссария. Изменение максимального размера текстуры не влияет на ваш объект текстуры, а только на его разрешение в игре.
Изменение максимального размера текстуры не влияет на ваш объект текстуры, а только на его разрешение в игре
По умолчанию Unity сжимает все текстуры при импорте. Чтобы ускорить рабочий процесс в редакторе, перейдите в Unity Mesh Основной графический примитив Unity. Меши составляют большую часть ваших 3D-миров. Unity поддерживает триангулированные или четырехугольные полигональные сетки. Поверхности Nurbs, Nurms, Subdiv должны быть преобразованы в полигоны. Дополнительная информация
См. в глоссарии сжатие Метод хранения данных, уменьшающий объем требуемого дискового пространства.См. Сжатие текстур, Сжатие анимации, Сжатие аудио, Сжатие сборки.
См. Глоссарий, выберите сетку, затем в окне инспектора установите для параметра «Сжатие сетки» значение «Низкое», «Среднее» или «Высокое». Сжатие сетки и анимации Метод сжатия данных анимации для значительного уменьшения размера файла без заметного снижения качества движения. Сжатие анимации — это компромисс между экономией памяти и качеством изображения. Дополнительная информация
См. в глоссарии использует квантование, что означает, что он занимает меньше места, но сжатие может внести некоторые неточности. Поэкспериментируйте с допустимым уровнем сжатия для ваших моделей.
Обратите внимание, что при сжатии Mesh создаются только файлы данных меньшего размера, и при этом не используется меньше памяти во время выполнения. Ключевой кадр анимации Кадр, отмечающий начальную или конечную точку перехода в анимации. Кадры между ключевыми кадрами называются промежуточными.
См. в глоссарии. Сокращение создает файлы данных меньшего размера и использует меньше памяти во время выполнения; как правило, он всегда должен быть включен. См. документацию по анимационным клипам Данные анимации, которые можно использовать для анимированных персонажей или простых анимаций. Это простое «единичное» движение, такое как (один конкретный пример) «Простояние», «Ходьба» или «Бег». Дополнительная информация
Дополнительную информацию см. в Глоссарии.
Читайте также: