Найкращий спосіб розгортання програми Visual Studio, яка може працювати без встановлення


80

Я написав досить просту програму на C # /. NET і не можу зрозуміти хорошого способу її публікації. Це свого роду «інструмент», який користувачі запускають лише один раз або запускають кожні кілька місяців. Через це, я сподіваюся, що є спосіб, я міг би розгорнути його там, де для його запуску не знадобиться установка (його можна просто запустити, двічі клацнувши файл EXE відразу після завантаження).

Однак йому все одно потрібно (якось) включити правильну версію .NET, бібліотеки тощо, щоб він працював правильно. Я знаю, що це включено при використанні ClickOnce, але це все одно встановлює програму на комп'ютер користувача.

Чи можна це зробити?

РЕДАГУВАТИ - \ bin \ Налагодження

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), або з меню Build, або з властивостей проекту → Опублікувати . Це створить програму встановлення для програми 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.. спасибі сер, за 2-й пункт у вашій відповіді :) ..
Мохаммед Суфіан

3
Це нічим не відрізняється від простого створення проекту та отримання файлів із папки bin (Налагодження чи Випуск). Запуск майстра публікації для створення невикористаного інсталятора просто змушує проект знову будувати себе, так само, як натискати кнопку "Створити". Коротшою відповіддю було б просто переконатися, що проект побудований, а потім перейти до папки bin проекту та скопіювати файли (або заархівувати їх для зручного копіювання) до місця, з якого ви хочете запустити програму. Ви все ще повинні переконатися, що на машині користувача встановлена ​​правильна версія .Net. Він просто повинен відповідати версії, у якій вбудовано вашу програму.
Джефф Бленман,

2

Спочатку потрібно опублікувати файл:

  1. BUILD -> PUBLISH або, клацнувши правою кнопкою миші проект у Провіднику рішень -> властивості -> опублікувати або вибрати проект у Провіднику рішень та натиснути Alt+ Enter ПРИМІТКА: якщо ви використовуєте Visual Studio 2013, тоді у властивостях вам потрібно перейти до BUILD, а потім вам потрібно вимкніть визначення константи DEBUG та константу TRACE, і ви готові до роботи. Представництво

  2. Збережіть файл у певній папці. Знайдіть створені файли (EXE-файл і файли .config, .manifest та .application, а також будь-які DLL-файли тощо) - усі вони знаходяться в одній папці і зазвичай в bin\Debugпапці під файлом проекту (.csproj ). У Visual Studio вони знаходяться в папці Файли програм, а всередині вам просто потрібні файли .exe та dll. (Ви повинні видалити ClickOnce та інші файли, а потім зробити цю папку ZIP-файлом і розповсюдити його.)

ПРИМІТКА: Програма ClickOnce дійсно встановлює проект до системи, але вона має одну перевагу. Тут НЕ потрібні адміністративні привілеї для запуску (якщо ваша програма відповідає звичайним правилам, які папки використовувати для даних програми тощо).


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 тим, хто просить її;) скажіть, яку частину ви не зрозуміли? Я фактично зробив робочий додаток за допомогою свого методу після невеликих досліджень. Я користувався візуальною студією 2013
abe312,

1
Я не бачу нічого, що називається "Опублікувати" у VS2015
UuDdLrLrSs

1
І в Visual Studio 2008, і в Visual Studio 2017 є "Опублікувати <назва проекту>" в меню "Збірка" (можливо, це було пропущено в Studio 2015?). У будь-якому випадку це також можна зробити за допомогою властивостей проекту, "Опублікувати" → "Опублікувати зараз" (як на скріншоті тут).
Пітер Мортенсен,
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.