Usuniecie pliku bazy danych uzywanej w programie

0

Witam. Mam problem z usunięciem pliku bazodanowego, który pracuje z programem i za pomocą którego chcę go usunąć. Program rzuca wyjątkiem, że plik jest w użyciu pomimo, że zamknalem wszystkie połączenia z bazą. Jeśli ma to jakieś znaczenie to jest to baza sqlite. Wie ktoś jak usunąć ten plik gdy program jeszcze działa?

1

Skoro tak się dzieje, to zapewne nie zamknąłeś wszystkich połączeń lub uchwytów do plików. Sprawdź Unlockerem, co go trzyma.

0

Jak użyć tego unlockera? Nie mogę nic znaleźć na jego temat.

//choć problem już rozwiązany to chętnie na przyszłość nauczę się używać tego "unlockera" w c#
nie wiem dlaczego teraz zadziałało ale wczoraj tak samo robiłem i program dalej rzucał wyjątkiem że plik w użyciu dziś już nie. Nie wiem dlaczego.
Rozwiązaniem było oczywiście zamknięcie połączeń z bazą. Nic więcej. Nie rozumiem do końca dlaczego wczoraj nie działało a teraz działa...

Edit:
Też nie wiem jak zabrać się do podmiany głównego pliku .exe programu. Np mój program wykryje aktualizacje pobierze ją ale jak ten pobrany plik podmienić skoro program jest uruchomiony? Gdy go zamknę to przecież samo się nie podmieni :/

1

Unlocker: http://www.programosy.pl/program,unlocker.html

UnlimitedPL napisał(a):

Też nie wiem jak zabrać się do podmiany głównego pliku .exe programu. Np mój program wykryje aktualizacje pobierze ją ale jak ten pobrany plik podmienić skoro program jest uruchomiony? Gdy go zamknę to przecież samo się nie podmieni :/

Musisz mieć drugi program - aktualizator, który podmieni Twój właściwy program

1
somekind napisał(a):

Musisz mieć drugi program - aktualizator, który podmieni Twój właściwy program

I do tego zwiększoną autoryzację jeśli EXE leży w Program Files i pracujemy w Windows 7/8.

1

Też nie wiem jak zabrać się do podmiany głównego pliku .exe programu. Np mój program wykryje aktualizacje pobierze ją ale jak ten pobrany plik podmienić skoro program jest uruchomiony? Gdy go zamknę to przecież samo się nie podmieni :/

Musisz mieć drugi program - aktualizator, który podmieni Twój właściwy program

Tak się przyjęło, ale nie trzeba. Faktycznie nie można usunąć uruchomionego pliku .exe, ale można go.. przesunąć. Co więcej, Windows udostępnia mechanizm "usuń plik, gdy będzie to możliwe".

  1. Przesuwamy plik do jakiegoś tempa.
  2. Wywołujemy MoveFileEx z flagą MOVEFILE_DELAY_UNTIL_REBOOT oraz nową nazwą jako NULL.

I do tego zwiększoną autoryzację jeśli EXE leży w Program Files i pracujemy w Windows 7/8.

Najbardziej "kanonicznym" sposobem będzie użycie odpowiednio przygotowanej poprawki Windows Installer, do której użycia nie będzie potrzebne konto administratora, ale mimo wszystko system nada jej odpowiednie uprawnienia.
http://msdn.microsoft.com/en-us/library/windows/desktop/aa372388%28v=vs.85%29.aspx

Szczerze mówiąc nie wiem dlaczego prawie nikt z tego nie korzysta.

1 użytkowników online, w tym zalogowanych: 0, gości: 1