Writing a config or temp file in Plugins folder
-
So the issue here is users without admin privileges won't be able to run plugins that need to write to the plugins folder?
-
@thomthom said:
So the issue here is users without admin privileges won't be able to run plugins that need to write to the plugins folder?
Yes. It's simply a no good route in Vista/win7 (possibly in XP too), if a strict security policy is in use - user cannot write anything in application folders. It can even be restricted from admins (by group policy).
-
@notareal said:
if a strict security policy is in use - user cannot write anything in application folders.
So what folder does Windows expect people should be able to write to? - somewhere in the users folders probably, right? Could you set it up to write to a special folder in the users MyDocuments or something? And then like Thom suggests, use write_default to save the location of the file.
-
You'd have to make a Win32 API call to get the correct path.
What about OSX, any restriction there?
-
@thomthom said:
What about OSX, any restriction there?
yeah, there are restrictions there.
for instance, using fredoscale as an example (which has the default parameter file), i can only change those defaults from my admin account.. if i try doing it from a user acct then the changes don't stick.
i can however, as an admin, give the user acct. read/write permissions to the entire plugin folder or specific files in which case a user can make changes to fredoscale's parameters which will affect both the user's sketchup and the admin's sketchup.[and if i remember correctly, there were some problems with the fredoscale.def file being created in the first place when someone was trying to install from a non-admin acct.. ie- it didn't work]
-
Why does it have to be a file made in the
../Plugins/
folder ?
There are many places that a user will have access rights - e.g.C:\Temp
?
You can also get the User's very own 'TEMP' folder usingENV["TEMP"]
for PC orENV["TMPDIR"]
for MAC - e.g.C:\Users\TIG\AppData\Local\Temp
-
The temp folder doesn't work well when you want to store persistent config files.
-
What we need in the API is a method that will return the path to where one can store application data on each OS.
-
On Win7 I see this key:
LOCALAPPDATA - C:\Users\Thomas\AppData\LocalIs there something on OSX?
-
My
ENV
example combined with a simple OS test lets you find the User's own TEMP file...
The PC'sENV["LOCALAPPDATA"]
would allow you to then make a specific sub-folder to contain the config file - on a MAC what is it ?BUT you can save config info in other ways...
To save them
If it's entity specific useentity.set_attributes(dict,key,value)
If it's model specific usemodel.set_attributes(dict,key,value)
If it's Sketchup specific useSketchup.write_default(section,variable,value)
[if it's a file-path with '' you'll need to usetr("\\","/")
before writing it]To retrieve them use
entity.get_attributes(dict,key,default)
model.get_attributes(dict,key,default)
Sketchup.read_default(section,variable,value)
[if it's a file-path you'll need to usetr("/","\\")
after reading it and before using it]
-
@tig said:
[if it's a file-path with '' you'll need to use tr("\","/") before writing it]
Or use
File.expand_path
@unknownuser said:
I have to try if once again. If my memory doesn't deceive me I haven't had good results with it in the past.
I use it quite frequently. But beware that it doesn't handle Length objects well - so convert them into floats first. (I made a wrapper to handle conversion of Length and Symbol for write/read_default)
-
@tig said:
Why does it have to be a file made in the
../Plugins/
folder ?It doesn't have to be. If I would have just a chance to write a path to the config file then it would be ok...
I have forgotten aboutSketchup.write_default
. Thanks Thomas!
I have to try it once again. If my memory doesn't deceive me I haven't had good results with it in the past. -
Note that
read/write_defaults
is best with Strings - convert then from/to Float [or whatever] afterwards... -
works fine with floats, integers, even arrays in my experience...
-
For windows %appdata% ?
Advertisement