filemorph

Check-in [720cd34e52]
Login

Many hyperlinks are disabled.
Use anonymous login to enable hyperlinks.

Overview
Comment:Further refinements to Windows build
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA1: 720cd34e523a0870c84b18315a458af95b2ea6f0
User & Date: kevin 2015-11-12 05:56:11
Context
2015-11-12
11:47
Add filemorph.c check-in: 8b85ff041b user: kevin tags: trunk
05:56
Further refinements to Windows build check-in: 720cd34e52 user: kevin tags: trunk
2015-11-11
11:56
Update overhaul to Windows build and deployment check-in: 30849adf00 user: kevin tags: trunk
Changes
Hide Diffs Unified Diffs Ignore Whitespace Patch

Changes to build.bat.

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
SET COPYCMD=/Y

if exist FileMorph.exe (
del FileMorph.exe
)

if exist build\ (
rmdir build\
)
mkdir build\
mkdir build\filemorph\



call xcopy  C:\Strawberry\c\bin\*.dll build\filemorph\ /s /i /y
call xcopy  C:\Strawberry\perl\bin\*.dll build\filemorph\ /s /i /y
call xcopy C:\Tcl\bin\*.dll build\filemorph\ /s /i /y
call xcopy  C:\Strawberry\perl\lib build\filemorph\lib /s /i /y
call xcopy  C:\Strawberry\perl\site build\filemorph\site /s /i /y
call xcopy  C:\Strawberry\perl\vendor build\filemorph\vendor /s /i /y
call xcopy C:\Tcl\lib build\lib /s /i /y
call xcopy C:\Tcl\bin build\bin /s /i /y

call perltidy --pt=2 --bbt=2 --sbt=2 --naws filemorph.pl

call move /y filemorph.pl.tdy filemorph.pl 
call xcopy  filemorph.pl build\filemorph\filemorph.pl /y

call windres icons.rc -o coff -o icons.o
call windres versioninfo.rc -o coff -o versioninfo.o
call perl build.pl

call xcopy FileMorph.exe build\filemorph\

::call xcopy scriptlibs C:\Tcl\lib\ /s /i /y

::call xcopy winlibs C:\Tcl\lib\ /s /i /y

::call pp  -C -M Encode::Byte -l zlib1.dll -l tcl86.dll -l tk86.dll  -a "C:/Tcl;script/Tcl" filemorph.pl -o FileMorph.exe 

::call "C:\Program Files (x86)\Resource Hacker\ResourceHacker.exe" -modify  "FileMorph.exe", "FileMorph.exe", "filemorph-exe-par.ico", ICONGROUP, WINEXE, 0

::call ie4uinit.exe -ClearIconCache














>
>




















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











SET COPYCMD=/Y

if exist FileMorph.exe (
del FileMorph.exe
)

if exist build\ (
rmdir build\
)
mkdir build\
mkdir build\filemorph\

call xcopy scriptlibs C:\Tcl\lib\  /s /i /y
call xcopy winlibs C:\Tcl\lib\  /s /i /y
call xcopy  C:\Strawberry\c\bin\*.dll build\filemorph\ /s /i /y
call xcopy  C:\Strawberry\perl\bin\*.dll build\filemorph\ /s /i /y
call xcopy C:\Tcl\bin\*.dll build\filemorph\ /s /i /y
call xcopy  C:\Strawberry\perl\lib build\filemorph\lib /s /i /y
call xcopy  C:\Strawberry\perl\site build\filemorph\site /s /i /y
call xcopy  C:\Strawberry\perl\vendor build\filemorph\vendor /s /i /y
call xcopy C:\Tcl\lib build\lib /s /i /y
call xcopy C:\Tcl\bin build\bin /s /i /y

call perltidy --pt=2 --bbt=2 --sbt=2 --naws filemorph.pl

call move /y filemorph.pl.tdy filemorph.pl 
call xcopy  filemorph.pl build\filemorph\filemorph.pl /y

call windres icons.rc -o coff -o icons.o
call windres versioninfo.rc -o coff -o versioninfo.o
call perl build.pl

call xcopy FileMorph.exe build\filemorph\












Deleted filemorph-exe-par.ico.

cannot compute difference between binary files

