1717import org .apache .commons .lang3 .StringUtils ;
1818import org .twdata .maven .mojoexecutor .MojoExecutor .Element ;
1919
20+ import io .github .fvarrui .javapackager .model .Platform ;
2021import io .github .fvarrui .javapackager .model .WindowsConfig ;
2122import io .github .fvarrui .javapackager .packagers .Context ;
2223import io .github .fvarrui .javapackager .packagers .WindowsArtifactGenerator ;
2324import io .github .fvarrui .javapackager .packagers .WindowsPackager ;
2425import io .github .fvarrui .javapackager .utils .FileUtils ;
26+ import io .github .fvarrui .javapackager .utils .VelocityUtils ;
2527
2628/**
2729 * Copies all dependencies to app folder on Maven context
@@ -39,7 +41,7 @@ public CreateWindowsExe() {
3941 }
4042
4143 @ Override
42- protected File doApply (WindowsPackager packager ) {
44+ protected File doApply (WindowsPackager packager ) throws Exception {
4345
4446 List <String > vmArgs = packager .getVmArgs ();
4547 WindowsConfig winConfig = packager .getWinConfig ();
@@ -51,6 +53,8 @@ protected File doApply(WindowsPackager packager) {
5153 String classpath = packager .getClasspath ();
5254 String jreMinVersion = packager .getJreMinVersion ();
5355 File jarFile = packager .getJarFile ();
56+ File appFolder = packager .getAppFolder ();
57+ String name = packager .getName ();
5458
5559 try {
5660 // creates a folder only for launch4j assets
@@ -123,7 +127,22 @@ protected File doApply(WindowsPackager packager) {
123127
124128 } catch (Exception ex ) {
125129 throw new RuntimeException (ex );
126- }
130+ }
131+
132+ // bootstrap script specified
133+ if (FileUtils .exists (packager .getScripts ().getBootstrap ())) {
134+
135+ // generates startup VBS script file
136+ File vbsFile = new File (appFolder , name + ".vbs" );
137+ VelocityUtils .render (Platform .windows + "/startup.vbs.vtl" , vbsFile , packager );
138+
139+ // creates shortcut to VBS script
140+ File lnk = new File (appFolder , name + ".lnk" );
141+ createShortcut (lnk , vbsFile , executable );
142+
143+ executable = vbsFile ;
144+
145+ }
127146
128147 return executable ;
129148 }
0 commit comments