' ============================================================================
' INSTALADOR DO CRONOMETRO MRATECH
'
' Um arquivo so. A pessoa baixa pelo botao no mratech.top, da dois cliques e
' pronto: instala, cria os atalhos e ja abre. Na primeira execucao a janelinha
' pergunta quem esta usando (lista a equipe do proprio tracker).
'
' Instala em %LOCALAPPDATA%\CronometroMRATECH (pasta do usuario, nao precisa
' de administrador).
' ============================================================================

Option Explicit

Dim sh, fso, destino, urlBase, ok
Set sh  = CreateObject("WScript.Shell")
Set fso = CreateObject("Scripting.FileSystemObject")

urlBase = "https://www.mratech.top/cronometro/"
destino = sh.ExpandEnvironmentStrings("%LOCALAPPDATA%") & "\CronometroMRATECH"

If Not fso.FolderExists(destino) Then fso.CreateFolder destino

' ---- baixa o programa ------------------------------------------------------
' Baixado como BINARIO de proposito: o arquivo comeca com BOM UTF-8 e tem
' acentos. Gravar como texto corromperia ("Revisao" viraria "RevisÃ£o") e o
' status gravado no banco sairia errado.
ok = Baixar(urlBase & "cronometro.ps1", destino & "\cronometro.ps1")
If Not ok Then
  MsgBox "Nao consegui baixar o cronometro." & vbCrLf & vbCrLf & _
         "Verifique a internet e tente de novo. Se persistir, avise o Welber.", _
         vbExclamation, "Cronometro MRATECH"
  WScript.Quit
End If
Baixar urlBase & "LEIA-ME.txt", destino & "\LEIA-ME.txt"

' ---- lancador -------------------------------------------------------------
' BAIXADO, nao gerado aqui. A versao anterior montava o Cronometro.vbs com
' WriteLine e escapava aspas dentro de aspas dentro de aspas; saiu uma aspa a
' mais no fim (`...ps1"""",`), o powershell recebia um caminho invalido e a
' janelinha NAO ABRIA por atalho nem na inicializacao do Windows -- justo os
' dois caminhos que todo dev ia usar. Baixar o arquivo pronto e testado
' elimina a classe inteira de erro.
If Not Baixar(urlBase & "Cronometro.vbs", destino & "\Cronometro.vbs") Then
  MsgBox "Baixei o cronometro, mas falhou o atalho de abertura." & vbCrLf & _
         "Tente instalar de novo.", vbExclamation, "Cronometro MRATECH"
  WScript.Quit
End If

' ---- atalhos: area de trabalho e inicializacao do Windows ------------------
Atalho sh.SpecialFolders("Desktop") & "\Cronometro MRATECH.lnk"
Atalho sh.SpecialFolders("Startup") & "\Cronometro MRATECH.lnk"

' ---- abre ------------------------------------------------------------------
sh.Run """" & destino & "\Cronometro.vbs""", 0, False

MsgBox "Cronometro instalado." & vbCrLf & vbCrLf & _
       "A janelinha vai aparecer no canto da tela e vai perguntar quem e voce" & vbCrLf & _
       "(so na primeira vez)." & vbCrLf & vbCrLf & _
       "Ela abre sozinha toda vez que voce ligar o computador." & vbCrLf & _
       "Tem tambem um atalho na area de trabalho.", _
       vbInformation, "Cronometro MRATECH"

' ============================================================================
Function Baixar(url, arquivo)
  Dim http, fluxo
  Baixar = False
  On Error Resume Next
  Set http = CreateObject("MSXML2.XMLHTTP")
  http.Open "GET", url & "?v=" & Timer, False   ' ?v= evita cache velho
  http.Send
  If Err.Number <> 0 Or http.Status <> 200 Then Exit Function
  Set fluxo = CreateObject("ADODB.Stream")
  fluxo.Type = 1                                 ' binario: preserva o BOM
  fluxo.Open
  fluxo.Write http.responseBody
  fluxo.SaveToFile arquivo, 2                    ' 2 = sobrescreve
  fluxo.Close
  If Err.Number = 0 Then Baixar = True
  On Error GoTo 0
End Function

Sub Atalho(caminho)
  Dim lnk
  On Error Resume Next
  Set lnk = sh.CreateShortcut(caminho)
  lnk.TargetPath       = destino & "\Cronometro.vbs"
  lnk.WorkingDirectory = destino
  lnk.Description      = "Cronometro de tarefas do MRATECH"
  lnk.Save
  On Error GoTo 0
End Sub
