Ограниченная версия Installshield запрашивает файлы .Net framework, а программа не работает без Visual Studio

У меня есть решение в выпуске сообщества VS 2013, и я недавно добавил проект установки с ограниченным выпуском Installshield.

Когда я пересобираю решение (в режиме выпуска x64), проект installshield предупреждает меня о следующих файлах:

Warning -6245: One or more of the project's components contain .NET properties that require the .NET Framework.  It is recommended that the release include the .NET Framework. 16  ISEXP : warning : -6245: One or more of the project's components contain .NET properties that require the .NET Framework.  It is recommended that the release include the .NET Framework.

Warning -6248: Could not find dependent file Microsoft.ServiceBus, or one of its dependencies of component PLATOS.Primary_output    18  ISEXP : warning : -6248: Could not find dependent file Microsoft.ServiceBus, or one of its dependencies of component PLATOS.Primary_output

Warning -6248: Could not find dependent file Microsoft.VisualStudio.CodeMarkers.dll, or one of its dependencies of component PLATOS.Primary_output  19  ISEXP : warning : -6248: Could not find dependent file Microsoft.VisualStudio.CodeMarkers.dll, or one of its dependencies of component PLATOS.Primary_output

Warning -6248: Could not find dependent file Newtonsoft.Json, or one of its dependencies of component PLATOS.Primary_output 20  ISEXP : warning : -6248: Could not find dependent file Newtonsoft.Json, or one of its dependencies of component PLATOS.Primary_output

Warning -6248: Could not find dependent file System.Data.SQLite, or one of its dependencies of component PLATOS.Primary_output  21  ISEXP : warning : -6248: Could not find dependent file System.Data.SQLite, or one of its dependencies of component PLATOS.Primary_output

Warning -6248: Could not find dependent file System.Net.Http.Formatting, or one of its dependencies of component PLATOS.Primary_output  22  ISEXP : warning : -6248: Could not find dependent file System.Net.Http.Formatting, or one of its dependencies of component PLATOS.Primary_output

Warning -6248: Could not find dependent file System.Web.Http, or one of its dependencies of component PLATOS.Primary_output 23  ISEXP : warning : -6248: Could not find dependent file System.Web.Http, or one of its dependencies of component PLATOS.Primary_output

В мастере установки Installshield я выбрал, что программа установки ищет .Net 4.5. поэтому я не понимаю этих предупреждений.

Когда я устанавливаю программное обеспечение с настройкой на компьютер, на котором не установлена ​​Visual Studio (но установлена ​​​​последняя версия Net framework (4.5.2)), программа открывается (я вижу это в диспетчере задач) и закрывается без показа графического интерфейса. Более того, когда я просто копирую папку \bin\release на компьютер без Visual Studio, программа все равно не запускается.

Я предполагаю, что программе каким-то образом требуются файлы, о которых меня предупреждает installshield, но разве эти файлы не должны быть уже установлены .Net 4.5?

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

Любая помощь приветствуется.


person Santi Peñate-Vera    schedule 04.06.2015    source источник
comment
Является ли основной проект проектом WebForms; МВК; и т.д...?   -  person johnjps111    schedule 08.06.2015
comment
PS, если вы ранее использовали установщик Visual Studio, он по-прежнему доступен, но его необходимо установить отдельно: visualstudiogallery.msdn.microsoft.com/; кто знает - может быть, это решило бы проблему совершенно по-другому.   -  person johnjps111    schedule 08.06.2015
comment
Привет, я изменил установщик на установщик Visual Studio, и проблема не устранена. только теперь он выдает исключение файл не найден.   -  person Santi Peñate-Vera    schedule 10.06.2015
comment
Вероятно, оффтоп: У нас было несколько проблем с Installshield LE, и мы перешли на WiX.   -  person gsharp    schedule 15.06.2015


Ответы (3)


Ваша программа, похоже, ссылается на сборку Microsoft.VisualStudio.CodeMarkers, которая, как следует из ее названия, распространяется не в рамках .Net, а вместе с Visual Studio.