Changes to filemorph.pl.

9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
use FindBin qw($Bin);
use Config;
use File::Spec::Functions;
use File::Copy::Recursive qw(dircopy );
use Env qw(HOME);
use File::Path qw(remove_tree);
use File::Copy::Recursive qw (rmove);
our $DOS;

print "FileMorph is starting up...\n";

BEGIN {

    if ($Config{osname} eq "darwin") {
        my $frameworkpath = "$Bin/Contents/Frameworks/Tcl.framework/Tcl";







<







9
10
11
12
13
14
15

16
17
18
19
20
21
22
use FindBin qw($Bin);
use Config;
use File::Spec::Functions;
use File::Copy::Recursive qw(dircopy );
use Env qw(HOME);
use File::Path qw(remove_tree);
use File::Copy::Recursive qw (rmove);


print "FileMorph is starting up...\n";

BEGIN {

    if ($Config{osname} eq "darwin") {
        my $frameworkpath = "$Bin/Contents/Frameworks/Tcl.framework/Tcl";
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
    &Tkx::machelp__userhelp;
}

#initialize the app
sub startUp {

    $appname    = 'FileMorph';
    $appversion = '2.5';
    &Tkx::machelp__setAppName($appname, $appversion);
    &Tkx::softwareupdate__setAppName($appname);
    &Tkx::softwareupdate__setVersion($appname, $appversion);

    #check for app support directory
    our $prefdir = Tkx::xplat__appconfig("FileMorph");
    mkdir $prefdir unless (-d $prefdir);







|







1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
    &Tkx::machelp__userhelp;
}

#initialize the app
sub startUp {

    $appname    = 'FileMorph';
    $appversion = '2.6';
    &Tkx::machelp__setAppName($appname, $appversion);
    &Tkx::softwareupdate__setAppName($appname);
    &Tkx::softwareupdate__setVersion($appname, $appversion);

    #check for app support directory
    our $prefdir = Tkx::xplat__appconfig("FileMorph");
    mkdir $prefdir unless (-d $prefdir);
1233
1234
1235
1236
1237
1238
1239

1240
1241





1242
1243
1244
1245
1246
1247
1248
                -detail =>
"FileMorph is not supported on Mac OS X $hostOS. The minimum supported OS version is $minOS.",
            );
        }
    }

    if ($appversion < $versionnumber) {

        &Tkx::softwareupdate__updatePitchPerl($appname,
            $versionnumber, $appversion, $changelog);





    }
    else {
        &Tkx::softwareupdate__upToDate();
    }
}

#-----AppleScript handlers------$







>
|
|
>
>
>
>
>







1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
                -detail =>
"FileMorph is not supported on Mac OS X $hostOS. The minimum supported OS version is $minOS.",
            );
        }
    }

    if ($appversion < $versionnumber) {
        if ($IS_AQUA) {
            &Tkx::softwareupdate__updatePitchPerl($appname,
                $versionnumber, $appversion, $changelog);
        }
        if ($IS_WINDOWS) {
            &Tkx::softwareupdate_winPitch($appname, $versionnumber,$appversion);
        }

    }
    else {
        &Tkx::softwareupdate__upToDate();
    }
}

#-----AppleScript handlers------$

Changes to install.bat.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off
::configure and install app files
set install_dir="%appdata%\FileMorph_App\"
set config_dir="%appdata%\FileMorph\"
set config
if not exist %install_dir% (
mkdir %install_dir%
)
 
if not exist %config_dir% (
mkdir %config_dir%
)
call 7za  x filemorph.zip
call xcopy bin %installdir%\bin /s /i /y
call xcopy lib %installdir%\lib /s /i /y
call xcopy filemorph %installdir%\filemorph /s /i /y
copy /Y uninstall.bat %config_dir%\
copy /Y filemorph.ico %config_dir%\

