oprócz MikeBazs Odpowiedź, chciałbym podać następujące „Obejście” co sprawia, że instalacja Click-Po-Application „non-interactive” i „prawie milczy” (użytkownik widzi postępy -window podczas instalacji, nie wymaga kliknięcia i/lub możliwe)
Istnieje kilka „Zagadnienia” do rozważenia, ale jeśli po tej instrukcji, wynik powinien być co trzeba:
1.) Podpisz swoją aplikację: W Visual Studio możesz z łatwością podpisać swoją aplikację za pomocą własnego certyfikatu, który nie jest duży sprawa.
2.) Rozłóż certyfikat: W celu uniknięcia okno, czy należy zainstalować aplikację, trzeba rozpowszechniać swój certyfikat do następujących sklepach na dowolnym komputerze (Użyj do tego GPO): Trusted Publishers
i Trusted Root Certification Authorities
Teraz użytkownicy mogą zainstalować aplikację za pomocą jednego kliknięcia - bez pytania bezpieczeństwa. Ale chcemy Zero kliknie:
3.) Utwórz skrypt powershell, znajduje się na serwerze, który wywołuje setup.exe swojej aplikacji:
if (-not (Test-Path env:APPInstalled)){
Start-Process "\\server\share\Application\setup.exe"
# Set Flag for "Installed"
[Environment]::SetEnvironmentVariable("APPInstalled", "1", "User")
}
użyłem zmiennej o nazwie User-Environment APPInstalled
aby ustalić, czy aplikacja wymaga instalacji.
Teraz użytkownicy mogą wykonywać ten skrypt, uzyskując tylko jedną instalację bez konieczności dalszego potwierdzania. Jednak aplikacja rozpoczyna się po instalacji.
4.) Zmodyfikuj kod źródłowy swojej aplikacji: Użyłem fałszywego pliku do wykrycia firstrun aplikacji. Jeśli jest to FIRSTRUN (tj zaraz po instalacji) po prostu go wyłączyć ponownie:
private void Form1_Load(object sender, EventArgs e)
{
//first run? That's a initial deployment, close application.
if (!File.Exists("C:\\some\\static\\path\\notfirstrun.dat"))
{
File.WriteAllText("C:\\some\\static\\path\\notfirstrun.dat", "1");
Application.Exit();
}
Teraz użytkownicy mogą wykonać thaht skrypt, tylko coraz instalację raz bez dalszego potwierdzenia wymaganego i aplikacja nie "Auto-start" po konfiguracji.
Ale chcemy uniknąć „click”, a także:
Jeśli konfiguracja skryptu PowerShell w startup-Folder - to pojawia się, co jest brzydkie. Jeśli ustawimy go jako Login-Script, nie działa on w kontekście użytkownika, który jest wymagany dla Click-Once.
Jako obejście tego "problemu", można zawinąć go w skrypcie vbs
, wywołując skrypt powershella.Zauważ, że ten jest wykonywany w kontekście użytkownika, dzięki czemu użytkownik potrzebuje uprawnień do wykonywania PowerShell skrypty:
Dim objShell
Set objShell=CreateObject("WScript.Shell")
strCMD="powershell.exe -sta -noProfile -NonInteractive -nologo -ExecutionPolicy Bypass -f \\server\share\scripts\install_App.ps1"
objShell.Run strCMD,0,True
Wreszcie pomocą GPO stworzyć „zadania” w „Task-Scheduler”, który prowadzi vbs
-script 30 sekund po zalogowaniu, tylko jeśli użytkownik jest zalogowany.
Wszyscy użytkownicy zobaczą "postęp instalacji".
W skrócie:
- Wpisz kod
- rozpowszechniać certyfikat
- spust instalacja ze skryptu PowerShell
- oblewania że PowerShell skryptu wewnątrz inivisible skrypt VBS
- wdrożyć skrypt vbs do każdego komputera, za pomocą harmonogramu zadań, aby upewnić się, że działa w kontekście użytkowników.
Dzięki Robin, to właśnie to pokazują moje badania. To jest rzeczywiście pakiet, który ma zostać wdrożony w moim środowisku korporacyjnym. To jest coś, co chcę, aby moi pracownicy działali przez cały czas, więc preferowana była cicha instalacja. – Joe
Cicha instalacja jest również pomocna dla administratorów sieci do napisania skryptu, który ma zostać wdrożony dla użytkowników. – Mike
To nie jest sprawiedliwe dla -1 mojej odpowiedzi, gdy jest dokładna, tylko dlatego, że nie podoba ci się odpowiedź. – RobinDotNet