[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