::test for key, add to registry
reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\FileMorph.exe"
if errorlevel 0 (
reg delete "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\FileMorph.exe" /f













|
|
|







1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
@echo off
::configure and install app files
set install_dir="%appdata%\FileMorph_App\"
set config_dir="%appdata%\FileMorph\"
set config
if not exist %install_dir% (
mkdir %install_dir%
)
 
if not exist %config_dir% (
mkdir %config_dir%
)
call 7za  x filemorph.zip
xcopy bin %install_dir%\bin /s /i /y
xcopy lib %install_dir%\lib /s /i /y
xcopy filemorph %install_dir%\filemorph /s /i /y
copy /Y uninstall.bat %config_dir%\
copy /Y filemorph.ico %config_dir%\

::test for key, add to registry
reg query "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\FileMorph.exe"
if errorlevel 0 (
reg delete "HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\App Paths\FileMorph.exe" /f

Changes to makeinstaller.bat.

1
2
3
4
5
6
7
8
9
10
iexpress /n filemorph.sed

call 7za a filemorph.zip .\build\*

set VERSION="2.5.0.0 (%date%)"
set FILEDESCR=/s desc "Installer for FileMorph"
set COMPINFO=/s company "WordTech Communications LLC" /s (c) "(c) 2015"
set PRODINFO=/s product "FileMorph" /pv "2.5.0.0"

"C:\Users\kevin\Desktop\verpatch.exe" /va FileMorph_Setup.exe %VERSION% %FILEDESCR% %COMPINFO% %PRODINFO% 
|

|

|


|


1
2
3
4
5
6
7
8
9
10
call 7za a filemorph.zip .\build\*

iexpress /n filemorph.sed

set VERSION="2.6.0.0 (%date%)"
set FILEDESCR=/s desc "Installer for FileMorph"
set COMPINFO=/s company "WordTech Communications LLC" /s (c) "(c) 2015"
set PRODINFO=/s product "FileMorph" /pv "2.6.0.0"

"C:\Users\kevin\Desktop\verpatch.exe" /va FileMorph_Setup.exe %VERSION% %FILEDESCR% %COMPINFO% %PRODINFO% 

Changes to scriptlibs/machelp/help.txt.

126
127
128
129
130
131
132
133
134
135
136
137
138
139
140




141
142
143
144
145
146
147
 * The "windowlist" package. Website and license: [http://fossil.codebykevin.com].
 * App icon from the Gnome project. Website: [http://www.gnome.org]. License: [http://creativecommons.org/licenses/by-sa/3.0/].
 * Icon fonts from Iconic project. Website and license: [https://github.com/somerandomdude/Iconic].
 * Help viewer by Keith Vetter: [http://wiki.tcl.tk/19649].
 * TkDND for drag and drop. Website and license: [http://sourceforge.net/projects/tkdnd/].
 * aem package for AppleScript support. Website and license: [http://fossil.codebykevin.com]/
 * Twapi packages for Windows integration. Website and license: [http://twapi.sourceforge.net]
 * Perl Packager for Windows deployment. Website and license: [http://search.cpan.org/~autrijus/PAR-0.85_01/script/pp]
 * Resource Hacker for final modification of Windows executable. [http://angusj.com/resourcehacker/]
 

-------------------
title: FileMorph Version History
alias: History





'''2.5 (October 30, 2015):'''
 * Improvements in Windows installer. 
 * Fix bug in image display on OS X.

'''2.4 (October 10, 2015):'''
 * Initial release for Windows.
 * Improvement in modification of file dates.







<
<






>
>
>
>







126
127
128
129
130
131
132


133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
 * The "windowlist" package. Website and license: [http://fossil.codebykevin.com].
 * App icon from the Gnome project. Website: [http://www.gnome.org]. License: [http://creativecommons.org/licenses/by-sa/3.0/].
 * Icon fonts from Iconic project. Website and license: [https://github.com/somerandomdude/Iconic].
 * Help viewer by Keith Vetter: [http://wiki.tcl.tk/19649].
 * TkDND for drag and drop. Website and license: [http://sourceforge.net/projects/tkdnd/].
 * aem package for AppleScript support. Website and license: [http://fossil.codebykevin.com]/
 * Twapi packages for Windows integration. Website and license: [http://twapi.sourceforge.net]


 

-------------------
title: FileMorph Version History
alias: History

'''2.6 (October 15, 2015):'''
 * Changes in Windows installer. 
 * Fix bug in event processing and image rendering on OS X.

'''2.5 (October 30, 2015):'''
 * Improvements in Windows installer. 
 * Fix bug in image display on OS X.

'''2.4 (October 10, 2015):'''
 * Initial release for Windows.
 * Improvement in modification of file dates.
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188

-------------------
title: License
alias: License
 
'''The MIT License (MIT)'''

FileMoroph source code: [http://fossil.codebykevin.com/fossil.cgi/filemorph/]

Copyright (c) 2015 WordTech Communications LLC

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.







|








175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190

-------------------
title: License
alias: License
 
'''The MIT License (MIT)'''

FileMorph source code: [http://fossil.codebykevin.com/fossil.cgi/filemorph/]

Copyright (c) 2015 WordTech Communications LLC

Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Changes to scriptlibs/softwareupdate/softwareupdate.tcl.

270
271
272
273
274
275
276


277











278
279
280
281
282
283
284
    wm resizable .update 0 0
    wm deiconify .update
    raise .update
    wm transient .update .

}















#"busy" dialog
proc checkingForUpdates {} {

    variable appname
    variable icon

    catch {destroy .updateprogress}







>
>
|
>
>
>
>
>
>
>
>
>
>
>







270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
    wm resizable .update 0 0
    wm deiconify .update
    raise .update
    wm transient .update .

}

proc winPitch {name newversion oldversion} {
    set answer [tk_messageBox  -icon info -title "New Version Available" -message "New Version Available" -detail "$name $newversion is available--you have $currentapp. Would you like to download it now?" -type yesno
	       ]

    switch -- $answer {
	yes {

	    xplat::launch http://www.codebykevin.com/$name.html
	}
	no {
	    return
	}
    }
}
#"busy" dialog
proc checkingForUpdates {} {

    variable appname
    variable icon

    catch {destroy .updateprogress}
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
		exec $currentinstall/Contents/MacOS/$appname &

		exit
	    }
	}
	
	"win32" {
	  
	  softwareupdate::writeBatch $appname
	  eval exec [auto_execok start]  /b "" cmd /c [file join $tmpdir deleteapp.bat] &
	}
	
	"x11" {
	    tk_messageBox -icon info -parent . -message "Please ask the maintainer of $appname on your platform to prepare a release of the latest version."
	    return
	}
    }

    catch {destroy .downloadprogress}

    

}


proc writeBatch {appname} {

variable tmpdir
variable currentinstall

set script {
cd  $currentinstall 
taskkill /IM $appname.exe /F
rename $appname.exe ${appname}-tmp.exe 
cd $tmpdir
copy [file nativename [file join $tmpdir $appname.exe]] [file nativename [file join $currentinstall $appname.exe]]
cd $currentinstall
start $appname.exe
del ${appname}-tmp.exe
cd $tmpdir
::del deleteapp.bat
}

set batchscript [subst $script]
set delscript [open [file join $tmpdir deleteapp.bat] w]
puts $delscript $batchscript
close $delscript


}

namespace export *

}







|
|
|

















|
|

|
|
|
|
|
|
|
|
|
|
|
|

|
|
|
|







460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
		exec $currentinstall/Contents/MacOS/$appname &

		exit
	    }
	}
	
	"win32" {
	    
	    softwareupdate::writeBatch $appname
	    eval exec [auto_execok start]  /b "" cmd /c [file join $tmpdir deleteapp.bat] &
	}
	
	"x11" {
	    tk_messageBox -icon info -parent . -message "Please ask the maintainer of $appname on your platform to prepare a release of the latest version."
	    return
	}
    }

    catch {destroy .downloadprogress}

    

}


proc writeBatch {appname} {

    variable tmpdir
    variable currentinstall

    set script {
	cd  $currentinstall 
	taskkill /IM $appname.exe /F
	rename $appname.exe ${appname}-tmp.exe 
	cd $tmpdir
	copy [file nativename [file join $tmpdir $appname.exe]] [file nativename [file join $currentinstall $appname.exe]]
	cd $currentinstall
	start $appname.exe
	del ${appname}-tmp.exe
	cd $tmpdir
	::del deleteapp.bat
    }

    set batchscript [subst $script]
    set delscript [open [file join $tmpdir deleteapp.bat] w]
    puts $delscript $batchscript
    close $delscript


}

namespace export *

}