Лучший способ развернуть приложение Visual Studio, которое может работать без установки

80

Я написал довольно простое приложение на C # /. NET и не могу придумать, как его опубликовать. Это своего рода «инструмент», который пользователи запускают только один раз или каждые несколько месяцев. Из-за этого я надеюсь, что есть способ развернуть его там, где его не нужно устанавливать для запуска (его можно просто запустить, дважды щелкнув EXE-файл сразу после загрузки).

Однако ему по-прежнему необходимо (каким-то образом) включить правильную версию .NET, библиотек и т.д., чтобы он работал правильно. Я знаю, что это включено при использовании ClickOnce, но при этом приложение все равно устанавливается на компьютер пользователя.

Как это можно сделать?

ИЗМЕНИТЬ - \ bin \ Debug

myAppName.application
myAppName.exe
myAppName.exe.config
myAppName.exe.manifest
myAppName.pdb
myAppName.vshost.application
myAppName.vshost.exe
myAppName.vshost.exe.config
myAppName.vshost.exe.manifest
extraLibrary.dll

а также две папки

app.publish
Resources
Уилсон
источник

Ответы:

106

Это возможно и обманчиво просто:

  1. «Опубликуйте» приложение (скажем, в какую-нибудь папку на диске C) либо из меню « Сборка», либо из свойств проекта → « Опубликовать» . Это создаст установщик для приложения ClickOnce .
  2. Но вместо использования созданного установщика найдите созданные файлы (EXE-файл и файлы .config , .manifest и .application , а также любые файлы DLL и т. Д.) - все они находятся в одной папке и обычно в папке bin\DebugПапка под файлом проекта ( .csproj ).
  3. Заархивируйте эту папку (оставьте все файлы * .vhost. * И app.publishпапку (они не нужны) и файлы .pdb, если вы не предусмотрели отладку непосредственно в системе вашего пользователя (например, с помощью удаленного управления)) и предоставьте ее пользователям.

Дополнительным преимуществом является то, что в качестве приложения ClickOnce для запуска ему не требуются административные привилегии (если ваше приложение следует обычным рекомендациям по выбору папок для данных приложения и т.

Что касается .NET, вы можете проверить минимально необходимую версию .NET, установленную (или вообще) в приложении (у большинства пользователей она уже установлена) и отобразить диалоговое окно со ссылкой на страницу загрузки на веб-сайте Microsoft. (или укажите на одну из ваших страниц, которая может перенаправлять на страницу Microsoft - это сделает ее более надежной, если URL-адрес Microsoft изменится). Поскольку это небольшая утилита, вы можете нацелить .NET 2.0, чтобы уменьшить вероятность того, что пользователю придется установить .NET.

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

Питер Мортенсен
источник
2
Спасибо, работает как шарм! Мне пришлось использовать кнопку «Файлы приложения ...» в свойствах публикации моего проекта, чтобы принудительно включить все библиотеки DLL, на которые есть ссылки, поскольку по умолчанию все ссылки не включены.
JulienVan
43
Из любопытства, чем это отличается от копирования файлов прямо из \ bin \ Release?
Эрик Эскилдсен
10
Я также хотел бы знать, чем это отличается от копирования файлов прямо из \ bin \ Release?
CoDeGiRl
1
действительно отличный ответ, я скопировал все перечисленные файлы из Application Filesвкладки публикации и .application, .manifest, .config, .exe and other dlls.. спасибо сэр за второй пункт в вашем ответе :) ..
Мохаммед Суфиан
3
Это ничем не отличается от простого создания проекта и получения файлов из папки bin (отладка или выпуск). Запуск мастера публикации для создания неиспользуемого установщика просто снова создает сам проект, как при нажатии кнопки «Сборка». Более короткий ответ - просто убедиться, что проект строится, затем перейти в папку bin проекта и скопировать файлы (или заархивировать их для легкого копирования) в то место, откуда вы хотите запустить программу. Вам все равно нужно убедиться, что на компьютере пользователя установлена ​​правильная версия .Net. Просто она должна соответствовать версии, в которой встроено ваше приложение.
Джефф Бленман, 03
2

Для начала вам необходимо опубликовать файл:

  1. СБОРКА -> ПУБЛИКАЦИЯ или щелкнув правой кнопкой мыши проект в Обозревателе решений -> свойства -> опубликовать или выбрать проект в Обозревателе решений и нажать Alt+ Enter ПРИМЕЧАНИЕ: если вы используете Visual Studio 2013, то в свойствах вы должны перейти в СОЗДАТЬ, а затем вам нужно отключите определение константы DEBUG и определите константу TRACE, и все готово. Представление

  2. Сохраните файл в определенной папке. Найдите созданные файлы (EXE-файл и файлы .config, .manifest и .application, а также любые файлы DLL и т. Д.) - все они находятся в одной папке и обычно в bin\Debugпапке под файлом проекта (.csproj ). В Visual Studio они находятся в папке Application Files, а внутри вам нужны только файлы .exe и dll. (Вы должны удалить ClickOnce и другие файлы, а затем сделать эту папку zip-файлом и распространить его.)

ПРИМЕЧАНИЕ. Приложение ClickOnce устанавливает проект в систему, но имеет одно преимущество. Здесь вам НЕ требуются административные привилегии для запуска (если ваше приложение следует обычным рекомендациям по выбору папок для данных приложения и т. Д.).

abe312
источник
2
Зачем вам нужно устанавливать для DEBUG и TRACE определенные значения?
Питер Мортенсен
У вас может быть включен условный атрибут Trace или Debug для сборки, либо оба, либо ни один из них. Таким образом, существует четыре типа сборки: отладка, трассировка, оба или ни один. Некоторые сборки выпуска для производственного развертывания могут не содержать ни того, ни другого; большинство отладочных сборок содержат оба. .................................................. ................................. msdn.microsoft.com/en-us/library/aa983575(v=vs .71) .aspx ............................................. .................................................. ..... msdn.microsoft.com/en-IN/library/ms164714.aspx
abe312
1
На stackoverflow всегда будет помощь тем, кто ее попросит;) скажите, в какой части вы не поняли? Я действительно создал рабочее приложение с помощью своего метода после небольшого исследования. Я использовал Visual Studio 2013
abe312
1
Я не вижу ничего под названием «Опубликовать» в VS2015
UuDdLrLrSs 01
1
И Visual Studio 2008, и Visual Studio 2017 имеют пункт «Опубликовать <имя проекта>» в меню «Сборка» (возможно, он был пропущен в Studio 2015?). В любом случае, это также можно сделать в свойствах проекта «Опубликовать» → «Опубликовать сейчас» (как на скриншоте здесь).
Питер Мортенсен