Программа установки обнаружила что файл изменился с момента первоначальной публикации
Я новичок в wix, поэтому, пожалуйста, потерпите меня.
У меня есть рабочий установщик для нашего приложения Windows WPF. Сейчас я пытаюсь выполнить предварительную установку приложения до его установки. Я могу собрать установщик, упакованный с обязательным условием для моего приложения, но когда я запускаю его и нажимаю "да", чтобы, если я хочу запустить установку для моей обязательной программы, он выдает ошибку.
Программа установки обнаружила, что файл "C:\Users\DevMachine\AppData\Local\Temp\VSDC06D.tmp\SlimDX\SlimDX Runtime .NET 4.0 x64 (январь 2012 г.).msi" изменился с момента его первоначальной публикации или может быть коррумпированы.
Я знаю, что SlimDx MSI не поврежден, так как я могу запустить его из моего каталога установщика просто отлично. Так что, возможно, он думает, что это изменилось.
Я копирую распространяемый пакет slimDx в папку Setup в части msbuild.
Таким образом, в конце я пытаюсь сделать это, когда я запускаю мои приложения Setup.exe, он сначала запустит установщик для распространения SlimDx, а затем запустит установку для моего приложения.
Пожалуйста, помогите, спасибо.
1 ответ
Я бы так не думал, но нужно проверить. Я думаю, что тестовый запуск MSI мог бы удалить флаг, но возможно, что вы сделали копию загруженного файла, не удаляя флаг, и именно эта копия включена в пакет (не MSI, который вы запускали):
- При загрузке из Интернета файл будет иметь альтернативный поток данных Zone.Identifier со значением 3 указывая, что файл был загружен из Интернета. Это вызывает предупреждения безопасности.
- В вашем случае просто удалите флаг вручную, используя указанную кнопку в диалоговом окне свойств файла, а затем перекомпилируйте настройки и средство запуска.
Подробнее об этом альтернативном потоке можно прочитать здесь. Как пройти защиту SmartScreen Защитника Windows?
Подписание: как вы на самом деле подписываете Setup.exe и различные components / prerequisities ? Некоторая информация о подписи: snk против сертификата подписи кода (рекомендуется).
Извлечь: " . эта проблема возникает из-за того, что процесс сборки генерирует дайджест файла предварительных требований с помощью алгоритма хэширования SHA2, когда он упаковывает файл предварительных требований. Однако файл Setup.exe пытается прочитать дайджест с использованием алгоритма SHA1. Поэтому происходит несоответствие между ожидаемыми дайджестами и фактическими дайджестами, и Setup.exe определяет, что MSI-файл отсутствует или поврежден. "
Программное обеспечение для обеспечения безопасности: И хотя я считаю, что в данном случае это не имеет значения, возможно, убедитесь, что какое-либо программное обеспечение для защиты не блокирует вашу установку (по какой-либо причине). Попробуйте временно отключить его или протестировать на чистом виртуале без установки чего-либо еще?
Максим, ограничение по размеру пакета составляет 100 Мб. В ситуациях с высокой нагрузкой серверов падает до 50 Мб.
Пытаюсь установить СИмулятор.
При этом стоит netframework и 4.8
Подскажите плиз, дабы сбросить вес с файлов, сделал видосы в формате WEBM, Но походу SIgame не поддерживает этот формат? или я что-то не так делаю
Здравствуйте, у моего друга такая проблема. Когда он запускает пак, у него крашится игра и закрывается. В чём может быть такая проблема? Он переустанавливал и старую версию ставил - не помогло
Как убрать ограничение по времени? А то не на все вопросы ещё отвечаем,а они скипаются на следующий раунд
Здравствуйте!
Я, может, не там искала, решила уже сюда написать.
Я скачала СИмулятор, решила потестить, посмотреть как, что работает, чтобы понять как и что работает, т.к. условия проведения ограничены: на одном компьютере несколько игроков оффлайн, ведущий - я.
Я не могу найти, где и с помощью чего, я могу помечать, что ответ правильный/неправильный?
Программа установки обнаружила, что файл C: \ Users [имя] \ AppData \ Local \ Temp \ VSD4F7F.tmp \ vcredist_x64 \ vc_redist.x64.exe был изменен с момента его первоначальной публикации.
Я попытался загрузить его из того же места, что и мой компьютер, но это тоже не сработало, так как при создании решения он дал ошибку, сказав, что файлы не найдены. Я положил нужные файлы в папку Packages, но это все равно не сработало.
Для справки: для разработки я использую 64-разрядный ПК, exe был разработан для 64-разрядной версии, а чистый компьютер, на котором я тестирую, является 64-разрядным. Я также использую Windows 10 и Visual Studio 2019.
Это должно пойти не так, Microsoft больше не поддерживает пакеты загрузчика. Последний, который вы, вероятно, используете, пытается развернуть версию VS2015, но получает измененную версию VS2019. Помимо исправления подписи , учтите , что вам вообще не следует использовать этот пакет. Он предназначен для конечных пользователей, подходит только для развертывания ClickOnce. Просто скопируйте библиотеки времени выполнения с помощью установщика, желательно в тот же каталог, что и .exe. Обычно только vcruntime140.dll и msvcp140.dll, Отладка> Windows> Модули, чтобы убедиться.
У меня такая же проблема, и я нашел обходной путь:
Кажется, что когда установщик создает загрузчик (setup.exe), он встраивает информацию из C: \ Program Files (x86) \ Microsoft SDKs \ ClickOnce Bootstrapper \ Packages \ vcredist_x64 \ product.xml. Точнее, похоже, что в настройку встроен открытый ключ распространяемого пакета vc ++.
Однако, если Microsoft снова изменит подпись на vcredist, моя установка снова начнет выдавать ошибки.
Это сводит меня с ума. Я подумываю: а) удалить предварительное условие из моего установщика и дать пользователям указание установить vcredist самостоятельно или б) разместить vcredist на моем собственном веб-сайте (и установить флажок «Загрузить предварительные условия из того же места, что и мое приложение).
Оба этих решения имеют существенные недостатки, и тем не менее, обновление установки каждый раз, когда Microsoft выпускает «новый» vcredist, тоже не вариант.
Когда я пытаюсь установить приложение на клиентский компьютер, я получаю следующую ошибку:
Программа установки обнаружила, что файл «C: \ Users \ MyUsername \ AppData \ Local \ Temp \ VSD537C.tmp \ DotNetFX40 \ dotNetFx40_Full_setup.exe» изменился с момента его первоначальной публикации.
Журнал не содержит дополнительных сведений.
Что вызывает эту ошибку и как предотвратить ее появление?
1 ответ
Файлы, которые были загружены из Microsoft, имели открытый ключ, отличный от того, который был указан в файлах конфигурации загрузчика (Product.xml). По крайней мере, некоторые из них были опубликованы после выпуска VS 2012 и должны были быть подписаны другим ключом. Мне пришлось извлечь открытый ключ из сертификата цифровой подписи и использовать его для замены открытого ключа, указанного в файле product.xml. После этого все заработало.
Чтобы извлечь открытый ключ:
- Щелкните правой кнопкой мыши исполняемый файл установщика и выберите Properties .
- Откройте вкладку Digital Signatures .
- Выберите подпись из списка и нажмите кнопку Details .
- На вкладке General нажмите кнопку View Certificate .
- В окне Certificate нажмите вкладку Details и найдите поле под названием Public Key .
- Выделите и скопируйте данные. Вам нужно будет выполнить поиск / замену, чтобы удалить пустые места.
- Вставьте этот ключ в атрибут открытого ключа в файле Product.xml для этого установочного пакета.
Приятно видеть, что ClickOnce / ReportViewer в 2013 году все еще такой же адский, как и тогда, когда я впервые использовал его в 2005 году.
Я испытал то же самое. Мне пришлось загрузить установочный файл SQL CLR Types из другого пакета. Я точно забыл, что это было, но это был либо пакет обновления для SQL-сервера, либо пакет Visual Studio Data Tools. Конечно, мне все равно пришлось выполнить перечисленные шаги после того, как я его загрузил.
Я создал собственный установочный пакет для установки некоторых шрифтов на клиентский компьютер и развернул его в папке предварительных условий в C:\Program Files (x86)\Microsoft SDKs\Windows\v7.0A\Bootstrapper\Packages\FontsInstaller . Все в порядке со ссылкой на него в качестве предварительного условия в Visual Studio 2010, и я могу без проблем опубликовать приложение.
С другой стороны, клиент получает ошибку во время проверки хэша:
Проверка хэша файла
Ошибка: программа установки обнаружила, что файл «C:\Users\RMORAN~1\AppData\Local\Temp\VSD4684.tmp\FontsInstaller\fontsinstaller.msi» либо изменился с момента первоначальной публикации, либо может быть поврежден.
Я пытался включить хеш и исключить его с помощью генератора манифеста Bootstrapper, и я всегда получаю один и тот же результат на клиенте. Файл немедленно удаляется (из соображений безопасности), как только он не проходит проверку хэша.
Теперь я нашел Отчет об ошибке Microsoft Connect, в котором говорится:
«У меня установлен пользовательский пакет загрузчика в качестве предварительного условия для моего приложения. Когда я собираю его в системе с установленной Visual Studio 2012, установка завершается со следующей ошибкой:
Программа установки обнаружила, что файл '. ' либо изменился с момента его первоначальной публикации, либо может быть поврежден.
Я строю в Visual Studio 2010 без изменений в пакете или проектах. Если Visual Studio 2012 не установлена, все работает должным образом».
Я попытался создать этот установщик на другой рабочей станции без установленного VS2012, и он прошел проверку хэша на клиенте (я столкнулся с проблемой подписи, но это другая история). Это действительно проблема с машиной сборки, имеющей VS2012, а не с клиентом, поскольку пакет, созданный на моей исходной рабочей станции, также не работает на машине, на которой нет VS2012.
Кто-нибудь еще сталкивался с этой проблемой, если да, то нашли ли вы обходной путь, кроме отсутствия установленного VS2012?
Та же проблема! после установки vs2012 мои пользовательские пакеты загрузчика не хотят устанавливаться с помощью clickonce. Вы решили?
3 ответа
Если он не может определить открытый ключ, он затем вычисляет хэш SHA256 файла и выполняет аналогичное сравнение со значением атрибута Hash , выдавая предупреждение, если они отличаются, и устанавливая значение Hash атрибут с вычисленным значением.
Вы можете подтвердить эти выводы, извлекая ресурс SETUPCFG из результирующего setup.exe ; это текстовая версия слияния файлов product.xml .
В любом случае, помните, как я сказал, что он вычисляет хэш SHA256 файлов, если не может найти открытый ключ? В документации для элемента
(Bootstrapper) говорится значение атрибута Hash должно быть хешем SHA1.
Таким образом, если проверка на основе хеша не работает в загрузчике установки, мы можем, по крайней мере, вместо этого использовать проверку с открытым ключом (на основе сертификата). Хорошей новостью является то, что генератор загрузчика автоматически начнет использовать этот механизм, если ему удастся извлечь открытый ключ сертификата из файла пакета. Плохая новость заключается в том, что это означает, что каждый файл пакета должен быть подписан с помощью signtool.exe и действительным сертификатом для подписи кода (не у всех может быть завалялся сертификат для подписи кода, хотя, если вы re делая click-once вы могли бы. ).
Хорошо, поэтому я установил все обновления Windows на свой компьютер win 7 и сделал манифест с тем же подписанным пакетом, и ошибка изменилась на WinVerifyTrust returned -2146762487 File not trusted Error: Setup has detected that the publisher of file
Да, подтверждено, что он работает только в системах, где я захожу в Memory Management Console и добавляю сертификат вручную.
@jaminator: Не похоже, что ваш сертификат является доверенным сертификатом для подписи кода. В подписанном файле: щелкните правой кнопкой мыши > Свойства > Цифровые подписи > Сведения > Просмотреть сертификат > Путь сертификации. Все ли доверено и исходит от широко распространенного доверенного корня?
Читайте также: