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

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

Теперь многие приложения Windows используют каталог «AppData \Roaming» для определенных настроек и пользовательских данных. Это местоположение, похоже, хранится в переменной окружения. Есть ли способ временно переопределить расположение USERPROFILE или APPDATA только для одного приложения? Это было бы идеально, чтобы настройки и данные могли быть записаны в одно место, а не копироваться между внешним жестким диском и хост-компьютером.

Это выходит за рамки идеи PortableApps(тм). Я не хочу упаковывать приложения или устанавливать нелепое время выполнения. Что-то хорошее и простое это все, что я ищу.

Любое предлагаемое решение не должно создавать помехи другим приложениям.

1 ответ1

0

После небольшого тестирования я смог подтвердить, что вы можете переопределить переменные среды Windows в командной строке, и их значения будут унаследованы другими процессами, которые впоследствии будут запущены из этой же командной строки. Таким образом, у нас есть следующий пакетный файл:

REM -- Path to the directory of this script (make sure to remove ending slash)
set CURRENT_DIR=%~dp0
REM -- Great example from Strawberry Perl's portable shell launcher:
if not "" == "%CURRENT_DIR%" if #%CURRENT_DIR:~-1%# == #\# set CURRENT_DIR=%CURRENT_DIR:~0,-1%

REM -- OVERRIDE the user environment variable to point to a portable directory
set USERPROFILE=%CURRENT_DIR%\Data

REM -- (Optional) Some programs do not use these environment variables
::set APPDATA=%CURRENT_DIR%\Data\AppData\Roaming>nul
::set ALLUSERSPROFILE=%CURRENT_DIR%\Data\AppData\Roaming>nul
::set PROGRAMDATA=%CURRENT_DIR%\Data\AppData\Roaming>nul

REM -- Start the application
start "" /D"%CURRENT_DIR%\MyAppDir" "myprogram.exe" "param 1" param_2 "param 3"

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


С другой стороны, постоянные изменения переменных среды могут быть сделаны с помощью setx .

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .