|
Hat jemand eine elegante Loesung fuer das Problem, von einem Package aus ein in diesem Package benoetigtes MathLink-Programm zu installieren? Sie sollte moeglichst system- und versionsunabhaengig sein, also auch unter Version 2.2 laufen. Ich weiss, dass Install[] in 3.0 verbessert wurde. -- Hier ist meine jetzige Loesung fuer 2.2 (aus MathSource #0207-469) -- (* install "binary" (the FastBinaryFiles package) if not yet installed. Use weak heuristics on the setting of $Path on various systems. If Install[] fails for some reason, print an error message indicating this problem. *) If[$LinkSupported, (* MathLink available *) If[Not[Or @@ Map[StringMatchQ[ToLowerCase[First[#]], "*binary*"] &, Links[]]], (* "binary" not yet installed *) Which[$OperatingSystem === "Unix", SetDirectory[Last[$Path]]; (* ../Packages *) SetDirectory["Utilities"]; link = Install["binary"]; ResetDirectory[]; ResetDirectory[], $OperatingSystem === "MacOS", SetDirectory[First[$Path]]; (* ..:Packages *) SetDirectory["Utilities"]; link = Install["binary"]; ResetDirectory[]; ResetDirectory[], $OperatingSystem === "Windows", link = Install[$Path[[3]] <> "UTILITIE\BINARY"], True, (* other operating system *) SetDirectory[Last[$Path]]; (* ../Packages (hopefully) *) SetDirectory["Utilities"]; link = Install["binary"]; ResetDirectory[]; ResetDirectory[] ]; If[link === $Failed || First[LinkError[link]] != 0, (* Error *) Message[IgorBinary::nobin]; Uninstall[link], (* else *) Print["FastBinaryFiles package successfully installed."] ], (* "binary" was installed before this package was loaded *) If[FreeQ[$ContextPath, "FastBinaryFiles`"], PrependTo[$ContextPath, "FastBinaryFiles`"]] ], (* MathLink not available *) Message[IgorBinary::nolink] ]; ------------------------------------------------------------------------ Mit freundlichen Gruessen Arnd Roth Abteilung Zellphysiologie Max-Planck-Institut fuer Medizinische Forschung Postfach 10 38 20, D-69028 Heidelberg |