diff --git a/.github/workflows/package-osx.yaml b/.github/workflows/package-osx.yaml index 3948fc94..c92972d6 100644 --- a/.github/workflows/package-osx.yaml +++ b/.github/workflows/package-osx.yaml @@ -13,8 +13,8 @@ jobs: uses: actions/setup-java@v1 with: java-version: 14.0.2 - - name: Show Java Version - run: java -version + - name: Show Build Versions + run: ./gradlew -v - name: Cache Gradle packages uses: actions/cache@v2 with: diff --git a/build.gradle b/build.gradle index b6cabbf2..eeb1822a 100644 --- a/build.gradle +++ b/build.gradle @@ -6,6 +6,11 @@ plugins { } def sparrowVersion = '0.9.1' +def os = org.gradle.internal.os.OperatingSystem.current() +def osName = os.getFamilyName() +if(os.macOsX) { + osName = "mac" +} group "com.sparrowwallet" version "${sparrowVersion}" @@ -71,6 +76,14 @@ compileJava { } } +processResources { + doLast { + delete fileTree("$buildDir/resources/main/external").matching { + exclude "$osName/**" + } + } +} + run { applicationDefaultJvmArgs = ["-Xdock:name=Sparrow", "-Xdock:icon=/Users/scy/git/sparrow/src/main/resources/sparrow.png", "--add-opens=javafx.graphics/com.sun.javafx.css=org.controlsfx.controls", @@ -129,12 +142,13 @@ jlink { installerOptions = [ '--file-associations', 'src/main/resources/associations.properties', ] - if (org.gradle.internal.os.OperatingSystem.current().windows) { - installerOptions += ['--win-per-user-install', '--win-dir-chooser', '--win-menu'] + if(os.windows) { + installerOptions += ['--win-per-user-install', '--win-dir-chooser', '--win-menu', '--win-shortcut'] + imageOptions += ['--icon', 'src/main/deploy/package/windows/sparrow.ico'] } - if (org.gradle.internal.os.OperatingSystem.current().macOsX) { + if(os.macOsX) { installerOptions += ['--mac-sign', '--mac-signing-key-user-name', 'Craig Raw (UPLVMSK9D7)'] - imageOptions += ['--icon', 'src/main/deploy/package/macosx/sparrow.icns', '--resource-dir', 'src/main/deploy/package/macosx/'] + imageOptions += ['--icon', 'src/main/deploy/package/mac/sparrow.icns', '--resource-dir', 'src/main/deploy/package/mac/'] installerType = "dmg" } } diff --git a/src/main/deploy/package/macosx/Info.plist b/src/main/deploy/package/mac/Info.plist similarity index 100% rename from src/main/deploy/package/macosx/Info.plist rename to src/main/deploy/package/mac/Info.plist diff --git a/src/main/deploy/package/macosx/Sparrow.entitlements b/src/main/deploy/package/mac/Sparrow.entitlements similarity index 100% rename from src/main/deploy/package/macosx/Sparrow.entitlements rename to src/main/deploy/package/mac/Sparrow.entitlements diff --git a/src/main/deploy/package/macosx/sparrow.icns b/src/main/deploy/package/mac/sparrow.icns similarity index 100% rename from src/main/deploy/package/macosx/sparrow.icns rename to src/main/deploy/package/mac/sparrow.icns diff --git a/src/main/deploy/package/windows/sparrow.ico b/src/main/deploy/package/windows/sparrow.ico new file mode 100644 index 00000000..9143e081 Binary files /dev/null and b/src/main/deploy/package/windows/sparrow.ico differ diff --git a/src/main/java/com/sparrowwallet/sparrow/io/Hwi.java b/src/main/java/com/sparrowwallet/sparrow/io/Hwi.java index e269d6de..5675a8fc 100644 --- a/src/main/java/com/sparrowwallet/sparrow/io/Hwi.java +++ b/src/main/java/com/sparrowwallet/sparrow/io/Hwi.java @@ -182,8 +182,8 @@ public class Hwi { //To avoid doing these with every invocation, use a --onedir packaging and expand into a temp folder on OSX //The check will still happen on first invocation, but will not thereafter //See https://github.com/bitcoin-core/HWI/issues/327 for details - if(platform.getPlatformId().toLowerCase().equals("mac")) { - InputStream inputStream = Hwi.class.getResourceAsStream("/external/" + platform.getPlatformId().toLowerCase() + "/hwi-1.1.2-mac-amd64-signed.zip"); + if(platform == Platform.OSX) { + InputStream inputStream = Hwi.class.getResourceAsStream("/external/mac/hwi-1.1.2-mac-amd64-signed.zip"); Path tempHwiDirPath = Files.createTempDirectory(TEMP_FILE_PREFIX, PosixFilePermissions.asFileAttribute(ownerExecutableWritable)); File tempHwiDir = tempHwiDirPath.toFile(); //tempHwiDir.deleteOnExit(); @@ -211,7 +211,13 @@ public class Hwi { hwiExecutable = tempExec; } else { - InputStream inputStream = Hwi.class.getResourceAsStream("/external/" + platform.getPlatformId().toLowerCase() + "/hwi"); + InputStream inputStream; + if(platform == Platform.WINDOWS) { + inputStream = Hwi.class.getResourceAsStream("/external/windows/hwi.exe"); + } else { + inputStream = Hwi.class.getResourceAsStream("/external/" + platform.getPlatformId().toLowerCase() + "/hwi"); + } + Path tempExecPath = Files.createTempFile(TEMP_FILE_PREFIX, null, PosixFilePermissions.asFileAttribute(ownerExecutableWritable)); File tempExec = tempExecPath.toFile(); //tempExec.deleteOnExit(); diff --git a/src/main/java/com/sparrowwallet/sparrow/io/Storage.java b/src/main/java/com/sparrowwallet/sparrow/io/Storage.java index 44c57c31..7ce96bd5 100644 --- a/src/main/java/com/sparrowwallet/sparrow/io/Storage.java +++ b/src/main/java/com/sparrowwallet/sparrow/io/Storage.java @@ -14,6 +14,7 @@ import com.sparrowwallet.drongo.wallet.Wallet; import com.sparrowwallet.drongo.wallet.WalletNode; import javafx.concurrent.Service; import javafx.concurrent.Task; +import org.controlsfx.tools.Platform; import java.io.*; import java.lang.reflect.Type; @@ -33,6 +34,7 @@ public class Storage { private static final DateFormat BACKUP_DATE_FORMAT = new SimpleDateFormat("yyyyMMddHHmmss"); public static final String SPARROW_DIR = ".sparrow"; + public static final String WINDOWS_SPARROW_DIR = "Sparrow"; public static final String WALLETS_DIR = "wallets"; public static final String WALLETS_BACKUP_DIR = "backup"; public static final String HEADER_MAGIC_1 = "SPRW1"; @@ -269,10 +271,18 @@ public class Storage { } static File getSparrowDir() { + if(Platform.getCurrent() == Platform.WINDOWS) { + return new File(getHomeDir(), WINDOWS_SPARROW_DIR); + } + return new File(getHomeDir(), SPARROW_DIR); } static File getHomeDir() { + if(Platform.getCurrent() == Platform.WINDOWS) { + return new File(System.getenv("APPDATA")); + } + return new File(System.getProperty("user.home")); } diff --git a/src/main/resources/external/linux/hwi b/src/main/resources/external/linux/hwi new file mode 100755 index 00000000..b785c39b Binary files /dev/null and b/src/main/resources/external/linux/hwi differ diff --git a/src/main/resources/external/windows/hwi.exe b/src/main/resources/external/windows/hwi.exe new file mode 100755 index 00000000..65648fd2 Binary files /dev/null and b/src/main/resources/external/windows/hwi.exe differ