В вашем решении вы можете проверить ссылки вашего проекта, открыв папку «Ссылки». Удалите Microsoft.VisualStudio.CodeMarkers, создайте свой проект, посмотрите, что сломается. Щелкнув правой кнопкой мыши по этой ссылке, выберите «Свойства», а на панели свойств в поле «Локальная копия» выберите «Истина». Сделайте то же самое для Microsoft.ServiceBus.

Кроме того, убедитесь, что ваши пакеты nuget (например, Newtonsoft.Json) включены для распространения в программу установки InstallShield.

person thomasb    schedule 08.06.2015
comment
На той же упомянутой вкладке ссылок есть кнопка для отображения неиспользуемых ссылок и их удаления; это тоже хорошая практика. - person johnjps111; 08.06.2015
comment
Нет, нет (или я не нашел его с VS2013). Я почти уверен, что это функция, добавленная надстройкой, такой как Resharper или JustCode. - person thomasb; 08.06.2015
comment
Я дважды проверил, и «Microsoft.VisualStudio.CodeMarkers» отсутствует в ссылках на приложения, но, возможно, он есть в некоторых библиотеках, которые я использовал для него. Где я могу увидеть полное дерево зависимостей? - person Santi Peñate-Vera; 08.06.2015
comment
Извините, другое место: чтобы удалить неиспользуемые ссылки: щелкните правой кнопкой мыши проект и выберите свойства... откроется огромный диалог с несколькими вкладками; выберите вкладку «Ссылки»... здесь вы найдете все ссылки на проект и сможете удалить все неиспользуемые ссылки. - person johnjps111; 08.06.2015
comment
Я использую сообщество VS 2013, и в свойствах С# нет вкладки ссылок, только ссылочные пути, и она пуста для приложения. - person Santi Peñate-Vera; 08.06.2015

Пожалуйста, опубликуйте свой сценарий установки, и я помогу вам. Нам нужно знать, было ли это решение когда-либо успешно создано на ЛЮБОЙ машине, прежде чем мы устраним неполадки, связанные с повреждением вашего installshield LE, созданием неправильных файлов, вызовом неправильных dll или нестабильностью где-либо.

Если решение никогда не покидало эту систему и в какой-то момент было успешно собрано, то у вас могут быть законные файлы в вашей корзине, но временная папка в вашей папке MS .Net Framework, содержащая неправильные файлы (но давайте пока не будем туда заходить). ).

Вы упомянули, что уже находитесь в релизе, поэтому несколько вопросов:

(1) Было ли это решение взято с другого компьютера с установленным Windows Visual Studio SDK?

(2) Было ли это решение изначально создано с помощью построителя командной строки?

(3) Если решение было перемещено, были ли какие-либо другие пакеты, которые жаловались при восстановлении, но не были в списке ошибок выше? (Возможно, это отображалось на выходе только для примера).

(4) Когда вы находитесь в пользовательском интерфейсе Installshield, видите ли вы какие-либо отсутствующие зависимости?

Убедитесь, что вы прошли этап восстановления пакетов при загрузке решения.

Я рекомендую установить Visual Studio SDK, чтобы увидеть, получите ли вы больше подсказок или сузите проблему.

Чтобы уточнить, проверка на наличие ошибок восстановленного пакета И установка SDK являются важными шагами по устранению неполадок, основанными на том, что вы сказали нам до сих пор.

Следующим логическим шагом является подтверждение зависимостей от сканирования во время сборки и / или правильных ссылок на любые восстановленные пакеты, чтобы вы могли сузить этот длинный список жалующихся пакетов (что, ИМХО, просто запутывает дело).

Я почти ненавижу упоминать об этом, потому что это скорее обходной путь, зависящий от того, была ли у вас когда-либо успешная сборка в этой системе, но если станет хуже, вы можете использовать пользовательский интерфейс Installshield, чтобы добавить последнюю DLL в ваш obj\Release. папку и построить заново.

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

