Skocz do zawartości

Instalacja Sello przez PowerShell

Polecane posty

Dziękuję.

Wklejam gotowy skrypt PowerShell. Może ktoś tak jak ja musi aktualizować prawie 50 stanowisk.

New-Item -Path c:\update -ItemType directory
$WebClient = New-Object System.Net.WebClient
$WebClient.DownloadFile("http://ftp.insert.com.pl/pub/aktualizacje/Sello/Sello_1_29_0.exe","C:\update\Sello_1_29_0.exe")
c:\update\Sello_1_29_0.exe /extract_all:c:\update\
Start-Process -FilePath "C:\update\Disk1\Sello\setup.exe" -Verb runAs -ArgumentList '/s','/v"/qn"'

I czyszczenie:

Remove-item -Path c:\update -Force -Recurse

 

  • Dziękuję 2
Link to postu
  • 1 rok później...
  • 5 miesięcy temu...

Gdzie mogę sprawdzić argumenty instalatora Sello? co znaczy /s /v /qn ? Czy da się je zastosować poza powershellem np. w zwykłym cmd?

Czy da się uzyskać efekt extract_all bez powershella? Jakaś inna metoda? Probowałem rozpakować programem 7zip ale inne pliki wyszyły z tego.

Jak uruchomić ten skrypt Power Shella na komputerach klienckich?

Jest jakaś inna metoda na instalowanie Sello na komputerach klienckich z jakiegoś skryptu (automatu) ?

Edytowane przez maniootek •
Link to postu

Sprawdź parametry InstalShield. Myślę, że nie ma przeciwwskazań aby zrobić to bez powershella. Extract_all to jest raczej parametr instalatora, nie ma (chyba) związku z powershellem.

Komputery klienckie nie mają Power Shella? W Windows 10 jest chyba wbudowany a w starszych systemach można go doinstalować.

 

Link to postu
  • 3 lata później...

Trochę rozgryzłem problem. Jeśli chodzi o listę argumentów dla setup.exe to wygląda to tak:
2024-10-1710_59_16-Sello1_44.0-InstallShieldWizard.jpg.8db93adf1358cd4b75f22ec4ff6950e6.jpg2024-10-1711_03_53-InsERTGT1.75SP1-InstallShieldWizard.jpg.548f94cd043c128c7f029cc6bebf3792.jpg

Okazuje się, że instalacja Subiekt GT w trybie silent odbywa się tak samo jak dla Sello.

Nie udało mi się tylko rozgryźć jak instalować konkretne pakiety (np. wykluczyć Kasiarza itp)

Poniżej przedstawiam kod skryptu w PowerShell dla automatycznej instalacji Sello oraz SubiektGT (silent mode):

<#
	W celu uruchomienia skryptu w Windows, klikamy START, wpisujemy ISE i na znalezionym programie o nazwie "Windows PowerShell ISE" klikamy prawym przyciskiem myszy i wybieramy "Uruchom jako administrator".
	Uwaga! Domyślnie wykonywanie skryptów PowerShell jest zablokowane. W celu tymczasowego odblokowania wykonywania skryptów należy w osobnej zakładce wykonać poniższy kod:
	Set-ExecutionPolicy Bypass -Scope Process
	Potem możemy już wkleić cały ten kod i uruchomić. Pobierze i zainstaluje się Sello i Subiekt GT (linki w zmiennej DownloadUrl można zmienić na inne wersje)
#>

#Definiowanie folderu tymczasowego (tam zostanie pobrany plik instalacyjny z internetu i zostanie tam rozpakowany)
$TempInstallFolder = "C:\_TempInstallFolder"

# Definiowanie programów do instalacji (nazwa i link, w celu pobrania innej wersji wystarczy z linku skasować nazwę pliku i wyświetli się cała lista dostępnych instalatorów różnych wersji)
$Programs = @(
    @{
        Name = "Sello"
        DownloadUrl = "http://ftp.insert.com.pl/pub/aktualizacje/Sello/Sello_1_44_0.exe"
    },
    @{
        Name = "SubiektGT"
        DownloadUrl = "https://ftp.insert.com.pl/pub/aktualizacje/InsERT_GT/InsERT_GT_1_75_SP1.exe"
    }
)

# Sprawdzanie, czy PowerShell jest uruchomiony z uprawnieniami administratora
$isAdmin = ([Security.Principal.WindowsPrincipal] [Security.Principal.WindowsIdentity]::GetCurrent()).IsInRole([Security.Principal.WindowsBuiltInRole]::Administrator)

