Windows 7

Ostatnio postanowiłem wypróbować nowe dziecko Microsoftu. Poprzez uczelnię mam dostęp do wydania Windows 7 Professional, dlatego chciałem dać mu szansę do zaprezentowania się i może nawet zastąpienia Linuxa (sic!) na moim dysku na stałe.

Mój zapał dotyczący nowego systemu trwał kilka godzin. Były to godziny poświęcone na ściągnięcie i nagranie na płytę odpowiedniego obrazu…

Po zbootowaniu z płyty ujrzałem piękne okienko ze sporym przyciskiem na środku „Install now…”. Pomyślałem, że to dobry punkt wyjścia więc klikąłem ów przycisk. Pojawił się wówczas napis „Setup is starting…”. To by się nawet zgadzało z intuicją. Niestety później było już tylko gorzej.

Po ostatniej informacji o startowaniu instalatora pojawiło się nowe okienko wraz z informacją, że nie mam sterownika CD/DVD i jeśli mam płytę/pendrive/cokolwiek ze sterownikami to mam to wykorzystać i załadować go.

Zadanie to nie wydaje się przesadnie trudne jeśli się nad nim głębiej nie zastanowić. Hej, czy ja nie bootowałem systemu z płyty? To teraz nagle odkrył, że nie może z niej czytać? Jeśli dodać do tego fakt, że przy poszukiwaniach sterownika mogę przeglądać sobie płyty, pendrive’y i zawartość dysku twardego to ktoś tu zmyśla.

Zacząłem poszukiwania internetowe dotyczące feralnego komunikatu. Jak się okazało nie byłem odosobnionym przypadkiem. Niektórzy sobie z tym poradzili i znalazłem kilka zaleceń how-to. Jedno z nich dotyczyło pogmerania przy ustawieniach RAID dla SATA w BIOSie. Niestety BIOS w moim laptopie (Acer Aspire 5610Z) pozwala jedynie zmienić kolejność bootowania…

Później ktoś poradził, aby zainstalować system z pendrive’a. Nagrałem więc obraz Win7 na 4GB patyk i zbootwałem z niego system. Podbudowała mnie szybkość bootowania ale dzięki niej o wiele prędzej dowiedziałem się, że nic to nie dało.

Kolejną poradą było załadowanie sterowników SATA z dysku lub pendrive’a. Próbowałem to na kilka sposobów i również się nie udało.

Ostatnia moja próba wynikająca już mojej własnej inwencji twórczej polegała na wymontowaniu napędu CD z laptopa. Jako, że nigdy tego nie robiłem to rozmontowałem wszystko co się dało, żeby odkryć, że wystarczyło wykręcić jedną śrubkę i po prostu napęd wyjąć. To było pouczające.

Tak czy inaczej – po wyjęciu napędu CD/DVD problem dotyczący sterowników nadal występował.

Spróbowałem zainstalować Windows Vista, który dostałem razem z laptopem i uruchomić z płyty instalator i po prostu zupgradować system z Visty do 7. To również nie dało efektu ponieważ 2 pliki DLL ( spwizeng.dll i wdscore.dll ) sprawiają problemy i nie daje się uruchomić instalacji pod Win Vista.

Wydaje mi się, że to nie jest dobry start dla Windowsa, aby przekonać mnie o swojej wyższości…

Jeśli ktoś ma jeszcze jakiś pomysł w jaki sposób można zmusić ten…. system do działania to proszę się nie ograniczać i napisać w komentarzach swoje przemyslenia.

Java, SWT i uruchomienie z pliku JAR (Ubuntu i Windows)

Pokombinowałem troche, poczytałem fora internetowe poczytałem różne artykuły na temat tego w jaki sposób uruchomić stworzony przez Eclipse plik JAR.

Wszystko na marnę.

Dziś rano jednak pomyślałem, że musi być jakieś prostsze rozwiązanie – bo widziałem jedno które miało 10k kroków, a wyjaśnione było tak, że zgubiłem się już po drugim.

Ubuntu

Moim problemem w Linuxie było to, że nie java.library.path nie zawierała ścieżki do Java Native Interface (JNI) zatem wystarczyło tylko dodać do polecenia uruchomieniowego jedną rzecz:

java -Djava.library.path=/usr/lib/jni helloworld.jar

Takie wklepywanie jest jednak uciążliwe, a przy uruchamianiu aplikacji przez dwuklik na ikonie – wręcz niemożliwe. Dlateg – jak zawsze – można (nawet trzeba) to sobie uprościć.

Okazuje się, że wystarczy ustawić zmienną LD_LIBRARY_PATH tak aby zawierała wspomnianą ścieżkę /usr/lib/jni.

„Wystarczy” to za mało. W ubuntu niełatwo jest ustawić tę zmienną – nie potrafię wyjaśnić dlaczego tak jest bo sam tego nie wiem. Wiem natomiast, że zadziałało utworzenie w katalogu użytkownika pliku .bashrc i wpisanie do niego nastepującej treści pomogło:

LD_LIBRARY_PATH="${LD_LIBRARY_PATH}":/usr/lib/jni
export LD_LIBRARY_PATH

Od teraz po wykonaniu polecenia env w liście zmiennych widać LD_LIBRARY_PATH ustawioną w odpowiedni sposób.

Windows

W windowsie z kolei wszystko „prawie” działa. Problemem nie są dzielone biblioteki tylko brak pewnych rzeczy w pliku jar z programem. U mnie objawiało się to okienkiem informującym mnie, że nie można znaleźć głównej klasy do uruchomienia czy coś w ten deseń. Tak czy inaczej – nie to było problemem.

Po wyeksportowaniu programu z Eclipse do pliku *.jar i otworzeniu go w jakimś WinZIPie czy innym programie do rozpakowywania znajduje się tam kadalog META-INF, pliki .classpath i .project oraz pliki *.class (u mnie był jeden – Main.class). Te pliki nie są interesujące. Bardziej ciekawe jest to co dzieje się w katalogu META-INF. Jest tam plik MANIFEST.MF.

Otworzyłem MANIFEST.MF i moim oczom ukazało się coś takiego:

Manifest-Version: 1.0
Main-Class: Main

Wpadłem więc na pomysł, aby ściągnąć z www.eclipse.org/swt wersję SWT dla Windows i ze ściągniętego ZIPa wydostać plik swt.jar. Później wystarczy wrzucić go do naszego pliku *.jar, który chcemy uruchomić (do głównego „katalogu” – tam gdzie pliki *.class) i dodać do pliku MANIFEST.MF jedna linię:

Class-Path: swt.jar ./

I tyle wystarczy. Po tym zabiegu wystarczyło tylko dwa razy kliknąć na plik *.jar i uruchamiało się okienko o które chodziło.

Dzisiaj

Dzisiejszy dzień spędziłem na instalowaniu wszystkiego co mi potrzebne na nowym Windowsie czyli głównie:

  • MS Visual Studio C++
  • MS Platform SDK
  • MS DX SDK
  • różne sterowniki i programy użytku codziennego

Wszystko musiałem pobrać z sieci jednak to na czym mi najbardziej zależało i było największe ciągnęło się z prędkością nie za wielką więc można się troszkę zirytować…

Kiedy skończę to wszystko instalować zrobię sobie obraz dysku C i zapiszę go gdzieś w bezpiecznym miejscu żebym już nigdy nie musiał się tak męczyć 😉