[R] Update MS Windows PATH variable based on a R script

Janko Thyson janko.thyson.rstuff at googlemail.com
Thu Jun 30 10:13:19 CEST 2011


On 29.06.2011 21:24, Duncan Murdoch wrote:
> On 29/06/2011 3:15 PM, Janko Thyson wrote:
>> On 29.06.2011 20:58, Duncan Murdoch wrote:
>>> On 29/06/2011 2:24 PM, Janko Thyson wrote:
>>>> Dear list,
>>>>
>>>> this is not directly an R question, but it is somewhat related to R
>>>> aspects, so I hope it's okay to post it here:
>>>>
>>>> I'd like to update my windows PATH based on a script routine in 
>>>> order to
>>>> make sure that crucial components are contained. Much like what 
>>>> happens
>>>> at the installation of Rtools (if desired). Now, can you do that from
>>>> within R or do I need some sort of windows batch file or something 
>>>> like
>>>> AutoIt script (http://www.autoitscript.com/site/autoit/)? If so, what
>>>> would I need to put in there?
>>>
>>> You need to set the registry entry if you want a persistent change to
>>> the PATH.  Sys.setenv just modifies R's copy of the PATH.  Child
>>> processes will see the modifications, but they don't last beyond the R
>>> session.
>>>
>>> You'll have to check MS docs to find which registry entry to mess
>>> with.  Alternatively, if you feel lucky, just use Control Panel to set
>>> some strange path, then see where your change showed up using regedit.
>>>
>>> R doesn't have a built-in function to write to the registry, but there
>>> are various utilities available outside of R to do it.
>>>
>>> Duncan Murdoch
>>
>> Thanks for the quick answer!
>> Would you mind sharing how you do it with the Rtools Windows installer?
>> Or is that too much bound to installer details and can't be secluded
>> very well?
>
> We use the Inno Setup installer; it has a function for this.  Here's 
> the code used:
>
> Root: HKLM; Subkey: SYSTEM\CurrentControlSet\Control\Session 
> Manager\Environment; ValueType: expandsz; ValueName: PATH; ValueData: 
> "{code:getNewPath}"; Tasks: setPath
>
> So I guess I do know what the registry key is.

Great, thanks a lot!

>
>>
>> The motivation behind this is that I came to love applications that can
>> be run portably (i.e. apps that don't write anything to the Windows
>> registry and can therefore be easily be "installed" on a USB drive, for
>> example). That works just fine with R, my IDE Eclipse and also Rtools.
>> The problem is that I need a batch script that optionally checks under
>> which letter my USB drive is mounted and updates the relevant paths to
>> Rtools binaries in my Windows PATH to make it somewhat "dynamical". Of
>> course I'd like to clean everything up once my R-session terminates so I
>> can reset the Windows PATH to it's original state once I'm finished
>> working at a specific PC.
>>
>> What I also just thought of: is there some way to specify relative and
>> not absolute paths in the windows PATH? I know that this works when you
>> have an .exe as a reference point (e.g. '..\somedir\' goes up one
>> directory relative to the directory where the .exe is called and then
>> moves into 'somedir'). But since there is no such thing as an .exe
>> involved, there's probably no way to do it.
>
> As far as I know that's fine with R.  It uses various .exe's in the 
> bin/i386 or bin/x64 directories.  It doesn't use the path for anything 
> beyond startup.
>
> Duncan Murdoch
>
>>
>> But thanks for the info, I'll have a look at MS specific documentation
>> to get the job done.
>>
>> Regards,
>> Janko
>>>
>>>>
>>>> Here's what I tried in R:
>>>>
>>>> unlist(strsplit(Sys.getenv("PATH"), ";"))
>>>> PATH.0<- Sys.getenv("PATH")
>>>> PATH.1<- paste(PATH.0, "C:\\blabla\bin")
>>>> Sys.setenv("PATH"=PATH.1)
>>>> unlist(strsplit(Sys.getenv("PATH"), ";"))
>>>>
>>>> The changes seem to be reflected, but when I check my PATH the new 
>>>> entry
>>>> isn't there. I guess there is no actual "feedback" to Windows system
>>>> environment variable and that's exactly what I would like to 
>>>> accomplish
>>>>
>>>> Thanks a lot for any advice,
>>>> Janko
>>>>
>>>> ______________________________________________
>>>> R-help at r-project.org mailing list
>>>> https://stat.ethz.ch/mailman/listinfo/r-help
>>>> PLEASE do read the posting guide
>>>> http://www.R-project.org/posting-guide.html
>>>> and provide commented, minimal, self-contained, reproducible code.
>>>
>>>
>>
>
>



More information about the R-help mailing list