[V4RB] Macho VComponents folder is 22mb???

Shaun Wexler dev at macfoh.com
Fri Aug 25 02:41:47 CDT 2006


On Aug 25, 2006, at 2:09 AM, Ruslan Zasukhin wrote:

> Right, and this is where I see this trap of size.
>     Framework with A + B + C will have 21 * 3 = 63 MB right?

Possibly.  The goal is to maintain compatibility with existing public  
API, where future API can be added in the form of new (or newly- 
exposed) functions, but future revisions do not change the fundamental  
behavior of existing/previous API, and maintain binary compatibility.

> Can work this:
>
>     App1 install VSDK.framework - vers A
>
> Later on the same computer, other installer of other app2 installs
>                  VSDK.framework - ver B
>
> So can they go into the same folder and live together?

If I write a Valentina.plugin API, app's would call ValentinaPlugInInit 
() instead of ValentinaInit(), and otherwise nothing would have to  
change.  Here is a scenario:

Let App1 be a Panther/Tiger app which depends on the current 32-bit  
API in Valentina.framework/Versions/A/Valentina, and let both App2 and  
App3 be Leopard-only apps which each depend on the new 64-bit API in  
Valentina.framework/Versions/B/Valentina.

A user regularly uses App1 on his computer, and version A of the  
framework is currently installed in /Library/Frameworks/ 
Valentina.framework/Versions/A/.

The user decides to try a new program, App2, and downloads it.  The  
app is downloaded "lite", meaning the Valentina.plugin embedded in the  
App2 bundle does not contain Valentina.pkg (installer package) for  
Valentina.framework/Versions/B, upon which it depends.  When App2 is  
launched, it finds /Library/Frameworks/Valentina.framework but sees  
that it does not contain the required version B, so it notifies the  
user and subsequently downloads and installs it (after authentication)  
into the existing framework bundle, so /Library/Frameworks/ 
Valentina.framework contains both the A/ and B/ versions.  App1 also  
contains the compressed A/ version in its bundle, and now App2  
contains the compressed B/ version in its bundle which it requires.   
App2 can now launch quickly, as well as repair the system if the main  
framework is accidentally deleted.  Same for App1.

Next the user buys App3 from Dave Addey on CD.  The app is shipped  
fully self-contained because it includes the proper version of  
Valentina.pkg within its embedded Valentina.plugin, and will install  
it upon launch.  The user mounts the CD, performs a drag/drop into / 
Applications, and double-clicks App3 to run it.  App finds a NEWER  
version of Valentina.framework/Versions/B is already installed, so it  
links to the existing one and launches.

Any particular versioning requirements within a compatibility version  
("A" or "B", etc) can be solved by reading the framework versions and  
using the necessary logic, but overall binary compatibility is  
inevitably maintained.  At least that's the theory...

-- 
Shaun Wexler
MacFOH
http://www.macfoh.com

"Intellectuals solve problems, geniuses prevent them." - Albert Einstein




More information about the Valentina mailing list