person miniscule    schedule 15.06.2015
comment
Привет, спасибо за ответ. У меня было несколько успешных сборок (на самом деле сотни), и я распространял программное обеспечение среди коллег, использующих его, но при условии, что они установили VS, иначе оно не будет работать. Что касается других вопросов, я разработал решение, используя VS 2012 и более позднюю версию сообщества 2013 года, часто совместно с другими коллегами, использующими SVN. - person Santi Peñate-Vera; 16.06.2015
comment
Хорошо, тогда вам следует создать точку восстановления, установить Visual Studio SDK, перезапустить, открыть решение и проверить, не исчезнут ли какие-либо ошибки после восстановления любого пакета. НЕ изменяйте никакие настройки сборки и не отключайте уведомления о сборке и т. д. ЗАТЕМ очистите временную папку в папке MS .Net Framework. Затем перестроить. Installshield печально известен тем, что находит старые библиотеки DLL, и вы не хотите получать зараженную сборку. Дайте мне знать, как это работает, потому что, если станет хуже, вы можете попытаться сослаться на последнюю известную исправную DLL из папки obj\Release в пользовательском интерфейсе Installshield позже. - person miniscule; 18.06.2015
comment
Просто чтобы уточнить, мы идем по этому пути устранения неполадок с установкой Visual Studio SDK в первую очередь, потому что мы пытаемся сузить это логически. Попытка обходного пути со ссылкой на последнюю исправную DLL через папку obj\Release является последним средством, поэтому нам нужно сначала сосредоточиться на том, что показывает пользовательский интерфейс Installshield в разделе «Зависимости от сканирования при сборке» (на случай, если у вас возникнут какие-либо новые ошибки). Мы не хотим, чтобы ваша сборка имела какие-либо незавершенные концы, потому что вы не хотите оказаться в той же лодке позже, если вам нужно будет импортировать в более позднюю версию Visual Studio. - person miniscule; 18.06.2015
comment
Привет, я переустановил SDK 7, перезагрузился, и ошибка не устранена. Нажав на Зависимости от сканирования при сборке, я получаю список зависимостей, из которых файлы .dll, указанные мной вверху, не найдены, даже когда я добавляю эти файлы DLL вручную в установку. - person Santi Peñate-Vera; 23.06.2015
comment
Если вы не получили никаких новых ошибок сборки (акцент на новые), то, к сожалению, пришло время обратиться к последней известной исправной DLL из папки obj\Release в пользовательском интерфейсе Installshield, чтобы посмотреть, будет ли она работать снова. Извините, ребята из Installshield, похоже, не могут собраться вместе и поддержать кого-то, кто является надежным пользователем, каким вы, очевидно, являетесь. Хотел бы я помочь тебе и дальше, но это все, что я умею делать, мой друг. - person miniscule; 26.06.2015
comment
Спасибо, в последнее время я пытался установить все пакеты, которые Installshield заявил как отсутствующие в репозитории NuGet, и они, кажется, распознаются Installshield, однако я еще не завершил этот процесс. Я отчитаюсь, если я заставлю это работать. - person Santi Peñate-Vera; 30.06.2015
comment
Да, дайте нам знать -- вы можете получить больше информации и/или новую ошибку -- -- Я не думаю, что ваш случай является типичным. Были ли жалобы на что-либо еще необычное во время других ваших сборок после установки пакета SDK для Visual Studio? - person miniscule; 01.07.2015
comment
Нет, на самом деле после переустановки SDK у меня были точно такие же ошибки. - person Santi Peñate-Vera; 01.07.2015

Ну вот спустя очень долгое время я нашел проблему.

Во-первых, чтобы быть уверенным, установите все зависимости с помощью диспетчера NuGet. (Когда возможно)

Затем, как и в моем случае, у меня был C++, завернутый в C++CLI, и я использую VS 2013, установите Распространяемые пакеты Visual C++ для Visual Studio 2013 вручную.

Это заставило программу правильно выполняться на только что отформатированной Windows 7.

person Santi Peñate-Vera    schedule 21.07.2015