Где установить небольшие программы без установщиков на Windows?


35

На платформе Windows большинство крупных приложений поставляются со своим собственным установщиком, который настраивает папки C:\Program Files, возможно, в некоторых других местах, и, возможно, добавляет некоторые ключи реестра и т. Д.

Но есть все еще довольно много инструментов, которые состоят только из .exeили, может быть, также READMEи из .dllили двух.

Как мне установить такие инструменты? Прямо в C:\Program Files? Все в одной подпапке под C:\Program Files? Где-то под C:\Users\Me? Где-то совсем другое?

Или, может быть, другие подходы к инструментам только .exeс теми, у которых есть и другие файлы, или, может быть, только те, с которыми .dllнужно обращаться по-разному ...

Есть ли стандартный принятый способ сделать это? «Лучшая практика»? Если ответ зависит от версии Windows, я использую Windows 7.

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

Я пытался вручную создать новые подпапки в C:\Program Files. На самом деле я думал, что сделал это раньше, но Windows выдает диалоговое окно « Доступ к целевой папке запрещен» . Это заставило меня подумать дважды, а не слепо нажимать « Продолжить» .

Доступ к папке назначения запрещен

Исходя из предположения о том, что за эти годы много раз у меня возникали лучшие умы, чем я, я хотел бы спросить сообщество, не пришла ли какая-то «лучшая практика».


3
С какой точки зрения вы задаете этот вопрос? В частности, это приложение, которое вы пишете, или вы пытаетесь установить чужие приложения?
Гарри Джонстон

2
@HarryJohnston: это для установки приложений других людей. Я скачал несколько программ, предназначенных для просмотра или редактирования очень больших файлов на днях, и у пары не было установщиков. Но то же самое относится и к большинству инструментов командной строки в Windows, из которых у меня есть несколько.
hippietrail

@UltraDEVV: Я хочу знать, рассматривали ли другие эту проблему и решили ли "лучшие практики". Я хочу знать, какие решения существуют, прежде чем решить, устанавливать ли их в C:\Program Filesдругом месте или где-то еще, и я предоставляю информацию о потенциальном барьере для C:\Program Filesтого, чтобы быть очевидным решением.
Hippietrail

Так что читайте мой! superuser.com/a/815831/354352
UltraDEVV

@UltraDEVV: Я уже прочитал твои, и я уже проголосовал за это. Здорово видеть этот спящий вопрос, возвращающийся к жизни после трех с половиной лет отдыха!
hippietrail

Ответы:


25

использование C:\Tools

или C:\Users\<user>\Tools
 

Я использую много небольших программ без установщика и рекомендую следующее:

  • Сохраните их всех в C:\Tools
  • Если программа состоит из одного файла, поместите его прямо под C:\Tools
  • Если программа состоит из нескольких файлов, поместите ее в C:\Tools\ProgramName
  • У инструментов SysInternals есть особая категория, C:\Tools\_SysInternalsпотому что их много

Я просто перехожу C:\Toolsс машины на машину при миграции, работает как шарм.

Практический образец (сокращенный листинг):

C: \ Tools \ AutoExec-elevated.bat
C: \ Tools \ cleanup.bat
C: \ Tools \ BabelMap.exe
C: \ Tools \ netmon.exe
C: \ Tools \ notifu.exe
C: \ Tools \ putty.exe
C: \ Tools \ UDPixel.exe
C: \ Tools \ battery.vbs

C: \ Tools \ 3dclip-1.5.1 \
C: \ Tools \ AlternateStreamView \
C: \ Tools \ блендера-2,71-Windows64 \
C: \ Tools \ Notepad ++ \
C: \ Tools \ QueryExpress \
C: \ Tools \ winscp555 \
C: \ Tools \ Xinorbis \

C: \ Tools \ _Sysinternals \ AccessChk \
C: \ Tools \ _Sysinternals \ Autoruns \
C: \ Tools \ _Sysinternals \ depends22_x64 \
C: \ Tools \ _Sysinternals \ depends22_x86 \
C: \ Tools \ _Sysinternals \ LogonSessions \

Я надеюсь, что это дает представление.

РЕДАКТИРОВАТЬ: Расширенная информация

Я полагаю, что при установке в вашем вопросе, как я должен установить такие инструменты? вы на самом деле имеете в виду ручную настройку, что-то вроде копирования файлов.

Правило большого пальца. Используйте созданные вручную папки для файлов, сохраняемых вручную. Позвольте системным папкам использоваться (установочными) процессами, которые вы не контролируете Вы сразу получите возможность узнать, какой контент является «вашим» (и вы можете свободно копировать его), а каким приложением управляет установщик.

