Генерация контрольной суммы Chocolatey из загруженной MSI - PullRequest
1 голос
/ 22 июня 2019

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

Пакет, который я устанавливаю, является загруженным набором msi с $ url.В документах сказано, что вы можете использовать checkum.exe (контрольная сумма установки choco) и использовать

checksum -t sha256 -f path\to\file

, если я правильно понимаю, это сгенерирует контрольную сумму для файла.

Итак, как мне это сделать против MSI, который загружается?

Я могу жестко закодировать контрольную сумму из текущего msi, но если базовый msi изменится (но URL останется прежним), то моя контрольная сумма не будет проверена во время установки.

Я бы полностью оставил контрольную сумму, но теперь Шоколадка, кажется, требует этого.

Есть идеи?

Ответы [ 2 ]

1 голос
/ 22 июня 2019

Контрольная сумма используется в целях безопасности: действительно ли загруженный файл - это файл, который вы хотите установить?Но если вы доверяете провайдеру файла, вы можете указать choco игнорировать контрольную сумму с помощью параметра командной строки --ignore-checksums:

choco install <package> --ignore-checksums

Примечание. Если вы можете использовать PowerShell, контрольная сумма также может бытьсгенерировано с помощью командлета Get-FileHash:

Get-FileHash -Path "path\to\file" -Algorithm SHA256
0 голосов
/ 22 июня 2019

Здесь обсуждается пара разных тем, поэтому я хотел убедиться, что каждая из них покрыта.

Во-первых, модераторы пакетов, представленных в репозиторий Chocolatey Community, проводят ряд проверок. Что касается контрольных сумм, руководство состоит в том, что контрольные суммы для установщика / zip / etc требуются , когда загрузка происходит по HTTP, и что контрольные суммы рекомендуются , когда загрузка происходит по HTTPS. В большинстве случаев для отправки новых пакетов модераторы (включая меня) будут запрашивать добавление контрольных сумм в сценарий установки пакета независимо от того, происходят ли они по HTTP или HTTPS.

Во-вторых, контрольная сумма используется для того, чтобы убедиться, что файл, загружаемый во время выполнения, совпадает с тем, который ожидал сопровождающий пакета при создании пакета. Это функция безопасности, и когда Chocolatey обнаружит, что контрольная сумма отличается между загружаемым файлом и тем, что ожидалось, установка не будет продолжена. Может быть несколько причин, почему контрольная сумма отличается. Некоторые из этих причин описаны в этом блоге:

https://www.gep13.co.uk/blog/chocolatey-error-hashes-do-not-match

Во-первых, некоторые пакеты (например, Google Chrome) не содержат версионные URL-адреса для установщика их приложений. В результате вы можете загрузить установщик Chrome только из одного места, а именно https://dl.google.com/tag/s/dl/chrome/install/googlechromestandaloneenterprise64.msi. В результате, когда Google выпускает новую версию Chrome, что происходит довольно часто, самая последняя пакетная версия Chrome на Chocolatey.org немедленно сломан.

Второй способ, которым контрольные суммы будут нарушены, - это если поставщик «изменит» установщик приложения после его публикации без изменения номера версии.

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

В первом случае, когда фактически существует новая версия приложения, а файл в конце URL-адреса фактически является новым, тогда запросом будет создание новой версии пакета с обновленным номером версии. В этом новом пакете вы бы включили новое значение контрольной суммы.

И последнее, что я хотел прояснить, это то, что контрольная сумма генерируется и помещается в пакет в тот момент, когда пакет создается и отправляется на chocolatey.org. Это делается, как вы упомянули, например, с помощью инструмента Checkum.exe. Во время установки Chocolatey затем проверяет эту контрольную сумму по загружаемому файлу. Существуют механизмы, например AU , которые могут помочь автоматизировать этот процесс. Это может быть то, что вы хотите посмотреть.

...