/ / Dostosowywanie instalatora ClickOnce - clickonce

Dostosowywanie instalatora ClickOnce - clickonce

Potrzebuję akcji posta na instalatorze ClickOnce, którypowinno być wykonane po tym, jak pliki aplikacji są przechowywane po stronie klienta, ale przed pierwszym uruchomieniem aplikacji, w szczególności chciałbym zaszyfrować sekcje pliku konfiguracyjnego.

Z tego, co udało mi się znaleźć, można dodaćklasa zawierająca metody InPlaceHostingManager i używa jej później do jawnej instalacji / aktualizacji, ale jak można zastąpić domyślny instalator ClickOnce, aby wywoływał niestandardowy kod?

Chciałbym emulować zachowanie starożytnego projektu instalacji, który wywołuje metodę Install dowolnego uczestnika System.Configuration.Install.Installer podłączonego do projektu.

Dzięki.

Odpowiedzi:

1 dla odpowiedzi № 1

Nie wierzę, że jest to możliwe dzięki ClickOnce.

Jak widzę, niektóre z twoich opcji obejmują:

  1. Wracam do instalatora MSI
  2. Kodowanie plików konfiguracyjnych jako etap przed / po kompilacji na maszynie programistycznej / wdrożeniowej powoduje wdrożenie wersji w pełni zakodowanej
  3. Kodowanie plików konfiguracyjnych pierwszy bieg aplikacji (jeśli znajdziesz sposób, aby upewnić się, że nie są zablokowane)

Wspomniałeś również o InPlaceHostingManager. Wydaje mi się, że jest to sposób na hosting struktury instalacji ClickOnce (a nie na przykład za pośrednictwem IE) .Może to umożliwić utworzenie niestandardowej aplikacji instalacyjnej do hostowania instalacji i uruchamiania kroków poinstalacyjnych, ale Problem polega na tym, że nadal musisz zainstalować niestandardową aplikację instalacyjną (i uruchomić ją jako użytkownik z prawami instalacji) ...


1 dla odpowiedzi nr 2

Dlaczego nie możesz najpierw kodować plików, gdy aplikacja działa, zanim zrobi cokolwiek innego? Czy to naprawdę za późno?

Możesz użyć InPlace Hosting Manager do aktualizacjiaplikacja clickonce. Możesz go użyć do zainstalowania, jedynym problemem jest to, że musisz wcześniej zainstalować system .NET Framework lub napisać mały plik exe w C, który sprawdzi to (nie będzie zarządzany kod).

Zobacz, czy to ci pomoże: http://msdn.microsoft.com/en-us/library/dd997001(v=VS.100).aspx


0 dla odpowiedzi № 3

Możesz użyć Pierwszy bieg.

Przestrzeń nazw: System.Deployment.Application

montaż: System.Deployment (w System.Deployment.dll)

Metoda wywoła pierwsze okno.

private void DownloadFileGroupSync(string fileGroup)
{
if (ApplicationDeployment.IsNetworkDeployed)
{
ApplicationDeployment deployment = ApplicationDeployment.CurrentDeployment;

if (deployment.IsFirstRun)
{
try
{
if (deployment.IsFileGroupDownloaded(fileGroup))
{
deployment.DownloadFileGroup(fileGroup);
}
}
catch (InvalidOperationException ioe)
{
MessageBox.Show("This application is not a ClickOnce application. Error: " + ioe.Message);
return;
}

downloadStatus.Text = String.Format("Download of file group {0} complete.", fileGroup);
}
}
}