Помогите создать рабочий EXE файл приложения C# WPF
Помогите разобраться как собрать рабочий EXE файл который бы работал на другом ПК(не на том где создавался). В Visual Studio выбираю Release, отладка, начать отладку, потом с помощью Inno Setup Compiler (смотрел 3 инструкции) создаю установщик из EXE файла который находиться bin\Release и так же добавляю саму папку Release, когда последующие разы пробовал собрать добавлял еще дополнительно папку \packages, так как там есть файлы MaterialDesign, думал может поможет, но когда устанавливаю на другом ПК саму программу потом запустить не могу, а на основном пк после установки все хорошо запускается, подскажите, может в сборку еще нужно, что-то добавлять?
Ответы (1 шт):
Попробуйте обойтись без деплоев. Это некое "inno-setup" - это деплой, и это обычно сложно настраиваемые системы. Всё ваше напрограммированное(+ресурсы) поместите (запакуйте) в тот же зип-архив (рар-архив), и перенесите на сторонние компьютеры. Вы это всё перенесёте именно так, что будете уверены в том, что деплой на ваше напрограммированное(+ресурсы) - не влияет. Ещё имейте ввиду то, что анти-малварь относится к деплоям крайне "чувствительно", т.е. всё то что лежит в одном екзешнике и "распаковывается" из него в кучу всякого разного - потенциально рассматривается как набор "вирусни". Далее - всегда и повсеместно существует проблема с путями. Ваше ПО(+ресурсы) работает на определённых путях, но подавляюще часто при переносе куда либо - возникают проблемы с путями. Т.е. ваше ПО на стороннем компьютере может не видеть некоторые части себя. И кстати, все эти деплой-системы обычно и имеют массу проблем с путями. И как @EvgeniyZ написал - проверьте рантаймы.
П.С.: Позанудствую. Любая система должна быть инвариантной относительно любого окружения. Т.е. вообще то строго говоря - проверьте всё то что вы делаете НА ТОМ ЖЕ КОМПЬЮТЕРЕ. Соберите всё то что вы наделали в один пакет, и ставьте его в разные места. Хоть пятьдесят экземпляров ставьте - должно работать. Это первый этап проверки. Это когда оно должно работать "там же", но с немножко другими условиями.
П.П.С.: Похоже что внедрённый ресурс "отрабатывает" не так как положено. Такое бывает когда он (ресурс) вызывается на некоей обычной конфигурации, а на другой - уже нет. Просмотрите все те места, где у вас как либо идёт вызов ресурсов, и постарайтесь всё это вынести во внешние ресурсы, т.е. в файлы. Существует проблема внутреннего хранения ресурсов в сборках, и обращение к этим ресурсам далеко не тривиальное. Сразу и сходу вы в этом не разберётесь. А значит сделайте проще - все ресурсы сделайте внешними (т.е. все ресурсы - это файлы), т.е. не внедряйте ресурсы в сборки.


