[Plugin] SketchUcation Tools 2.6
-
So far I found that when a Plugin fails to extract and get installed into a custom-folder the ZIP that it's using seems to fail to extract properly - it seems to be very slightly corrupted - a manual extract of it is OK, but the WIN automated one is unreliable...
Perhaps the way that v2014's Ruby extracts the ZIP data and recompiles the RBZ is subtly different to the previous version and so occasionally it fails ?I am investigating...
Because the data transfer relies on a attributes which are packed/unpacked, perhaps their length in the latest version is less tolerant ?
-
In 2014, you could download the .rbz directly saving everyone bandwidth.
-
@jim said:
In 2014, you could download the .rbz directly saving everyone bandwidth.
But then SketchUp Plugin Store wouldn't recognize it for updating
And, no, D:\Dropbox\Plugins is located on my internal RAID. My is an SSD. -
@bob james said:
@jim said:
In 2014, you could download the .rbz directly saving everyone bandwidth.
But then SketchUp Plugin Store wouldn't recognize it for updating
And, no, D:\Dropbox\Plugins is located on my internal RAID. My is an SSD.Oh, I meant the Plugins Store could save bandwidth by downloading the .rbz directly rather than they way it works now. For example, the MoveIt file which the Plugin Store downloads is 4x larger than the direct .rbz download. Over the thousands of plugin downloads the Store is serving up, that savings will really make a difference.
-
We already went down that route of downloading the RBZ in the webdialog - just like in the browser based PluginStore.
Please don't think we haven't thought about it...
Built in security in all web browsers / js prevent a direct download of any files without some user intervention and selection of a folder - that's why the user has to choose a destination for the RBZ download.
This chosen destination is not readily accessible.
But if it were we could of course then auto-install from that RBZ directly.
The exception to this is when it's done through a webdialog within SketchUp with the "load_from_url", which once you have the URL passed by callback the load is done automatically.
From that downloaded SKP we can extract the data to recompile a RBZ in a temp folder our side, and from that we can then Auto-Install the Plugin...
I have been looking at ways of using a server-side button-click to get a fileObject [i.e. where the user chooses to save the RBZ], then pass that path to the server in a form-submit, and then download the RBZ to that destination. On IE the fileObject is the true file-path, but on Safari it is obfuscated to just the file-name for better security, which is no help when later on we are trying to find the downloaded RBZ for using that in auto-installation...If you have any clever ideas on how we might circumvent this security trap then please share them [especially for the obfuscating MAC's Safari !]... It clearly would be better if an author simply uploaded his RBZ and then that was downloaded from the browser OR Auto-Installed from the PluginStore's webdialog... Side stepping the RBZ.SKP altogether.
-
I completely understand why it you did it they way you did in 2013.
In 2014, do it with Ruby. Use net/http or open-uri to download the binary - http://stackoverflow.com/questions/2263540/how-do-i-download-a-binary-file-over-http
Should be possible.... hehe.
-
Yes... but of course we'd then have two PluginStore versions depending on the SketchUp version...
I can already post/get data from a server using js/jquery/json POST/GET methods in earlier versions...
However, they still have the catchall security trap of requiring the user to chose a destination in a form-submit fileObject.
As I said before - that fileObject is accessible in IE - so we could already know where the RBZ is going, wait for it's arrival and then Auto-Install from there - but in Safari the obfuscated fileObject prevents this.
Also the "download RBZ and then AutoInstall" approach would mean extra choices and clicks for the user.
At the moment the user clicks AutoInstall - if there is only one User's Plugins folder, then that is used [there are no choices] and the Auto-Install completes with a closing confirmation dialog in v2014.
In earlier versions you might get more 'are you sure you want to install this' dialogs.
If they have custom-plugins folders then they are additionally prompted to choose the destination folder.
BUT in the "download RBZ and then AutoInstall" scenario they will always also have to choose the destination of each RBZ download - I cannot see how the security traps can be circumvented ??
This would also be needed for each and every download too - preventing the easy 'Update All' option [or future 'Sync All' possibilities] - as each download needs its own fileObject which can only be set through a form-submit user-action...Any further insights appreciated...
Be assured that we ARE actively looking at an alternative to the RBZ.SKP method...
Watch this space -
Yeah, there's something I'm not understanding.
@tig said:
Yes... but of course we'd then have two PluginStore versions depending on the SketchUp version...
You have this already, right? Didn't I have to upload 2 versions - the .rbz and the .rbz.skp?
But so what if you have 2 versions on your server. 2014 is able to download the .rbz to a specific path on the a disc. Won't this still be a major bandwidth saver moving forward?
-
This code downloads your Extrude tools .rbz from SketchUp Ruby. Not sure why'd you keep wanting to download via the WebDialog. Does this not bypass all those browser security issues?
url = 'http://plugin.sketchucation.com/pluginserv_joomla.php?f=ExtrudeTools' require 'open-uri' File.open("#{Dir.pwd}/extrude-tools.rbz", "wb") do |saved_file| # the following "open" is provided by open-uri open(url, "rb") do |read_file| saved_file.write(read_file.read) end end
-
It'd sure be great to have less clicking (version 8 here), I have two screens and for some reason the dialogs come up on alternate screens - it's like watching tennis - or playing pong!
-
Thanks for the example...
You are right that we can use the additional Ruby2.0 methods to get RBZ files.
These are not readily available to pre-v2014 SketchUp users [PC].
We could detect if the user has v2014 and download the RBZ a different way... by passing the SKP convolution...
But we still need an alternative SKP-free way for earlier versions...BUT as I said be assured we are already looking at alternatives anyway...
Gรกbor and I have already been looking at ways of getting an RBZ directly, for ALL SketchUp/Ruby versions, with no form-submit issues or SKP messing on etc...
So v2.5.2 [if not v3] IS in [and now going down] the pipe-line...
PS: We now a fully working version that will directly install the RBZ, for all versions of SketchUp / Ruby, PC & MAC.
We are pre-beta testing it...
Watch this space...PPS: Gรกbor is now having kittens, because your example url accesses the joomla section to download the rbz BUT that should only happen when the call is made through the browser and you are logged-in - it should not work if you are not logged-in or you are in the webdialog - but it does - we tried it... Now he has a security hole to fill...
-
on mac I am not being able to install plugins in any alternative folder. I get error messages and nothing appears in the folder. besides, there seems to be no way for me to determine where should my custom folder be: it comes predetermined.
any thoughts on that?
-
What are these error messages ?
Is this v2013 ?
We are starting beta testing 2.5.2 so that might help... -
it is Sketchup 2014.
the messages are like the one you see on top. the odd thing is that after that message there comes another one saying the installation ocurred but if I look up that folder there is no plugin there.
-
What version are you using? V2.5.0 or v2.5.1
-
2.5.1
-
Wait for a stable version of 2.5.2 ?
-
Hi Guys,
Neither SketchUcation tools 2.5 or Extension warehouse seem to keep track of all the plugins I have loaded in Sketchup Pro. Is it intended that they only keep track of plugins each of them downloaded or are they supposed to look at the plugins folder and identify all the plugins then work the updates, would that even be possible. The transition to sketchup 2014 has been difficult with some of the old plugins not working anymore and copying the plugins folder from one version to the other is becoming more unreliable. Can you offer any advice as to a good way of dealing with this issue.
David.
-
@djohnson.nz said:
... copying the plugins folder from one version to the other is becoming more unreliable.
First of all... here at SUC, we who give advice, have as far as I can remember back (which was my first version being SUv7 initial release,) always told users not to copy the old plugins folders over to new SU versions, wholesale.
We always encouraged users to check for updates to plugins.
If they could not find updates, to copy and test plugins one at a time.
Now.. however, we have SPIS and Trimble EW, which can make installing much easier.
So, second of all, the Trimble EW, keeps track of only the extensions IT installs. When it does, it writes an "extension_info.txt" file into the plugin's sub-directory. In this file are two GUIDs one to identify the extension, the other to identify the extension's version. These data correspond to the attributes of the same name in the Ruby SketchupExtension class.
When SketchUp loads, it checks the list of loaded extensions, against the EW database, and IF an update (to one of the EW installed extensions, is available, the EW toolbar icon will change. It will have an orange circle with black update arrows, superimposed upon the icon.The SketchUcation Tools read through the "Plugins" dir(s), and enumerate all rb/rbs files.
It also enumerates all SketchupExtension class instances.
You CAN use the SUT to toggle both ON/OFF. (Even ones installed by the Trimble EW.)
I don't know, in the code, whether it treats EW installed extensions any different, or even looks for the "extension_info.txt" file. TIG can answer that.To address the "difficult transition", I can only say that many developers had a lot of work to do, to update their extensions from an old obsolete Ruby trunk & version, to Ruby 2.0.0 (which skipped the entire 1.9 code trunk!) Ruby 2.0 was almost totally rewritten, and has many differences from 1.8 Ruby.
It is more stable, much faster, handles Unicode strings (1.8 on PC did not, making many non-English pathstrings to the User folders a no-go,) and many more enhancements.Things ARE getting better and easy slowly.
The Trimble Warehouse now has an "Install All" feature, that can install all of your "plugin set" with a single button click. (Keep in mind that it still does not know any difference between your various computer or the OS installed upon them. It juist remembers YOU as a user when you log in.) -
EDIT:Rats! Guru Dan got in before I finished.
Advice from a definitely Non-Guru but battle-hardened source
@djohnson.nz said:
Hi Guys,
Is it intended that they only keep track of plugins each of them downloaded or are they supposed to look at the plugins folder and identify all the plugins then work the updates, would that even be possible.SketchUp Plugin Store can only 'see' what it has loaded.
@djohnson.nz said:
The transition to sketchup 2014 has been difficult with some of the old plugins not working anymore and copying the plugins folder from one version to the other is becoming more unreliable. Can you offer any advice as to a good way of dealing with this issue.David.
Take heart! We are all "suffering" to one degree or another. If all of the plugins in existence had been converted to account for the new version of Ruby, then the answer would be easy (somewhat tongue in cheek): Start fresh and load all of your plugins with SketchUp Plugin Store.
The problem has many faces (here are five of them):
- Most, but possibly not all, of the 'SketchUcation' plugins will eventually be updated, but have not yet gotten there.
- Many of the 'old standby" plugins are not and may never be updated because they come from 'other' sources (SMustard, blogs, etc.)
- Some of the converted plugins do not run in 'additional folders' (if you, like me, want a 'standard plugin folder available in a cloud' (e.g., Dropbox) so your home desktop, laptop and work desktop all have the same plugins available)
- There are two 'legal' folders for plugins: one for plugins that will be used by multiple users of a computer, and the 'standard' folder C:/Users/Bob/AppData/Roaming/SketchUp/SketchUp 2014/SketchUp/Plugins/. The new standard folder was created to eliminate the confusion stemming from not having permissions to access the plugins folder in the pre-2014 SU. (How's that working for you )
- And, inevitably, some (hopefully small) subset of the converted plugins may not 'play nice' with each other.
Fortunately, at this point in time, most of the issues have been identified, but it has been a very bumpy road getting here.
Soooo: As I said at the beginning: Take heart! Start fresh and load all of your plugins with SketchUp Plugin Store. Unless there is no other apparent alternative, don't copy and paste from a previous SU version's plugin folder, but if you must then do it one at a time or you'll really find yourself in a mess.
Advertisement