1
1
var fso = new ActiveXObject ( 'Scripting.FileSystemObject' )
2
2
var wsh = new ActiveXObject ( 'WScript.Shell' )
3
- var sa = new ActiveXObject ( 'Shell.Application' )
4
3
var stream = new ActiveXObject ( "ADODB.Stream" )
5
4
6
5
function doIt ( ) {
@@ -11,6 +10,9 @@ function doIt() {
11
10
var completion = form . elements [ 'completion' ] . checked
12
11
var distname = form . elements [ 'distname' ] . value
13
12
var icon = form . elements [ 'icon' ] . value || 'assets\\default_icon.ico'
13
+ var modal = document . getElementById ( 'modal' )
14
+ var modalContent = document . getElementById ( 'modal-content' )
15
+ var modalBtns = document . getElementById ( 'modal-btns' )
14
16
15
17
if ( isRequired ( srcfile ) && hasExtension ( srcfile , [ 'bat' , 'hta' ] , true ) && isRequired ( distname ) && isWinFilename ( distname ) ) {
16
18
var src = splitPath ( srcfile )
@@ -25,27 +27,35 @@ function doIt() {
25
27
if ( ! hasExtension ( icon , [ 'ico' ] , true ) ) return false
26
28
if ( ! overwrite ( distname + '.exe' , src . folder ) ) return false
27
29
30
+ modal . style . display = 'block'
31
+ log ( 'Processing...' , modalContent , modalBtns )
32
+
28
33
// HTA completion feedback and copy to temp directory
29
34
stream . CharSet = 'utf-8'
30
35
stream . Open ( )
31
36
stream . LoadFromFile ( srcfile )
32
37
if ( completion ) {
33
- var content = stream . ReadText ( )
34
- content += '\nstart "" mshta.exe javascript:alert("' + distname + ' complete");close()'
35
- stream . Flush ( )
36
- stream . WriteText ( content )
38
+ log ( 'Adding completion line...' , modalContent , modalBtns )
39
+ var srcContent = stream . ReadText ( )
40
+ stream . Close ( )
41
+ stream . Open ( )
42
+ srcContent += '\nstart "" mshta.exe javascript:alert("' + distname + ' complete");close()'
43
+ stream . WriteText ( srcContent )
37
44
}
38
45
stream . saveToFile ( tempfile , 2 )
39
46
stream . Close ( )
40
-
47
+
41
48
// Compress
42
49
if ( include ) {
43
- wsh . Run ( 'bin\\7za.exe a -t7z -mx1 -y ' + archive + ' ' + tempfile + ' ' + src . folder + '\\* -x!' + srcfile , 0 , true )
50
+ log ( 'Compressing all files...' , modalContent , modalBtns )
51
+ wsh . Run ( 'bin\\7za.exe a -t7z -mx1 -y "' + archive + '" "' + tempfile + '" "' + src . folder + '\\*" -x!"' + srcfile + '"' , 0 , true )
44
52
} else {
45
- wsh . Run ( 'bin\\7za.exe a -t7z -mx1 -y ' + archive + ' ' + tempfile , 0 , true )
53
+ log ( 'Compressing...' , modalContent , modalBtns )
54
+ wsh . Run ( 'bin\\7za.exe a -t7z -mx1 -y "' + archive + '" "' + tempfile + '"' , 0 , true )
46
55
}
47
56
48
57
// Create Config File for SFX
58
+ log ( 'Converting to executable...' , modalContent , modalBtns )
49
59
var sfxfile = tempdir + '\\' + 'thebatchman_' + distname + '_sfx.txt'
50
60
var sfxconfig = ';!@Install@!UTF-8!'
51
61
if ( hidcon ) sfxconfig += '\nRunProgram="hidcon:' + src . file + '"'
@@ -64,29 +74,24 @@ function doIt() {
64
74
binaryCopy ( [ 'bin\\7zsd_LZMA2.sfx' , sfxfile , archive ] , disttemp )
65
75
66
76
// Add Icon and Finalize
77
+ log ( 'Adding icon...' , modalContent , modalBtns )
67
78
binaryCopy ( [ disttemp ] , disticx )
68
79
wsh . Run ( 'bin\\resourcer.exe -op:add -src:"' + disticx + '" -type:icon -name:name -lang:1033 -file:"' + icon + '"' , 0 , true )
69
80
binaryCopy ( [ disticx , disttemp ] , distexe )
70
81
82
+ // Clean
83
+ log ( 'Cleaning...' , modalContent , modalBtns )
71
84
fso . DeleteFile ( tempfile )
72
85
fso . DeleteFile ( disticx )
73
86
fso . DeleteFile ( disttemp )
74
87
fso . DeleteFile ( archive )
75
88
fso . DeleteFile ( sfxfile )
76
- alert ( 'Done !' )
77
- // window.close()
89
+ log ( 'Done !' , modalContent , modalBtns )
90
+ log ( '<span>' + distexe + '</span>' , modalContent , modalBtns )
91
+ modalBtns . style . display = 'block'
78
92
} else {
79
93
location . reload ( )
80
94
}
81
-
82
- // var exe = wsh.exec(cmd)
83
- // var out = ''
84
- // while (!exe.stdOut.atEndOfStream) {
85
- // var s = exe.stdOut.readLine()
86
- // s = s.replace( /\r/gm, '' )
87
- // out += s + '\n'
88
- // }
89
- // document.getElementById("output").value = out
90
95
91
96
}
92
97
@@ -214,3 +219,13 @@ function forEachEl(selector, fn) {
214
219
function removeClass ( el , classToRemove ) {
215
220
el . className = el . className . replace ( new RegExp ( '(^|\\b)' + classToRemove . split ( ' ' ) . join ( '|' ) + '(\\b|$)' , 'gi' ) , ' ' )
216
221
}
222
+
223
+ function log ( message , parent , before ) {
224
+ var p = document . createElement ( 'p' )
225
+ p . innerHTML = message
226
+ if ( before ) {
227
+ parent . insertBefore ( p , before )
228
+ } else {
229
+ parent . appendChild ( p )
230
+ }
231
+ }
0 commit comments