Pułapki / gotchas ClickOnce/Smart-Client deployment in.NET [zamknięte]

Mam kilka aplikacji.Net Windows Forms, które przygotowuję do konwersji na scenariusz wdrożenia ClickOnce/smart-client. Czytałem samouczki, ale czy są pułapki lub "gotchas", których powinienem być świadomy?

Jest kilka pomniejszych aplikacji używanych off and on, ale główna aplikacja jest w C#, działa 24/7, jest dość duża, ale zmienia się tylko co kilka tygodni. Zapisuje również do pliku dziennika lokalnie i rozmawia z lokalnym sprzętem urządzenia.

Author: Peter Mortensen, 2008-09-29

11 answers

Oto kilka, o których wiem.

  1. nie można umieścić ikony na pulpicie.Teraz możesz.

  2. Nie mogę zainstalować dla wszystkich użytkowników.

  3. Muszę przeskoczyć przez obręcze, aby przenieść wdrożenie na inny serwer. Nie stanowi to problemu, jeśli rozwijasz się wewnętrznie, a użytkownicy mogą zobaczyć serwer, na którym publikujesz lub wdrażasz go w publicznej sieci, ale nie jest to świetne, jeśli musisz wdrożyć się do wielu witryn klientów niezależnie.

  4. Od . NET 3.5 SP1 nie musisz już podpisywać manifestu wdrażania, co znacznie ułatwia przenoszenie wdrożeń na nowe serwery.

  5. Nie mogę zainstalować zestawów w GAC. Możesz to obejść, tworząc zwykłe pakiety instalacyjne, które są warunkiem wstępnym aplikacji ClickOnce.

 12
Author: Darrel Miller,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-03 21:34:15
  • po wdrożeniu aktualizacji wbudowane okno dialogowe sprawi, że będzie to wyglądało tak, jakby cała aplikacja była ponownie pobierana. W rzeczywistości pobierane są tylko zmienione biblioteki dll,a wyświetlany pasek postępu wprowadza w błąd / jest błędny. Nie trać czasu, próbując dowiedzieć się, dlaczego wszystkie zespoły są ponownie rozmieszczone, tylko po to, aby odkryć, że tak naprawdę nie są.
  • gdy certyfikat użyty do podpisania oryginalnego manifestu wdrożenia wygaśnie i otrzymujesz nowy, jesteś w świecie bólu(klienci będą musieli odinstalować i ponownie zainstalować). Szczegóły znajdują się w paszczy konia .
 9
Author: Nicholas Piasecki,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-05 20:39:37

Większość problemów została rozwiązana, ale kilka osób wspomniało, że nie można utworzyć skrótu na pulpicie. W rzeczywistości, ty Można utworzyć skrót na pulpicie za pomocą programu Visual Studio 2008 SP1 .

Ponadto, jeśli nie używasz najnowszej wersji Visual Studio, zawsze możesz napisać kod, aby utworzyć skrót do zainstalowanego skrótu menu start .

 7
Author: codeConcussion,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:08:35

Mieliśmy aplikację, którą zamierzaliśmy wdrożyć jako aplikację ClickOnce. Potrzebowaliśmy, aby użytkownik mógł modyfikować niektóre ustawienia w instalacji(takie jak ścieżka wdrażania - chce obsługiwać pliki z ich udziału sieciowego, nieznanego w czasie kompilacji). Po zmianie dowolnego pliku we wdrożeniu należy ponownie obliczyć wszystkie skróty i podpisać wszystko ponownie. Tak więc, jeśli to rozwiązanie jest wewnętrzne, możesz nie mieć problemów z przekazaniem certyfikatu podpisywania, ale jeśli jest to dla klientów, Możesz będzie musiał zaprojektować wymyślne rozwiązanie, aby ominąć ten problem.

Słyszałem dudnienie gdzieś w trzewiach Internetu, że przyszła wersja ClickOnce usunie trochę tego bólu głowy.

 6
Author: Chris Marasti-Georg,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-09-29 17:23:02

Nie można po cichu odinstalować aplikacji ClickOnce. Również myślę, że nie można dodać parametrów do skrótu startowego.

 4
Author: sindre j,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2008-11-28 08:25:32

Jedną z pułapek z ClickOnce jest fakt, że nie można zainstalować na GAC . Jest to problem, jeśli chcesz zainstalować wiele aplikacji, które udostępniają pliki DLL. Każda aplikacja wymaga lokalnej kopii plików DLL. Ponadto wiele instalacji użytkowników jest niedostępnych. Zobacz listę porównującą Instalator okien do ClickOnce.

 4
