FINISHED UPDATER WOOO

This commit is contained in:
notdraimdev
2024-09-30 20:42:03 +02:00
parent c42d604d08
commit 51be2e3cd3
2 changed files with 124 additions and 10 deletions
+97 -2
View File
@@ -1,4 +1,4 @@
[gd_scene load_steps=62 format=3 uid="uid://b2sygl55s6fng"]
[gd_scene load_steps=64 format=3 uid="uid://b2sygl55s6fng"]
[ext_resource type="Script" path="res://main.gd" id="1_ubs1p"]
[ext_resource type="Texture2D" uid="uid://b8on1case224h" path="res://LoopPressed.png" id="2_iolk5"]
@@ -148,6 +148,12 @@ keycode = 81
[sub_resource type="Shortcut" id="Shortcut_g3fcr"]
events = [SubResource("InputEventKey_puhgg")]
[sub_resource type="LabelSettings" id="LabelSettings_b1152"]
font_size = 31
[sub_resource type="LabelSettings" id="LabelSettings_ivhc6"]
font_size = 20
[node name="Node2D" type="Control"]
layout_mode = 3
anchors_preset = 15
@@ -855,6 +861,7 @@ offset_top = -40.0
grow_horizontal = 0
grow_vertical = 0
script = ExtResource("30_byc5i")
errorColor = Color(0.981984, 0, 0.065929, 1)
[node name="HTTPRequest" type="HTTPRequest" parent="UpdateChecker"]
timeout = 5.0
@@ -869,7 +876,7 @@ offset_right = -24.0
offset_bottom = -44.0
color = Color(0.14902, 0.14902, 0.14902, 1)
[node name="Label" type="Label" parent="UpdateChecker/ColorRect"]
[node name="UpdateAvailableText" type="Label" parent="UpdateChecker/ColorRect"]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
@@ -879,6 +886,8 @@ offset_right = 68.0
offset_bottom = 23.0
grow_horizontal = 2
text = "Update Available!"
horizontal_alignment = 1
vertical_alignment = 1
[node name="PatchNotesButton" type="Button" parent="UpdateChecker/ColorRect"]
z_index = 4
@@ -945,6 +954,92 @@ pivot_offset = Vector2(72, 0)
icon = ExtResource("14_mioc4")
flat = true
[node name="UpdatingNotification" type="Control" parent="."]
visible = false
custom_minimum_size = Vector2(400, 200)
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = -20.0
offset_right = 20.0
offset_bottom = 20.0
grow_horizontal = 2
grow_vertical = 2
[node name="ColorRect" type="ColorRect" parent="UpdatingNotification"]
layout_mode = 1
anchors_preset = 15
anchor_right = 1.0
anchor_bottom = 1.0
grow_horizontal = 2
grow_vertical = 2
color = Color(0.262745, 0.462745, 0.505882, 1)
[node name="ColorRect2" type="ColorRect" parent="UpdatingNotification"]
layout_mode = 1
anchors_preset = -1
anchor_right = 1.0
anchor_bottom = 0.245
grow_horizontal = 2
color = Color(0.196078, 0.278431, 0.32549, 1)
[node name="Label" type="Label" parent="UpdatingNotification"]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -20.0
offset_right = 20.0
offset_bottom = 23.0
grow_horizontal = 2
text = "Simplaudio is Updating!"
label_settings = SubResource("LabelSettings_b1152")
horizontal_alignment = 1
vertical_alignment = 1
[node name="Label2" type="Label" parent="UpdatingNotification"]
layout_mode = 1
anchors_preset = 5
anchor_left = 0.5
anchor_right = 0.5
offset_left = -142.0
offset_top = 52.0
offset_right = 142.0
offset_bottom = 153.0
grow_horizontal = 2
text = "Please wait.
Simplaudio will restart automatically
this wont take long"
horizontal_alignment = 1
[node name="LoadingIMG" type="Sprite2D" parent="UpdatingNotification"]
position = Vector2(199, 115)
rotation = 1.5708
scale = Vector2(-0.5, 0.5)
texture = ExtResource("13_de5ej")
script = ExtResource("14_rhw4k")
[node name="Error" type="Label" parent="UpdatingNotification"]
layout_mode = 1
anchors_preset = 8
anchor_left = 0.5
anchor_top = 0.5
anchor_right = 0.5
anchor_bottom = 0.5
offset_left = -20.0
offset_top = 57.0
offset_right = 20.0
offset_bottom = 80.0
grow_horizontal = 2
grow_vertical = 2
label_settings = SubResource("LabelSettings_ivhc6")
horizontal_alignment = 1
[connection signal="toggled" from="SelectPlaylist" to="SelectPlaylist" method="_on_toggled"]
[connection signal="pressed" from="PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/CreatePlaylist" to="PlaylistsPanel" method="_on_create_playlist_pressed"]
[connection signal="toggled" from="PlaylistsPanel/PlaylistsContainer/VBoxContainer/HBoxContainer/PlayAll" to="PlaylistsPanel" method="_on_play_all_toggled"]
+27 -8
View File
@@ -1,20 +1,21 @@
extends Control
@onready var Parent:MainScene = get_tree().root.get_child(2)
@onready var animation_player := $AnimationPlayer as AnimationPlayer
@onready var version: Label = $"../Version"
@onready var update_button := $Update as Button
@onready var http_request := $HTTPRequest as HTTPRequest
@onready var download_request: HTTPRequest = $DownloadRequest
@onready var link_button: Button = $ColorRect/LinkButton
@onready var update_available_text: Label = $ColorRect/UpdateAvailableText
@onready var updating_notification: Control = $"../UpdatingNotification"
@onready var errorLabel: Label = $"../UpdatingNotification/Error"
@export var errorColor:Color
var CheckForUpdates:bool = true
var updateLink:String
# Only update once every UPDATE_THROTTLE seconds at most
# The GitHub releases API only allows 60 unauthenticated requests per hour,
# so this value should be kept relatively high
const UPDATE_THROTTLE = 600
@@ -32,6 +33,7 @@ func check_for_updates() -> void:
if error != OK:
push_error("! a client error occurred")
errorLabel.text = "a client error occurred"
func _on_http_request_completed(result: int, _response_code: int, _headers: PackedStringArray, body: PackedByteArray) -> void:
if result != HTTPRequest.RESULT_SUCCESS:
@@ -44,6 +46,7 @@ func _on_http_request_completed(result: int, _response_code: int, _headers: Pack
var result2 = json.parse_string(str(body.get_string_from_utf8()))
print("! AHHH " + str(result2))
if result2["tag_name"] != version.text:
update_available_text.text = result2["tag_name"] + " Is Out!"
show()
updateLink = result2["html_url"]
@@ -52,38 +55,54 @@ func _on_close_buen_pressed() -> void:
func _on_link_button_pressed() -> void:
link_button.disabled = true
link_button.text = "Updating..."
updating_notification.show()
var exepath:PackedStringArray = OS.get_executable_path().split("/")
var path:String = GetLocalPath()
print(OS.get_executable_path())
if !OS.has_feature("editor"):
if OS.get_name() == "Windows":
download_request.download_file = path + "download.zip/"
download_request.download_file = path + "download.zip"
var error = download_request.request(
"https://github.com/notdraimdev/Simplaudio/releases/latest/download/Windows.zip"
)
if error != OK:
print("! DOWNLOAD ERROR: " + str(error))
errorLabel.text = "DOWNLOAD FAILED ERROR CODE: " + str(error)
errorLabel.label_settings.font_color = errorColor
else:
errorLabel.text = "downloading..."
else:
OS.shell_open(updateLink)
func _on_download_request_completed(result: int, response_code: int, headers: PackedStringArray, body: PackedByteArray) -> void:
if result != HTTPRequest.RESULT_SUCCESS:
print("! Something went wrong server side: " + str(result))
errorLabel.text = "DOWNLOAD FAILED ERROR CODE: " + str(result)
errorLabel.label_settings.font_color = errorColor
return
else:
errorLabel.text = "unzipping..."
print("works as expected brotha")
var unzipper:ZIPReader = ZIPReader.new() # sus
unzipper.open(GetLocalPath()+"download.zip")
var files:PackedStringArray = unzipper.get_files()
for file in files:
var FileAcess:FileAccess = FileAccess.open(GetLocalPath() + file,FileAccess.READ_WRITE)
var actualfile = file.replace("MusicPlayerExports/","")
print("FILE: " + actualfile)
var FileAcess:FileAccess = FileAccess.open(GetLocalPath() + actualfile,FileAccess.WRITE_READ)
if FileAcess != null:
var downloadedfile = unzipper.read_file(file)
FileAcess.store_var(downloadedfile)
get_tree().root.queue_free()
FileAcess.store_buffer(downloadedfile)
print("FOUND FILE: " + GetLocalPath()+file)
#FileAcess.store_string()
unzipper.close()
OS.shell_open(OS.get_executable_path())
get_tree().root.close_requested.emit()
get_tree().root.queue_free()
func GetLocalPath() -> String:
var exepath:PackedStringArray = OS.get_executable_path().split("/")