Поэтому при установке вручную (путем копирования) держитесь подальше от

  • C:\Program Files - найденные здесь программы не могут быть просто перенесены, их необходимо переустановить (дает хороший совет по миграции)
  • C:\Program Files (x86) - как указано выше, но в 64-битных системах сюда идут 32-битные программы (может дать подсказку, чтобы определить, является ли конкретное приложение 32-битным или 64-битным)
  • C:\ProgramData- найденные здесь хранилища приложений показывают, что эти программы хранят некоторые свои данные по-своему. Но вы спрашивали о размещении ваших программ в Data? Не хорошая идея.
  • C:\Users\Steven\AppData- опять же, помещать программы в Data не очень хорошая идея. Если вы спросили о данных, то об этом пути можно написать несколько интересных вещей. Но для программ просто «нет». :)

Возможный путь

  • C:\Users\Steven- может быть вашим альтернативным пользователем root, если это общий компьютер, и вы хотите сохранить его в чистоте, поэтому вы решили не создавать глобальные каталоги. Вы можете рассмотреть C:\Users\Steven\Toolsдля своих программ или даже C:\Users\Steven\Desktop\Toolsесли вы хотите использовать удобный доступ к папке рабочего стола, доступный через ярлык из многих мест в Windows. Но лучше может быть первый, и вы все равно можете поместить ярлык для этой папки на рабочий стол или при необходимости.

Редактировать: Дополнительная полезная подсказка:

Если вы хотите, чтобы некоторые из ваших небольших программ распознавались в меню « Пуск» Windows 10 (для пошагового поиска по их именам или мгновенного запуска с повышенными правами с помощью Ctrl+ Shift+ Enter), добавьте туда их ярлыки и запустите их один раз . (Тогда вы можете удалить их.)


Это звучит хорошо, но подтверждается ли это документацией по передовому опыту или что-то в этом роде? Если это так, это действительно улучшит ответ.

@DoritoStyle - вам может потребоваться проверить текущую документацию по лучшим практикам в вашей корпорации. Если вы знаете о более общей документации по лучшим практикам, пожалуйста, дайте мне знать, и я проверю это.
miroxlav

1
Я использую "C: \ Utility", но в остальном использую этот же подход!
Джон Шнайдер

Будет ли работать что-то другое, а не «Инструменты», так же хорошо: если бы я использовал что-то вроде C:\Otherили C:\Users\<user>\Other, это считалось бы таким же «законным», как «Инструменты»?
Хенрик

@Henrik - поскольку нет стандарта, используйте то, что соответствует вашим чувствам и достаточно ясно. Например, я пробовал C: \ Progs (имя вызывает небольшие программы без установщика), но в конце концов оно показалось мне неинтуитивным, поэтому я вернул имя обратно в Tools.
Miroxlav

11

Насколько я знаю, универсального подхода нет.

Размещение ваших приложений C:\Program Filesявляется довольно стандартным способом. И вы получите защиту доступа : обычные (и не повышенные) пользователи не могут писать C:\Program Files. Таким образом, вы не можете случайно удалить, перезаписать такие файлы; и они лучше защищены от вирусов.

Вот почему вы получаете предупреждение - запрос на повышение прав - при попытке создать папку в C:\Program Files.

Следовательно, C:\Program Filesэто самое безопасное место для исполняемых файлов.

Однако он не подходит для (переносимых) приложений, которые хранят свою конфигурацию рядом с тем, .exeчто они не смогут сохранить изменения конфигурации.


C:\ProgramDataпредназначен для хранения данных приложения, используемых пользователями. По умолчанию все пользователи могут создавать файлы и папки здесь, но только пользователь, создавший их, может изменять файлы.

Эта папка может быть легко использована для общих приложений / инструментов. В то же время я никогда не видел приложение в этой папке.


Если вы разместите приложения в своем профиле пользователя C:\Users\<username>, другие пользователи системы не будут иметь к нему доступа. У вас есть все разрешения для вашего профиля, поэтому вы не получите никакого предупреждения безопасности. Вот почему Chrome устанавливается в профиль пользователя: он может легко обновляться без запроса повышения прав.

В режиме пользователя, установщик Windows пакеты, .msiфайлы, установить в C:Users\<username>\AppData\Microsoft\Installer\<ProductId>. Таким образом, это вполне стандартно, чтобы не публиковать приложения в профиле пользователя.

utilsВ моем профиле пользователя есть папка с приложениями, которые полезны только для меня. Эта папка добавлена ​​в PATHпеременную среды моего пользователя для легкого доступа.

Для общих приложений я использую C:\toolsили аналогичный каталог, возможно, на другом диске. Это добавлено к глобальной PATHпеременной.


7

Я согласен с уже даными ответами на какой-то момент. Но для действительно небольших программ (утилит) я склонен помещать их в папку bin (в моем случае E: \ bin). Эти программы обычно представляют собой один исполняемый файл или мои собственные скрипты на Python. Я добавляю эту папку в переменную PATH, чтобы использовать эту программу из командной строки (которую я использую довольно часто).


Я также подумал о создании универсального C:\Program Files\binдля этих типов инструментов и утилит. Спасибо за ответ.
hippietrail

5

Насколько я знаю, нет лучших практик. Вы сами решаете, как вы хотите с этим справиться.

Я склонен следовать тому же стандарту, что и любое приложение с установщиком. Если это исполняемый файл или библиотеку , я бы поместить в любом в \Program Files\случае это 64Bit и Program Files (x86)\если это 32Bit.

Файлы данных я склонен хранить в своих Usersпапках, так как они, как правило, специфичны для пользователя.

Существуют также приложения, такие как Google Chrome и Click-Once Applications, которые развертываются Users\AppData\, но обычно они не доступны для нескольких профилей.

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

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


4
Я рекомендую не устанавливать приложения вручную в папке Program Files, поскольку приложения без установщиков часто либо устарели, либо портами из других операционных систем, поэтому они не всегда хорошо справляются с пространством в пути. YMMV.
Гарри Джонстон

3
Я не рекомендую устанавливать что-либо вручную %ProgramFiles%, но по другой причине: приложения без инсталляторов часто переносимы, и у вас нет разрешения на запись
kinokijuf

4

Если вы хотите стандартизировать эти приложения, то я бы предложил использовать стандарты пакетов Chocolatey . Это хорошо по многим различным причинам; главным образом потому, что большая часть программного обеспечения уже была упакована для вас и готова к установке из любой точки всего несколькими командами.

Также легко создавать свои собственные пакеты для приложений, которые вы не можете свободно распространять. Вы, вероятно, имеете право распространять все, что у вас есть, в своей сети; поэтому для этих приложений вы можете настроить локальный репозиторий . Если вы управляете многими компьютерами или у вас ограниченная пропускная способность интернета, это может быть полезно даже для бесплатных вещей.


2

Если вы выберете установку Cygwin по умолчанию, она поместит все ваши файлы в папку c: \ cygwin. Я бы взял тот же подход. У меня лично есть папка ac: \ apps. В прошлом я использовал c: \ utils и c: \ cli (сокращение от командной строки). Это действительно зависит от того, как вы хотите организовать свои файлы. Я бы посоветовал отдельным утилитам поместить их в специальную папку. Для набора утилит (например, cygwin, sysinternals, rktools) я мог бы предложить собственную подпапку. Например, вы можете поместить все sysinternals в c: \ apps \ sysinternals. Если вы установите Cygwin, это займет большинство (если не все) команд Unix, которые вы полюбили.

Не забудьте изменить переменные среды (Пуск> Панель управления> Система> Дополнительно> Переменные среды) и добавить любые новые пути к приложениям в системную переменную PATH. Это позволяет вам запускать их по требованию из командной строки или с помощью Windows + R (команда запуска).


5
Я думаю, что разработчики Cygwin не заботятся о стандартах Windows и неправильно копировать их вредную привычку (создание папок в корневом каталоге). Я чувствую, как создать \Program Filesкаталог в Linux.
Камил

Я не знаю, почему это было бы плохо. Cygwin для среды Unix. Почему Cygwin отвечает стандартам Windows, если они предназначены для людей, которые хотят использовать инструменты Unix?
вс

@ Солнце точно! ОП запросил лучшие практики Windows.

1

C:\Users\Me\toolName(aka% homepath% \ toolName) - это правильное место для размещения инструментов, если вы хотите, чтобы они были для Meпользователя, поскольку некоторые из этих инструментов пишут (временные) файлы и требуют разрешения пользователя для записи в Program filesпапку. Еще один плюс в том, что вы не забудете сделать резервную копию, потому что она уже находится в пользовательском пространстве.


2
Я бы использовал %homepath%' rather than c: \ users \ me`. Это указывает на правильное местоположение, даже если местоположение по умолчанию было перемещено, и, таким образом, является более переносимым. +1 за написание / временную часть.
Хеннес

я исправляюсь и редактируюсь по той причине, что он был добавлен, а не заменен, чтобы ответить тем же термином, что и вопрос, спасибо Хеннес :)
Elazaron

0

Нет никаких правил по этому поводу, вы можете установить их где угодно, но их установка на OSP (раздел операционной системы) в папке, не являющейся пользователем, - это, как правило, хорошая идея, потому что вы получите те же средства защиты доступа есть ли у вас другие приложения; это усложняет случайное удаление или изменение их третьей стороной (например, вирусом).

