Skip to content

Instantly share code, notes, and snippets.

@Winding6636
Last active June 29, 2018 22:25
Show Gist options
  • Save Winding6636/d2f7c2edcbcc90c5f6446f95c1475b4e to your computer and use it in GitHub Desktop.
Save Winding6636/d2f7c2edcbcc90c5f6446f95c1475b4e to your computer and use it in GitHub Desktop.
TheDeskript.ps1
###########################################################
#
# TheDesk Auto Update Script's
#
# Auther: NekotenYuuna
# Date:Ver.1 rev.52
#
# Copyright© Sys-in,Kazuki All Rights Reserved.
###########################################################
#ここからが本当の勝負
#①スクリプトを有効にする。
#Set-ExecutionPolicy RemoteSigned
[String]$Script:DebugLog = "debug.log"
$TheDeskDir="TheDesk-win32-x64"
$InstallPath="" #TheDeskDirがあるディレクトリ
$Script:InstallDir = $InstallPath+$TheDeskDir
$Script:WgetAdd = "https://dl.thedesk.top/TheDesk-win32-x64.zip"
$Script:LatestZip = "TheDeskLatest.zip"
function main(){
if ( $Script:Mode -eq "ALL") {
#.:. 環境チェック .:.
CheckEnviroment
#.:. 設定確認 .:.
ConfCheck
#.:. ダウンロード .:.
LatestDownload
#.:. 更新 .:.
ApplyUpdate
#.:. 事後処理 .:.
epProcess
}
}
function CheckEnviroment(){
#!OS
$OsVersion = Get-WmiObject Win32_OperatingSystem
Write-Host "";EchoLog "INFO" "#Operating System Infomation#"
EchoLog "INFO" ("|-NameEdition:" + $OsVersion.Caption)
EchoLog "INFO" ("|-Versions:" + $OsVersion.Version)
EchoLog "INFO" ("|-Arch:" + $OsVersion.OSArchitecture)
EchoLog "INFO" ("| RAM:" + $OsVersion.TotalVisibleMemorySize + "KB")
EchoLog "INFO" ("| |-EmptyRAM:" + $OsVersion.FreePhysicalMemory + "KB")
EchoLog "INFO" ("|-SerialNO:" + $OsVersion.SerialNumber)
EchoLog "INFO" "##";Write-Host ""
#!OS
$localversion=Get-Content -Path $Script:InstallDir"\resources\app\package.json" -Encoding UTF8 |ConvertFrom-Json | ForEach-Object version
EchoLog "INFO" ("TheDesk Install Version : "+$localversion)
$latestjson=[system.Text.Encoding]::UTF8.GetString((Invoke-WebRequest "http://dl.thedesk.top/ver.json").RawContentStream.ToArray()) | ConvertFrom-Json
$DeskLatestVersion = $latestjson | ForEach-Object desk
$DeskLatestdetail = $latestjson | ForEach-Object detail
EchoLog "INFO" ("TheDesk Latest Version : " +$DeskLatestVersion)
EchoLog "INFO" ("Detail : "+$DeskLatestdetail)
}
function ConfCheck(){
}
function LatestDownload(){Write-Host ""
try{EchoLog "INFO" ("ダウンロードを開始します。 $Script:LatestZip")
Invoke-WebRequest -Uri $Script:WgetAdd -OutFile $Script:LatestZip
EchoLog "INFO" ("$Script:LatestZip をダウンロードしました。")
}catch [System.Net.WebException]{$statusCode = $_.Exception.Response.StatusCode;
EchoLog "ERROR" ("ダウンロードエラー ステータス: $statusCode")
}
}
function ApplyUpdate(){Write-Host ""
EchoLog "INFO" ("更新を適用します。")
EchoLog "INFO" ("TheDeskが起動していた場合、終了します。")
Start-Sleep -s 3
TASKKILL /F /IM TheDesk.exe 2>&1 >>$Script:DebugLog
$ErrorActionPreference = "Stop"
EchoLog "INFO" ("更新を適用しています。")
Expand-Archive -Path $Script:LatestZip -DestinationPath $InstallPath -Force
EchoLog "INFO" ("更新を適用しました。`n赤文字でエラーが出ている場合はそれを確認してください。")
}
function epProcess(){
Remove-Item $Script:LatestZip
}
function EchoLog($sLogLevel,$sMessage,$sCode)
{
#CSVファイルに出力
#Add-Content -Encoding UTF8 $Script:ErrorLog -Value ((Get-Date).ToString("yyyy/MM/dd HH:mm:ss`t") + $sLogLevel + "`t" + $sMessage + "`t" + $sCode)
Add-Content -Encoding UTF8 $Script:DebugLog -Value ((Get-Date).ToString("yyyy/MM/dd HH:mm:ss`t") + $sLogLevel + "`t" + $sMessage)
#画面に出力
switch ($sLogLevel)
{
"INFO" {
Write-Host $sMessage -ForegroundColor White
}
"ERROR" {
Write-Host $sMessage -ForegroundColor Red
}
"SILENT"{}
default {
Write-Host $sMessage -ForegroundColor Blue
}
}
}
function techo($sMessage) #通常の表示用テキスト
{
#CSVファイルに出力
Add-Content -Encoding UTF8 $Script:DebugLog -Value ((Get-Date).ToString("yyyy/MM/dd HH:mm:ss`t") + $sMessage)
Write-Host $sMessage
}
function version() {
Write-Output "$Script:Title `t`t`t$Script:rev `t$Script:Auther `n"
Write-Output " usage: $Script:FileName version"
Write-Output "`t`t`t Readme.mdを読んでね。"
}
Switch ($args[0]) {
"version" {version}
"-version" {version}
"--version" {version}
"/version" {version}
"debug" {ApplyUpdate}
default{$Script:Mode = "ALL"
main}
}
#.:.:.:.
exit 0
#.:.:.:.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment