Какой язык не требует внешней среды выполнения и может работать как сервис (без графического интерфейса) - PullRequest
0 голосов
/ 20 февраля 2011

Я давний веб-разработчик. (Имея небольшой опыт использования AutoIT и время от времени возиться с Android.)

Теперь попросили написать относительно простой скрипт для распространения.

Требования:

  • Нет графического интерфейса. проверяет / устанавливает некоторые ключи реестра в Win, папка dev в Max / * nix.
  • Он должен быть в состоянии работать как служба.
  • Это НЕ должно требовать среды выполнения. У клиента был плохой опыт работы с Java и .NET, и он боится полагаться на AIR (что было бы моей первой мыслью). Суть проблемы в том, что люди не хотят или не могут загрузить эти среды, но это не подлежит обсуждению, независимо от того, логично это или нет.
  • Меньше, когда дело доходит до выхода.

Существует ли нужный мне язык?

Кроме того, я понимаю, что это должно дополнять какую-то другую программу, которая имеет графический интерфейс и которая уже существует в C ++. Это не обязательно должно быть на одном языке.

Я готов выучить новый язык для этой цели, если потребуется.
Если идеального языка не существует, можно ли написать программное обеспечение на Python, а затем каким-то образом экспортировать для удовлетворения этих требований (я был бы счастлив изучить Python, чем С, если это возможно). Должен ли я использовать AutoIT и каким-то образом заставить установщик запустить exe как службу? (Не нашел ничего, что имело бы смысл для моего мозга новичка во время поиска в Google.)

Кроме того, любые советы или советы от опытного разработчика будут оценены.


РЕДАКТИРОВАТЬ: «Нет среды выполнения (RE)» должен был исключить зависимость 15+ МБ от сценария из 15 строк.
Я имел в виду язык, который будет работать на большинстве компьютеров как есть.

Я понимаю, что для работы на каждом языке должен быть установлен язык, который представляет собой RE, кроме операционной системы, на которой установлен этот RE.
Я также понимаю стон, когда кто-то устанавливает приложение размером 30 КБ, и мне говорят, что компьютер должен загрузить зависимость размером 30 МБ (.NET, JAVA, AIR ..)
И метод Pye2exe по включению 10 МБ Python в файл не лучше.

Ответы [ 4 ]

1 голос
/ 20 февраля 2011

Как отмечают другие, все программы зависят от среды выполнения, являющейся, по крайней мере, ОС. Однако я понимаю, что добавление дополнительного кода в среду выполнения может вызвать проблемы, если пользователи не обновляют свои машины должным образом.

Всегда существует риск того, что ваш код будет использовать то, что пользователь не обновил, например, у них Windows XP без пакета обновления, и вам требуется что-то более новое.

Я думаю, что есть несколько возможных решений

1) как сказал @Michael Aaron Safyan, используйте пакетную команду - я думаю, вы сможете сделать это в Unix, но пакет Windows может быть слишком ограничивающим для ваших требований

2) Напишите приложение на C / C ++ со статическими библиотеками, тогда при установке должен быть только тот код, который у вас есть, и он должен запускаться. Вам нужно будет узнать, как настроить службу, но я думаю, что установщик Windows или в OSX это сделает скрипт оболочки. (Существуют другие языки, которые можно скомпилировать в один исполняемый файл)

3) Для Unix python и perl обычно устанавливаются в / usr / bin, но могут быть старой версией - так что это возможно

4) предоставляет установщик, который устанавливает ваше приложение и среду выполнения. Это выполнимо с Windows и .Net Microsoft поставляет затем .Net runtime в виде распространяемого пакета , python может быть встроен в простой Windows, исполняемый с использованием pyexe .

0 голосов
/ 13 июля 2018

Я думаю, что язык Go (кросс) компилируется в один статический двоичный файл без зависимости во время выполнения.

2018 приветствует вас.=)

0 голосов
/ 24 февраля 2011

Все вышеперечисленное можно установить всего несколькимифайлы.

В наши дни в Windows достаточно много встроенных скриптов (Scripting host, PowerShell).

Вопрос не в том, «какой язык программирования может это делать», а в том, что«какие реализации есть».У вас полно вариантов - просто попробуйте поискать различные варианты сценариев, доступные вам.

0 голосов
/ 20 февраля 2011

Если вы не пишете автономный двоичный файл (тот, который статически связывает свой собственный libc и может работать без ОС), у вас будет техническая зависимость во время выполнения (например, от различных библиотек ОС, таких как libc.so в Linux, libSystem.dylib в Mac OS X и msvcrt.dll в Windows).Кто бы ни попросил вас сделать это, имеет необоснованный страх перед зависимостями времени выполнения.Весь смысл ОС состоит в том, чтобы обеспечить среду выполнения с уже реализованной общей функциональностью, чтобы сделать жизнь программистов намного проще.Чтобы действительно не иметь зависимостей во время выполнения, вы бы в значительной степени вернулись к каменному веку.Нет причины, по которой вы не можете использовать C ++, Java, Python или почти любой другой стандартный язык программирования для выполнения своей задачи.Реально, ваше решение в Windows, Linux и Mac OS X может отличаться.Если задача достаточно проста, вы даже сможете использовать скрипт BASH в UNIX (Mac OS X и Linux) и простой скрипт BATCH в Windows.Обратите внимание, что они имеют зависимости во время выполнения (интерпретаторы BASH и BATCH соответственно), но, опять же, эти опасения совершенно необоснованны и совершенно нелепы.Вероятно, было бы более полезно описать конкретную задачу, а не как выполнить неопределенную задачу с абсурдными ограничениями.

...