Лично я обычно помещаю программу в «C: \ Program Files (x86)», потому что большинство таких программ, с которыми я сталкивался, 32-битные, но если бы это была 64-битная программа, я бы поместил ее в C: \ Program Files » Если это программа, связанная с системой (например, Imagex.exe), то я помещу ее в «C: \ Windows \ system32» для 32-битных программ и в «C: \ Windows \ system32» для 64-битных программ, чтобы обеспечить более легкий доступ из командная строка при запуске командных строк с повышенными привилегиями, поскольку по умолчанию вы запускаете в C: \ Windows \ system32; это означает, что вы можете ввести «name.exe» вместо C: \ location \ name.exe «для запуска программы.

Некоторые люди предпочитают отделять свои переносимые (не требующие установки или выполнения неконтролируемых изменений вне своей папки) и не основанные на установщике (не переносимые, но не требующие использования установщика) программы от обычных программ путем создания нового каталога на их OSP (например: C: \ Portable Program Files (x86) или C: \ Dumpable Program Files (x86). Я бы посоветовал 2-й из 2-х, учитывая, что это более высокий уровень точности, даже если он не звучит как красивая.

Подводя итог, нет никаких правил, однако, если вы установите их в OSP (в непользовательской папке), вы сможете защитить программу от нежелательных деинсталляций / модификаций (включая вредоносные модификации), а также при некоторых обстоятельствах. организация может быть полезной (например: ранее упомянутая папка system32 для системных программ CLI).


1
Я думаю, что вы в корне неправильно поняли вопрос. Первая часть оригинального вопроса - «Лучшая практика», а не «Каковы правила».
Стивен Пенни

@ StevenPenny Совсем нет, просто другое выражение. Суть вопроса - причины делать X или не делать X.
Робин Гуд

Я только что придумал что-то, что мне нравится: Etcили, Etceteraесли вы предпочитаете настоящую фантазийную латинскую анютины глазки О близком втором месте я тоже подумал Misc. Но Etcзаключил сделку для меня. :)
Хенрик

0

Я думаю, что создание ярлыка C:\Toolsв Send Toменю в Windows - лучший вариант, так как он всегда доступен из любого места. Таким образом, вы можете быстро «установить» свои небольшие программы, щелкнув их правой кнопкой мыши и выбрав « Инструменты» в меню «Отправить» из любой точки Windows.

Я получил этот урок о том, как добавить в меню «Отправить» из HowToGeek
Я вставляю резюме:

Чтобы попасть в папку SendTo, вам нужно открыть окно проводника, а затем вставить следующее в адресную строку.

% APPDATA% \ Microsoft \ Windows \ SendTo

Затем вставьте ярлык в папку, в которую вы хотите скопировать свои программы.

Затем каждый раз, когда вы загружаете новое портативное приложение, просто извлекайте его и отправляйте в это место.
Единственная проблема - это создание ярлыков, которые, на мой взгляд, стоит делать вручную.
С уважением.


Папка « Отправить » не очень подходит для использования в качестве места для установки программы. Он имеет конкретную цель, а именно: разрешить отправку файлов / документов для дальнейшей обработки программой (например, открытие файла в блокноте). Кроме того, все файлы, помещенные в папку «Отправить», появятся в контекстном меню Windows, включая поддержку .DLL. Это явно не желательно в большинстве случаев.
Я говорю, восстановите Монику

1
Нет. Похоже, вы и все downvoters не поняли, что я имел в виду. Я имею в виду Добавить ярлык, например, C:\Tools\ в Send Toпапку и получить к нему доступ из любого места, и тогда у вас не возникнет проблем с копированием каждой из ваших программ вручную. Мой ответ, скорее всего, ускорит процесс совмещения других вещей, прочитанных другими. Это прекрасно работает для меня.
UltraDEVV

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

Нет, начиная с Windows Vista, %APPDATA%переменная коренится в %USERPROFILE%\AppData\Roamingпапке, поэтому для Windows 7 приведенный выше путь является правильным. Однако в Windows XP вам нужно добавить папку Roaming, как вы указали.
Я говорю, восстанови Монику

Если вы считаете, что ваш вопрос неясен, вы должны уточнить его. Почему вы отправили два ответа?
Ramhound

0

Системная переменная среды Path по умолчанию в Windows выглядит примерно так (в зависимости от установленной версии Windows):

%SystemRoot%\system32;%SystemRoot%;%SystemRoot%\System32\Wbem;%SYSTEMROOT%\System32\WindowsPowerShell\v1.0\

Из этих опций% SystemRoot% (который обычно C:/) кажется лучшим выбором для чтения / записи, и на него будет легко ссылаться позже.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.