Author: MagicKat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-03 21:35:48

Nie wiedziałem, że SP1 pozwala na tworzenie ikony pulpitu. Oto jak to zrobiliśmy (teraz znany jako "the hard way"):

            try
        {
            string company = string.Empty;
            string product = string.Empty;
            if (Attribute.IsDefined(asm, typeof(AssemblyCompanyAttribute)))
            {
                AssemblyCompanyAttribute asCompany = (AssemblyCompanyAttribute)Attribute.GetCustomAttribute(asm, typeof(AssemblyCompanyAttribute));
                company = asCompany.Company;
            }
            if (Attribute.IsDefined(asm, typeof(AssemblyProductAttribute)))
            {
                AssemblyProductAttribute asProduct = (AssemblyProductAttribute)Attribute.GetCustomAttribute(asm, typeof(AssemblyProductAttribute));
                product = asProduct.Product;
            }
            if (!string.IsNullOrEmpty(company) && !string.IsNullOrEmpty(product))
            {
                string desktopPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Desktop),
                    product + ".appref-ms");
                string shortcutPath = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.Programs),
                    Path.Combine(company, product + ".appref-ms"));
                File.Copy(shortcutPath, desktopPath, true);
            }
        }
        catch 
        {
            // Shortcut could not be created
        }
 3
Author: Jamie Ide,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-02-12 16:08:36

W przypadku, gdy ktoś odnosi się do tego w poszukiwaniu, znaleźliśmy wielu klientów zaniepokojonych brakiem bezpieczeństwa "dystrybucji" ich aplikacji. Aplikacja musi być dostępna w miejscu publicznym-bez żadnego uwierzytelniania - aby mogła sprawdzać dostępność aktualizacji. Jedynym wyjątkiem jest uwierzytelnianie systemu Windows NT. Myślę, że zabezpieczanie aplikacji ClickOnce to wyjaśnia, co mam na myśli.

Ikony pulpitu są dość trywialne do zrobienia za pomocą kodu i jak wspomniano, z 3.5 SP1, więc to już nie problem.

Nadal istnieje Nie Naprawiony błąd z xmlserializerem - w niektórych przypadkach nie jest on poprawnie wdrożony. Łatwym obejściem jest ręczne dodanie tego pliku do wdrożenia. PITA, ale to dość łatwe... To może być szokujące, gdy wdrożenie nagle zawiedzie...

 3
Author: aSkywalker,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-25 20:40:55

Istnieje wiele rzeczy, których nie możesz zrobić z aplikacjami ClickOnce, takich jak zainstalowanie skrótu na pulpicie użytkownika lub określenie miejsca instalacji aplikacji. Dla niektórych są to osoby rozwiązujące umowy.

Również minęło trochę czasu od kiedy go używałem, ale jest specjalny sposób, który możesz użyć, aby dowiedzieć się i wyświetlić numer wersji/kompilacji ClickOnce, który jest oddzielny od numeru wersji/kompilacji aplikacji. Trzeba spróbować / złapać i jeśli kliknąć numer wersji / kompilacji rzuca wyjątek, wtedy aplikacja nie jest uruchomiona jako aplikacja ClickOnce wdrożona (to znaczy jest uruchomiona jako regularnie skompilowana aplikacja lub z Visual Studio).

Dla aplikacji, która jest prosta (to znaczy nie Microsoft Word , ale raczej szybka i brudna aplikacja do zrobienia czegoś) i wymaga dużo regularnego wdrażania, ClickOnce jest świetny. Ale dość szybko trafiasz w ścianę "och, tego nie da się zrobić klikając, proszę wybrać MSI lub coś innego).

 3
Author: Tom Kidd,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-05 20:36:30

Będziesz miał mniejszy dostęp do systemu niż normalna aplikacja. NET.

To dlatego, że dostaniesz niższy poziom zaufania. Więcej o tym w . NET Framework Developer ' s Guide: ClickOnce Deployment and Security.

Moim największym problemem było to, że nie można zaszyfrować sekcji pliku konfiguracyjnego za pomocą klucza maszynowego, ponieważ nie masz dostępu do tego klucza(jeśli się nad tym zastanowić, warto go chronić).

 3
Author: Davy Landman,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-07-05 20:37:36

Nie można zainstalować, jeśli klient znajduje się za serwerem proxy wymagającym uwierzytelnienia.

 1
Author: Nik,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-12-03 21:38:18