Cara mengarahkan "AppData \ Roaming" ke subdirektori untuk membuat aplikasi lebih portabel

0

Aplikasi portabel adalah program yang bagus dan sederhana yang tidak perlu diinstal pada setiap komputer yang Anda gunakan.

Beberapa penginstal perangkat lunak tampaknya tidak berbuat banyak kecuali memverifikasi lingkungan dan menyalin file ke hard drive Anda. Yang saya inginkan adalah aplikasi Windows saya yang terinstal di hard drive eksternal (atau perangkat USB) yang dapat dibawa-bawa antar komputer. Pengaturan dan data juga harus disimpan pada hard drive eksternal sehingga perubahan aplikasi (atau kemajuan game) dapat dipertahankan di seluruh komputer.

Sekarang, banyak aplikasi Windows menggunakan direktori "AppData \ Roaming" untuk pengaturan dan data pengguna tertentu. Lokasi ini tampaknya disimpan dalam variabel lingkungan. Apakah ada cara untuk menimpa sementara USERPROFILEatau APPDATAlokasi hanya untuk satu aplikasi? Ini akan ideal, sehingga pengaturan dan data dapat ditulis ke satu lokasi, daripada disalin antara hard drive eksternal dan komputer host.

Ini melampaui gagasan PortableApps (tm). Saya tidak ingin mengemas aplikasi atau menginstal runtime konyol. Sesuatu yang baik dan sederhana adalah semua yang saya cari.

Setiap solusi yang diusulkan tidak boleh menyebabkan gangguan dengan aplikasi lain.

JonathanDavidArndt
sumber

Jawaban:

0

Setelah sedikit pengujian, saya dapat mengonfirmasi bahwa Anda dapat mengganti variabel lingkungan Windows dalam prompt perintah, dan nilai-nilainya akan diwarisi oleh proses lain yang kemudian diluncurkan dari prompt perintah yang sama. Dengan demikian, kami memiliki file batch berikut:

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"

Setiap prompt perintah menerima salinannya sendiri dari variabel lingkungan Windows ketika pertama kali dibuka, dan nilai-nilai ini dapat diubah secara terpisah dari prompt perintah lainnya. Proses lain tidak terpengaruh oleh perubahan ini.


Di sisi lain, perubahan permanen ke variabel lingkungan dapat dilakukan dengan setx .

JonathanDavidArndt
sumber