2012-12-07 6 views
6

Używam Inno Setup do instalowania aktualizacji łatek dla mojej aplikacji VB.net, w której muszę zastąpić plik DLL i kilka plików javascript/html dla aktualizacja. Jednak biblioteka DLL nie jest aktualizowana (znajduje się w C: \ programach ...) - nawet w systemach XP bez UAC nie jest zastępowana, ale kiedy ręcznie usuwam bibliotekę DLL i ponownie uruchamiam poprawkę, plik zostaje skopiowany . To nie jest tylko do odczytu i nie ma przywileju UAC/administratora w przypadku XP.Konieczność nadpisania biblioteki DLL w instalatorze instalacyjnym inno - ale plik nie zostanie zastąpiony

Jaki może być powód, dla którego plik nie zostanie skopiowany, jeśli plik już istnieje? Jest zbudowany w VS2008 oraz w .NET 2.0 - nowa biblioteka DLL ma również bardziej aktualną różnicę w zakresie daty i rozmiaru.

Czy istnieje sposób na obejście problemu z dostępem do zapisu UAC w systemie Vista/Win7/8? Myślę, że łatka nigdy nie zastąpiłaby pliku w tych systemach UAC na. Powiedzenie naszej bazie użytkowników, aby ją wyłączyć, nie jest oczywiście opcją.

[EDYCJA] Zespół biblioteki dll jest pakowany do pliku setup.exe w programie Visual Studio, pobierając go z folderu Release podczas tworzenia rozwiązania. Konfiguracja inno jest sekcja [Plik] ma to:

[Files] 
Source: C:\Visual Studio 2005\Projects\Setup5\Setup5\Debug\setup.exe; DestDir: {app} 
Source: C:\Visual Studio 2005\Projects\Setup5\Setup5\Debug\interact.msi; DestDir: {app} 
[Run] 
Filename: {app}\setup.exe; Flags: runmaximized 
+0

Czy mógłbyś pokazać swój wpis w sekcji '[Files]' dla tej biblioteki? Co rozumiesz przez * "Czy istnieje sposób na obejście problemu z dostępem do zapisu UAC na Vista/Win7/8?" *, O czym myślisz? – TLama

+0

Idealnie chcę, aby aktualizacja łatki wydarzyła się bez jakiejkolwiek interakcji z człowiekiem - tj. Nie mogę ich kliknąć na okno dialogowe z prośbą o uprawnienia administratora (UAC?), Gdy próbuję przenieść lub usunąć pliki, takie jak DLL. – Surge

+0

Jeśli zamierzasz aktualizować/instalować pliki w katalogu "Program Files" w systemie Windows Vista, musisz po prostu poprosić o uprawnienia administratora, w przeciwnym razie nie uda się odmówić dostępu i w tym przypadku nie powinieneś jawnie określać wartość dyrektywy ['PrivilegesRequired'] (http://jrsoftware.org/ishelp/topic_setup_privilegesrequired.htm) (domyślnie wymaga uprawnień administratora). – TLama

Odpowiedz

7

Czy biblioteka DLL ma zasobu wersji? Czy nowa biblioteka DLL jest starszą wersją niż stara? Domyślnie InnoSetup używa zasobu wersji, aby określić, czy plik powinien zostać zastąpiony.
Inną opcją jest możliwość dodania flagi ignoreversion w sekcji [Files], aby zawsze zastępować ten plik.

+0

Z tego, co widzę, biblioteka DLL w instalacji programu Visual Studio nie ma zasobu wersji. Dzięki! – Surge

+1

Po prostu ciekawy, dlaczego budujesz rozwiązanie instalacji Visual Studio, a następnie włączając je w instalację InnoSetup? Dlaczego po prostu dołączyć bibliotekę DLL bezpośrednio w instalacji InnoSetup lub po prostu użyć Instalatora Visual Studio? – mirtheil

+0

Dzięki za wskazówki - zostało to opracowane przez firmę zewnętrzną i próbuję rozwiązać problemy z produkcją. – Surge

Powiązane problemy