niedziela, 23 września 2012
NDepend na straży jakości kodu źródłowego [PL]
niedziela, 17 kwietnia 2011
MPTS (Maciej-Progtech ToolSet) [PL]/[EN]
sobota, 2 kwietnia 2011
SharePoint 2010 – od czego zacząć [PL]
poniedziałek, 5 kwietnia 2010
Twitter feed, czyli jak zautomatyzować przekazywanie wiadomości do Twitter'a [PL]
poniedziałek, 1 lutego 2010
Integracja SVN i BugNET krok drugi [PL]
Tym razem w ramach rozwinięcia tematyki integracji SVN z systemem BugNET pokażę trochę bardziej zaawansowane rozwiązanie.
Integracja oparta jest o stabilną (nie beta i nie RC) wersję BugNET: 0.7.921. Niestety w tej wersji BugNet nie jest wyposażony w żadne mechanizmy (np. web-serwisy), które mogą zapewnić integrację (zgodnie z zapewnieniami autora BugNet jakieś web-serwisy pozwalające na integrację mają być dodane od wersji 0.8). Ten post proponuje, jaki web-serwis można dodać do BugNet by umożliwić integracje z SVN polegającą na automatycznym dodawaniu komentarza do problemu, po wykonaniu commit w subversion.
wtorek, 26 stycznia 2010
Integracja Tortoise SVN i BugNET krok pierwszy [PL]
W tym post'cie chciałbym się skupić na tych pierwszych dwóch i omówić jak można skonfigurować popularnego klienta repozytorium Subversion: Tortoise SVN, by można w nim wprowadzać numer problemu/zadania, a później klikając na ten numer w logu przejść do właściwego problemu w systemie kontroli problemów: BugNet.
poniedziałek, 18 stycznia 2010
Opowieść o 64 bitach, problemie z instalacją SSMSEE i dwóch liniach komend [PL]
Ostatnio próbowałem w systemie 64 bit Windows 7 zainstalować Microsoft SQL Server Management Studio Express Edition(SSMSEE), niestety pomimo pobrania odpowiedniej wersji x64 instalacja zawsze kończyła się w błędzie. W końcu jednak udało mi się zakończyć sukcesem instalację. Wiązało się to z wykorzystaniem linii poleceń systemu Windows, czyli "cmd.exe", ale...
niedziela, 13 grudnia 2009
OPC klient z linii poleceń (przykład C# .NET) [PL]
Jakiś czas temu zacząłem cykl poświęcony implementacji klienta OPC (Cz. 1. Przygotowania, Cz. 2. Implementacja), w tym post'cie chciałbym wrócić do tematu i przedstawić przykład gotowego programu, który realizuje opisywane możliwiści:
Klient OPC z linii poleceń (OPC command-line client)
poniedziałek, 23 listopada 2009
Jak zainstalować Sharepoint'a na Windows, który nie jest serwerem (Windows Vista, Seven)? [PL]
Jeżeli ktoś instalował kiedyś Windows Sharepoint Services 3.0 SP 2 (WSS), to pewnie zauważył że wymagany jest Windows 2003 SP1, a próba instalacji kończy się niepowodzeniem już na samym początku (po weryfikacji systemu). Ci którzy chcą się jednak uprzeć i zainstalować WSS na nie-serwerowym Windows, polecam przeczytanie artykułów (pokazują jak to zrobić na Windows Vista i Seven).
środa, 11 listopada 2009
Pojawił się kolejny release OPC UA SDK:1.01.307.0 Stable [PL]
Niedawno (5-go listopada 2009) pojawiła się kolejna wersja pakietu SDK dystrybuowanego przez OPC Foundation i wspierającego standard OPC Unified Architecture: OPC UA SDK 1.01.307.0 Stable. Pakiet SDK dostępny jest w kilku postaciach instalacyjnych, których opis można znaleźć w dokumencie: "ROADMAP TO UA SOFTWARE DOWNLOADS". Plik readme można znaleźć tutaj. Poszczególne instalatory pakietu dostępne są ze strony OPC Foundation w dziale download (dostęp tylko dla członków OPC Foundation). W skład pakietu wchodzą również biblioteki i przykłady wspierające platformę .NET. Zachęcam również do zapoznania się z helpem online: http://opcfoundation.org/uasdk/Help/ oraz e-książką poświęconą OPC Unified Architecture.
sobota, 31 października 2009
OPC UA Server (CommServer UA) już dostępny! [PL]
Po ostatniej wytężonej pracy w firmie gdzie pracuję, chciałbym ogłosić, że OPC UA Server - CommServer UA jest już dostępny i gotowy do pobrania dla wszystkich tych, którzy chcą się bliżej zapoznać z technologią OPC UA
CommServer to pakiet oprogramowania komunikacyjnego do zarządzania transferem danych. Jest to w pełni konfigurowalny serwer OPC Unified Architecture (OPC UA). Wbudowane technologie i algorytmy pozwalają na inteligentną transmisję danych automatycznie dostosowującą jej parametry do potrzeb użytkownika lub procesu.
Jest to pierwsza publiczna wersja CommServer’a UA dostępna w dziale download wortalu CommServer (wersja dostępna z licencją demo). CommServer UA został przetestowany pod kątem kompatybilności i współdziałania z innymi produktami podczas OPC Interoperability Workshop (2009) w Norymberdze, Niemcy. OPC UA Address Space Model Designer w wersji 2.10.00 i OPC Viewer w wersji 3.00.02 są komponentami CommServer’a UA w wersji 1.00. 20.
CommServer UA wspiera interfejs serwera OPC UA i pozwala na udostępnianie danych z trzech źródeł (nazywanych w oprogramowaniu DataSources):
- CommServer – silnik komunikacyjnych (wbudowane technologie i algorytmy pozwalają na inteligentną transmisję danych automatycznie dostosowującą jej parametry do potrzeb użytkownika lub procesu)
- Klient OPC DA (działa jako Wrapper OPC DA z w pełni konfigurowalną przestrzenią adresową)
- Symulator (dane są symulowane)
Zobacz online help (http://www.commsvr.com/UAModelDesigner/Index.aspx)
Pobierz najnowszą wersję CommServer UA 1.00.20
Kolejną nowością są nowe wersje oprogramowania z rodziny CommServer
Przetestowane pod kątem kompatybilności i współdziałania z innymi produktami podczas OPC Interoperability Workshop (2009) w Norymberdze, Niemcy.
CommServer UA w wersji 1.00.20
OPC UA Address Space Model Designer 2.10.00
środa, 28 października 2009
OPC Client .NET (cz.2 Implementacja) [PL]
W poprzedniej części opisałem czynności przygotowawcze, teraz napiszemy trochę kodu :).
Na początku należy dodać referencję do projektu w Visual Studio:
Teraz wskazujemy serwis (wpisując jego adres: http://localhost/CAS.OPCWSDataAccess/OPCAdvancedDataAccess.asmx):
Wpisujemy jeszcze nazwę naszej referencji, klikamy na "Add Reference" i referencja powinna nam się pojawić w naszym Solution:
Teraz wykorzystamy dwie funkcje: GetAvailiableItems (zwracającą dostępne w serwerze elementy) oraz GetValue_OneItem (odczytującą wartość wybranego elementu). Informacje na temat innych wywołań dostępne są tutaj: http://www.commsvr.com/DataPorter/Index.aspx?topic=html/3bddf5c3-5d5a-4569-85db-fcdc52a1b34a.htm. Poniższe dwa rysunki pokazują efekt wykonania tych dwóch funkcji przy pomocy wspomnianej wcześniej strony debugger'a.
GetAvailiableItems:
GetValue_OneItem:
Oczywiście my wywołamy te dwie funkcje z poziomu C#. W tym celu należy najpierw wykonać połączenie: OPCAdvancedDataAccess.OPCAdvancedDataAccess opcDA = new OPCAdvancedDataAccess.OPCAdvancedDataAccess(). Później można pobrać listę elementów jako tablicę stringów: string[] items = opcDA.GetAvailiableItems(). Oraz można pobrać wartość dla jednego z elementów tablicy: OPCAdvancedDataAccess.ItemValue val = opcDA.GetValue_OneItem( items[ 0 ] ).
Ostatecznie kod prostej funkcji nawiązującej połączenie, pobierającej i wyświetlającej listę dostępnych elementów oraz wartość pierwszego dostępnego elementu, wygląda następująco:
static void Main( string[] args )
{
//connecting to remote object
OPCAdvancedDataAccess.OPCAdvancedDataAccess opcDA = new OPCAdvancedDataAccess.OPCAdvancedDataAccess();
// getting availiable item list
string[] items = opcDA.GetAvailiableItems();
//displaing the list
Console.WriteLine("Item List:");
foreach ( string item in items )
Console.WriteLine( item );
//reading a value of the first item (#0)
OPCAdvancedDataAccess.ItemValue val = opcDA.GetValue_OneItem( items[ 0 ] );
Console.WriteLine( "---------------------" );
Console.WriteLine( "Value of item {0}", items[ 0 ] );
Console.WriteLine( "value={0}", val.Value );
Console.WriteLine( "quality={0}", val.Quality.QualityBits );
Console.WriteLine( "timestamp={0}", val.Timestamp );
//waiting for enter
Console.WriteLine( "[Press Enter]" );
Console.ReadLine();
}
I daje w efekcie:
Item List: CAS.CommServer.OPC.Da.Server/Registers/PLC/R/108 CAS.CommServer.OPC.Da.Server/Flags/PLC/F/102 CAS.CommServer.OPC.Da.Server/Generator/PLC/G/000 CAS.CommServer.OPC.Da.Server/Generator/PLC/G/001 CAS.CommServer.OPC.Da.Server/Generator/PLC/G/002 CAS.CommServer.OPC.Da.Server/Flags/PLC/F/101 CAS.CommServer.OPC.Da.Server/Registers/PLC/R/101 CAS.CommServer.OPC.Da.Server/Registers/PLC/R/100 CAS.CommServer.OPC.Da.Server/Flags/PLC/F/105 CAS.CommServer.OPC.Da.Server/Registers/PLC/R/107 CAS.CommServer.OPC.Da.Server/Flags/PLC/F/100 CAS.CommServer.OPC.Da.Server/Flags/PLC/F/109 CAS.CommServer.OPC.Da.Server/Flags/PLC/F/103 CAS.CommServer.OPC.Da.Server/Registers/PLC/R/106 CAS.CommServer.OPC.Da.Server/Registers/PLC/R/104 CAS.CommServer.OPC.Da.Server/Flags/PLC/F/108 CAS.CommServer.OPC.Da.Server/Registers/PLC/R/105 CAS.CommServer.OPC.Da.Server/Flags/PLC/F/106 CAS.CommServer.OPC.Da.Server/Registers/PLC/R/110 CAS.CommServer.OPC.Da.Server/Registers/PLC/R/103 CAS.CommServer.OPC.Da.Server/Registers/PLC/R/109 CAS.CommServer.OPC.Da.Server/Registers/PLC/R/102 CAS.CommServer.OPC.Da.Server/Flags/PLC/F/107 CAS.CommServer.OPC.Da.Server/Flags/PLC/F/104 --------------------- Value of item CAS.CommServer.OPC.Da.Server/Registers/PLC/R/108 value=170 quality=good timestamp=2009-08-12 15:17:04 [Press Enter]
Proste prawda? :)
wtorek, 27 października 2009
OPC Client .NET (część 1. Przygotowania) [PL]
Jakiś czas temu w post'cie pt. "Implementacja klienta OPC w C#" spróbowałem naświetlić podstawowe zagadnienia związane z implementacją klienta OPC na platformie .NET. Nie jest to proste zagadnienie, a do tego poza dobrą znajomością programowania opartego o DCOM należy mieć dostęp do specyfikacji standardu OPC. W tym artykule chciałbym wskazać pewną alternatywę, a mianowicie pokazać jak można dostać się do danych w OPC z poziomu platformy .NET (przykład w C#) bez implementacji pełnego klienta OPC. W tym celu zostanie wykorzystane dodatkowe oprogramowanie: DataPorter, które posiada funkcjonalność klienta OPC oraz zapewnia dostęp do odczytywanych przez niego danych poprzez WebSerwis. W prezentowanym tutaj przykładzie nie zostanie napisany "prawdziwy klient OPC", gdyż zostanie wykorzystane kompletne oprogramowanie klienta, zamierzam natomiast pokazać jak przy pomocy prostego programiku można dostać się do danych z OPC. Niniejszy artykuł może być również ciekawy dla osób, które chcą poznać przykład wykorzystania jakiegoś WebSerwisu z poziomu .NET (oczywiście nie piszę tu o WebSerwisie w rozumieniu serwisów w formie stron internetowych, a o serwisach opartych o SOAP i technologie WS-*)
Oprogramowanie DataPorter jest dostępne w pełni funkcjonalnej wersji demonstracyjnej (ograniczonej czasowo) na stronie: http://www.commsvr.com/DownloadCenter/ProductSoftware/PR2605DataPorter_Software.aspx (wymagana jest darmowa rejestracja). Instalowane jest z domyślną konfiguracją, w której podłącza się one do oprogramowania serwera OPC: CommServer. Opis domyślnej konfiguracji dostępny jest tutaj: http://www.commsvr.com/Products/DataPorterDescription/DataPortersampleconfiguration/tabid/320/language/en-US/Default.aspx. Pokazany w tym artykule przykład używa oprogramowania CommServer, dlatego warto je również zainstalować (jak to zrobić?). Przed przystąpieniem do dalszych ćwiczeń warto, w tym miejscu sprawdzić wspólne działanie CommServer'a i DataPorter'a (w przypadku jakichś problemów polecam odwiedzenie e-manuala DataPorter'a, dostępnego tutaj: http://www.commsvr.com/DataPorter/Index.aspx
Po pomyślnym zweryfikowaniu działania DataPorter'a i CommServer'a należy zainstalować dodatek do DataPorter'a udostępniający WebSerwisy (uwaga wcześniej należy mieć zainstalowany IIS, zintegrowany z platformą .NET 2.0). Dodatek znajduje się w katalogu DataPortera w następującej lokalizacji:
"%programfiles%\CAS\DataPorter\AdditionalSetup\CAS.OPCWSDataAccess\setup.exe"
Po instalacji dodatku i wpisaniu w przeglądarkę internetową adresu: http://localhost/CAS.OPCWSDataAccess/OPCAdvancedDataAccess.asmx, oczom powinien się okazać obraz podobny do poniższego:
Jest to strona generowana w sposób automatyczny przez serwer IIS na podstawie WebSerwisu i umożliwiająca jego debugowanie (uwaga: ta strona dostępna jest tylko na lokalnej maszynie - tzn. tylko na tym komputerze, na którym zainstalowany jest WebSerwis).
Dla takiego WebSerwisu można pobrać i odczytać jego definicję zapisaną w języku WSDL. W tym celu należy do przedstawionego wyżej adresu dopisać "?wsdl" lub kliknąć na odpowiedni odnośnik na wspomnianej autogenerowanej stronie.
W następnej części zaprezentuję jak obsłużyć taki WebSerwis z poziomu C# i .NET, czyli w konsekwencji jak dostać się do danych w OPC.
piątek, 23 października 2009
Visual Studio 2010 Beta 2 Download [PL]
Zgodnie z tym co pisałem wcześniej, Microsoft opublikował publicznie kolejne wersje beta swoich produktów związanych z Visual Studio 2010. Poniżej spis linków (pochodzący z oficjalnej strony poświęconej Visual Studio), wcześniej można obejrzeć filmik na temat instalacji: http://channel9.msdn.com/shows/10-4/10-4-Episode-33-Downloading-and-Installing-Visual-Studio-2010-Beta-2/.
środa, 21 października 2009
Visual Studio 2010 Beta 2 Training Kit już dostępny [PL]
Niedawno pisałem o tym, że pojawiła się kolejna wersja beta Visual Studio 2010, wczoraj doszła kolejna nowość: Microsoft opublikował Visual Studio 2010 and .NET Framework 4 Training Kit - October Preview. Dostępny jest on pod adresem:
Kolejna Beta (2) tego Training Kit'u zawiera 15 prezentacji, 19 hands-on labs i 13 demonstracji. Pokazano tam wiele nowych technologii, włączając w to: C# 4, VB 10, F#, Parallel Extensions, Windows Communication Foundation, Windows Workflow, Windows Presentation Foundation, ASP.NET 4, Entity Framework, ADO.NET Data Services, Managed Extensibility Framework, and Visual Studio Ultimate.
Więcej na temat zawartości pakietu można znaleźć w artykule: "Visual Studio 2010 Beta 2 Training Kit Published"
Google Chrome - pierwsze wrażenia [PL]
Przegląda Google Chrome ma już ponad rok, więc pomimo mojego przyzwyczajenia do Firefox postanowiłem przyjrzeć się jej trochę bliżej.
Nie korzystam jeszcze z niej długo, ale muszę przyznać, że moje pierwsze wrażenia są dość pozytywne. Przeglądarka działa stabilnie i szybko. Ma ciekawy wygląd, którego cechą jest minimalistyczny interfejs, tak aby obszar na którym wyświetlana jest strona był jak największy. Nawet pasek tytułu okna i ramka okna znika po maksymalizacji przeglądarki. Bardzo wygodny jest też zintegrowany z wyszukiwarką pasek adresu - działa on dużo lepiej niż w Firefox
Niestety są też pewne braki: naciśnięcie rolki na myszce nie powoduje otwierania strony "w tle". Na pasku adresu brakuje mi ikonki RSS, która pojawia się jeżeli na stronie znajduje się jakiś kanał, a jej naciśnięcie pozwala na dodanie RSS do wybranego agregatora. Z RSS'ami jest jeszcze jeden problem (chociaż może jest to problem mojego czytnika (RSS Bandit), który nie zintegrował się z Chromem), otworzenie kanału nie powoduje jego automatycznego importu do czytnika. Kolejny problem powodują niektóre edytory na różnych stronach, nie działa np. popularny FCKEditor, czy wykorzystywany edytor na portalu "Dotnetomaniak". Brakuje też mi opcji zaznaczenia fragmentu strony i wyświetlenia źródła zaznaczenia.... ale może już dość tego narzekania. Być może część przytoczonych przeze mnie problemów znika po odpowiedniej konfiguracji, czy zainstalowaniu odpowiedniego dodatku
Na koniec, tym wszystkim, którzy chcieliby przeczytać więcej na temat Chrome (w języku polskim), polecam odwiedzenie bloga:
POLSKI BLOG O PRZEGLĄDARCE GOOGLE CHROME. NOWE WERSJE, PLUGINY, CIEKAWOSTKI.

poniedziałek, 19 października 2009
Visual Studio 2010 Beta 2 nadchodzi [PL]
Czy już wszyscy zainteresowani przetestowali Visual Studio 2010 Beta (1)? Jeśli nie, to może o tamtej wersji zapomnieć i zwrócić uwagę na kolejną opublikowaną betę, która dzisiaj pojawiła się jako dostępna dla subskrybentów MSDN, a 21-go października będzie dostępna dla innych zainteresowanych. Więcej na ten temat znajdziemy w artykule: "Microsoft names Visual Studio 2010 dates". Wiadomo już też kiedy ma nastąpić oficjalna premiera nowego Visual Studio, a będzie to 22-gi marca 2010. Wiadomo też ile będzie kosztować (zainteresowanych odsyłam do wspomnianego artykułu).
Nowa wersja ma zawierać dodatkowe narzędzia wspierające Windows 7 i nadchodzący SharePoint 2010, drag-and-drop bindings w Silverlight i Windows Presentation Foundation, wykorzystanie Dynamic Language Runtime (DLR) do programowania w językach skryptowych i wsparcie dla programowania równoległego (tutaj też proponuję zajrzeć do artykułu). Ciekawe natomiast jak to będzie z wydajnością, na którą wielu do tej pory narzekało? .... pobierzemy, zainstalujemy, zobaczymy ...
Update: linki do downloadu są podane tutaj: http://maciej-progtech.blogspot.com/2009/10/visual-studio-2010-beta-2-download-pl.html
niedziela, 13 września 2009
Jak wykonać build kodu C# .NET przy pomocy linii poleceń systemu Windows [PL]
Zwykle kod kompiluje się i wykonuje build bezpośrednio ze środowiska IDE, czasami jednak zachodzi potrzeba, że chcemy wykonać build poza środowiskiem IDE, np. wykorzystując skrypty linii poleceń systemu Windows. Jak można to zrobić? Są przynajmniej trzy możliwości: kompilator CSC, MSBUILD lub Visual Studio wywołane z linii poleceń.
W tym artykule pokarzę przykładowe wykorzystanie każdej z metod w oparciu o prosty przykład: aplikację typu "Hello World!", o następującym kodzie w pliku Program.cs:
using System;
namespace HelloWorld
{
class Program
{
static void Main( string[] args )
{
Console.WriteLine( "Hello World !" );
}
}
}Solution (HelloWorld.sln) natomiast wygląda następująco:

CSC.EXE
Jest to podstawowy kompilator dla C#, czyli Microsoft (R) Visual C# 2008 Compiler. Jego bezpośrednie wykorzystanie jest możliwe aczkolwiek mało wygodne. To właśnie tego kompilatora używają inne narzędzia do kompilacji kodu. Prosty przykład wskazujący jak można wykorzystać to narzędzie do wytworzenia pliku wykonywalnego na podstawie wspomnianego solution wygląda następująco:
"%Windir%\Microsoft.NET\Framework\v3.5\csc" /out:.\HelloWorld.exe .\HelloWorld\Program.cs
MSBUILD (msbuild.exe)
MSBuild, czyli Microsoft (R) Build Engine jest bardzo wygodnym narzędziem które z wykorzystaniem linii poleceń systemu Windows pozwala na build poszczególnych projektów lub całego solution wytworzonego przy pomocy IDE jakim jest Visual Studio. Wynik działania narzędzia w czytelny sposób prezentowany jest na ekranie konsoli, a dodatkowo dzięki różnym kolorom tekstu można łatwo się zorientować, czy build przeszedł pomyślnie. Prosty przykład wskazujący jak można wykorzystać to narzędzie do wytworzenia pliku wykonywalnego na podstawie wspomnianego solution wygląda następująco:
"%Windir%\Microsoft.NET\Framework\v3.5\msbuild" .\HelloWorld.sln /t:build /p:Configuration=Release
Niestety narzędzie ma też pewne wady, a mianowicie nie wszystkie typy projektów są wspierane, np. to narzędzie nie nadaje się do zrobienia build’u projektu typu "setup".
Visual Studio z linii poleceń (devenv.exe)
Środowisko Visual Studio można również wywołać z linii poleceń (bez uruchamiania interfejsu graficznego). Tą cechę można wykorzystać właśnie do wykonania build’u, np.:
"%VS90COMNTOOLS%\..\IDE\devenv.exe" .\HelloWorld.sln /rebuild Release
Tutaj dużym pozytywem jest fakt , że wpierane są wszystkie typy projektów wspierane przez Visual Studio. Niestety są też wady, a mianowicie dużo trudniej stwierdzić, czy biuld się udał, czy coś poszło nie tak (i dlaczego?) oraz zdarza się (przynajmniej u mnie) że środowisko kończy swoje działanie w wyjątku.
Podsumowując
Na tym prostym przykładzie widać, że mamy kilka możliwości by wykonywać build’a z linii poleceń (np. przy pomocy jakiegoś skryptu). Najwygodniejszym (i polecanym) jest MSBUILD, chociaż w przypadku nie wspieranych przez niego projektów warto wspomagać się wywołaniem Visual Studio (devenv.exe) bezpośrednio z linii poleceń.
wtorek, 8 września 2009
SC.exe, a kontrola serwisów w Windows [PL]
Jakiś czas temu opisywałem jak można przy pomocy platformy .NET utworzyć i zainstalować serwis w systemie Windows. W tamtym przypadku do instalacji bądź deinstalacji serwisów zostały wykorzystane odpowiednie klasy instalacyjne, które wykorzystane są podczas instalacji, bądź deisntalacji całego produktu. Zdarza się jednak, że nie zadziałają one jak należy (np. nie potrafią usunąć serwisu), czasami po prostu nie chcemy uruchamiać instalatora produktu by przetestować nasz serwis lub chcemy jako serwis uruchomić zupełnie inną aplikację (serwis WWW, repozytorium, czy cokolwiek innego).. Czy jest więc możliwość "ręcznego" stworzenia lub usunięcia serwisu?
Okazuje się że TAK.
Można w tym celu wykorzystać narzędzie działające w linii poleceń systemu Windows: sc.exe .
Szczegółowe informacje na temat narzędzia można znaleźć tutaj: http://technet.microsoft.com/en-us/library/cc754599%28WS.10%29.aspx. Jak widać lista opcji jest dość spora. Ja w tym artykule chciałbym się skupić się na sposobie instalacji i usunięcia serwisu w systemie Windows
Instalacja serwisu Windows
W celu instalacji serwisu wykorzystujemy polecenie sc create o następującej składni:
sc [<ServerName>] create [<ServiceName>]
[type= {own | share | kernel | filesys | rec | interact type= {own | share}}]
[start= {boot | system | auto | demand | disabled}] [error= {normal | severe | critical | ignore}]
[binpath= <BinaryPathName>] [group= <LoadOrderGroup>]
[tag= {yes | no}] [depend= <dependencies>]
[obj= {<AccountName> | <ObjectName>}]
[displayname= <DisplayName>] [password= <Password>]w najczęstszym przypadku będzie to:
sc create MojaNazwaSerwisu binpath="Sciezka_do_pliku_wykonywalnego_serwisu_razem_z_ew_argumentami"
Usuwanie serwisu Windows
W celu usunięcia serwisu wykorzystujemy polecenie sc delete o następującej składni:
sc [<ServerName>] delete [<ServiceName>]
w najczęstszym przypadku będzie to:
sc delete MojaNazwaSerwisu
poniedziałek, 10 sierpnia 2009
Jak wypakować zawartość pliku MSI? [PL]
Czy zdarzyło wam się, że trzeba było zajrzeć co zawiera instalator typu MSI, bez instalowania danego produktu? Mnie tak, a rozwiązanie okazało się bardzo proste. Wiem że to co za chwilę napiszę znajduje się na innych blogach, ale aby ułatwić moim czytelnikom (i sobie ;) ) możliwość skorzystania z tego sposobu, postanowiłem podać tą receptę również na tym blogu.
Do wypakowania plików zawartych w pliku .msi wystarczy w linii komend wpisać:
msiexec /a Path_to_MSI_file /qb TARGETDIR=Extraction_directory
Na przykład, gdy chcemy wypakować pliki z c:\myinstaller.msi do katalogu c:\myinstaller_content (katalog musi istnieć przed wykonaniem komendy), należy wpisać:
msiexec /a c:\myinstaller.msi /qb TARGETDIR=c:\myinstaller_content
Proste prawda?
P.S. wiem że są również inne narzędzia np. Less MSIérables, ale ponieważ to proste rozwiązanie wykonuje akurat to, co potrzebuję, więc po co sięgać po bardziej skompilowane rozwiązania?



