if ($isAdmin) {
    Write-Host "PowerShell uruchomiony z uprawnieniami administratora."
} else {
    Write-Host "PowerShell nie uruchomiony z uprawnieniami administratora. Uruchom skrypt ponownie jako administrator."
    Exit 1
}

# Funkcja pobierająca i instalująca program
function Install-Program {
    param (
		[string]$ProgramName,
        [string]$DownloadUrl
    )

	# Wyciąganie nazwy pliku z linku
    $DownloadFileName = [System.IO.Path]::GetFileName($DownloadUrl)
	#$DownloadFileName = Split-Path $DownloadUrl -Leaf
	
	$TempProgramFolderPath = "$TempInstallFolder\$ProgramName"
    $DownloadFilePath = "$TempProgramFolderPath\$DownloadFileName"
	
    # Tworzenie folderu tymczasowego, jeśli nie istnieje
    New-Item -Path $TempProgramFolderPath -ItemType directory -Force

    # Sprawdzanie, czy plik został już pobrany
    if (-not (Test-Path $DownloadFilePath)) {
        Write-Host "Pobieranie pliku instalacyjnego..."
        try {
			Invoke-WebRequest -Uri $DownloadUrl -OutFile $DownloadFilePath

            Write-Host "Pobieranie zakończone pomyślnie."
        } catch {
            Write-Host "Błąd podczas pobierania pliku: $_"
            Exit 1
        }
    } else {
        Write-Host "Plik już istnieje, pomijam pobieranie. $DownloadFilePath"
    }

    # Sprawdzanie, czy plik instalatora istnieje przed uruchomieniem
    if (Test-Path $DownloadFilePath) {
        Write-Host "Wypakowywanie instalatora..."
        try {
			Start-Process -FilePath $DownloadFilePath -ArgumentList "/extract_all:$TempProgramFolderPath" -Wait
            #& $DownloadFilePath "/extract_all:$TempProgramFolderPath" -Wait
            Write-Host "Wypakowano pliki."
        } catch {
            Write-Host "Błąd podczas wypakowywania instalatora: $_"
            Exit 1
        }
    } else {
        Write-Host "Plik instalatora nie istnieje. $DownloadFilePath"
        Exit 1
    }

	# Wyszukiwanie setup.exe w wypakowanych plikach
	$setupFile = Get-ChildItem -Path $TempProgramFolderPath -Filter "setup.exe" -Recurse | Select-Object -First 1

	if ($setupFile) {
		# Uruchomienie setup.exe i czekanie na zakończenie instalacji
        Write-Host "Instalowanie programu $ProgramName..."
		Start-Process -FilePath $setupFile.FullName -ArgumentList '/s', '/v"/qn"' -Wait
		Write-Host "$($setupFile.FullName) installation complete."
	} else {
		Write-Host "setup.exe nie znaleziono w $TempProgramFolderPath"
	}

    # Czyszczenie plików tymczasowych
    Write-Host "Czyszczenie plików tymczasowych..."
    try {
        Remove-Item -Path $TempProgramFolderPath -Recurse -Force
        Write-Host "Pliki tymczasowe zostały usunięte."
    } catch {
        Write-Host "Błąd podczas usuwania plików tymczasowych: $_"
    }

}

# Instalacja każdego z programów po kolei
foreach ($program in $Programs) {
    Write-Host "Rozpoczęto przetwarzanie programu $($program.Name)..."
    Install-Program `
		-ProgramName $program.Name `
        -DownloadUrl $program.DownloadUrl
    Write-Host "Zakończono przetwarzanie programu $($program.Name)."
    Remove-Item -Path $TempInstallFolder -Recurse -Force
}

 

Edytowane przez Mamut Maniek
  • Lubię to 1
Link to postu

Dołącz do dyskusji

Możesz dodać zawartość już teraz a zarejestrować się później. Jeśli posiadasz już konto, zaloguj się aby dodać zawartość za jego pomocą.
Uwaga: Twój wpis zanim będzie widoczny, będzie wymagał zatwierdzenia moderatora.

Użytkownik forum
Odpowiedz...

×   Wklejono zawartość z formatowaniem.   Usuń formatowanie

  Dozwolonych jest tylko 75 emoji.

×   Odnośnik został automatycznie osadzony.   Przywróć wyświetlanie jako odnośnik

×   Przywrócono poprzednią zawartość.   Wyczyść edytor

×   Nie możesz bezpośrednio wkleić grafiki. Dodaj lub załącz grafiki z adresu URL.

×
×
  • Dodaj nową pozycję...