├── .github └── workflows │ └── build.yml ├── .gitignore ├── .nvmrc ├── LICENSE ├── build.bat ├── build ├── icon.ico ├── icon.png └── macos.png ├── package-lock.json ├── package.json ├── plugins ├── PepperFlashPlayer.plugin │ └── Contents │ │ ├── Info.plist │ │ ├── MacOS │ │ └── PepperFlashPlayer │ │ └── _CodeSignature │ │ └── CodeResources ├── x32 │ ├── libpepflashplayer.so │ └── pepflashplayer32.dll └── x64 │ ├── libpepflashplayer.so │ └── pepflashplayer.dll ├── readme.md └── src ├── local ├── images │ ├── button_bkgd_small.jpg │ ├── icon.png │ └── logo.png ├── offline.html ├── start.html └── xp.css ├── main └── index.js └── renderer └── index.js /.github/workflows/build.yml: -------------------------------------------------------------------------------- 1 | name: Build 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | pull_request: 8 | branches: 9 | - main 10 | 11 | jobs: 12 | build: 13 | runs-on: ${{ matrix.os }} 14 | timeout-minutes: 10 15 | 16 | strategy: 17 | matrix: 18 | os: [ubuntu-latest, windows-latest, macos-latest] 19 | 20 | steps: 21 | - name: Checkout repository 22 | uses: actions/checkout@v2 23 | 24 | - name: Set up Node.js 25 | uses: actions/setup-node@v2 26 | 27 | with: 28 | node-version: '16' 29 | 30 | - name: Cache node_modules 31 | id: node-modules-cache 32 | uses: actions/cache@v3 33 | with: 34 | path: node_modules 35 | key: ${{ runner.os }}-node-modules-${{ hashFiles('package-lock.json') }} 36 | restore-keys: | 37 | ${{ runner.os }}-node-modules- 38 | 39 | - name: Install dependencies 40 | if: steps.node-modules-cache.outputs.cache-hit != 'true' 41 | run: npm install 42 | 43 | - name: Install Snapcraft 44 | if: steps.snapcraft-cache.outputs.cache-hit != 'true' && runner.os == 'Linux' 45 | run: | 46 | sudo snap install snapcraft --classic 47 | 48 | - name: Add tar and snap to PATH and install libarchive-tools 49 | if: runner.os == 'Linux' 50 | run: echo "$(dirname "$(which tar)")" >> $GITHUB_PATH && echo "/snap/bin" >> $GITHUB_PATH && sudo apt-get install -y libarchive-tools 51 | 52 | - name: Cache Electron binaries 53 | id: electron-cache 54 | uses: actions/cache@v3 55 | with: 56 | path: | 57 | ~/.cache/electron 58 | ~/.cache/electron-builder 59 | ~/AppData/Local/electron 60 | ~/AppData/Local/electron-builder 61 | key: ${{ runner.os }}-electron-${{ hashFiles('package.json') }} 62 | restore-keys: | 63 | ${{ runner.os }}-electron- 64 | 65 | - name: Run build script on Linux and MacOS 66 | if: runner.os == 'Linux' || runner.os == 'macOS' 67 | run: yarn dist 68 | env: 69 | PATH: ./node_modules/.bin:$PATH 70 | 71 | - name: Run build script on Windows 72 | if: runner.os == 'Windows' 73 | run: npx yarn dist 74 | 75 | - name: Zip portable builds 76 | if: runner.os == 'Windows' 77 | run: Compress-Archive -Path .\dist\win-unpacked\* -DestinationPath .\dist\Sploder-Portable-x64.zip && Compress-Archive -Path .\dist\win-ia32-unpacked\* -DestinationPath .\dist\Sploder-Portable-ia32.zip 78 | 79 | - name: Upload .exe files 80 | if: runner.os == 'Windows' 81 | uses: actions/upload-artifact@v4 82 | with: 83 | name: Windows Installer Files 84 | path: dist/*.exe 85 | 86 | - name: Upload Windows .zip files 87 | if: runner.os == 'Windows' 88 | uses: actions/upload-artifact@v4 89 | with: 90 | name: Windows Portable Files 91 | path: dist/*.zip 92 | 93 | - name: Upload .app files 94 | if: runner.os == 'macOS' 95 | uses: actions/upload-artifact@v4 96 | with: 97 | name: macOS Portable Files 98 | path: dist/mac 99 | 100 | - name: Upload .snap files 101 | if: runner.os == 'Linux' 102 | uses: actions/upload-artifact@v4 103 | with: 104 | name: Linux Snap Files 105 | path: dist/*.snap 106 | 107 | - name: Upload .deb files 108 | if: runner.os == 'Linux' 109 | uses: actions/upload-artifact@v4 110 | with: 111 | name: Linux deb Files 112 | path: dist/*.deb 113 | 114 | - name: Upload .rpm files 115 | if: runner.os == 'Linux' 116 | uses: actions/upload-artifact@v4 117 | with: 118 | name: Linux rpm Files 119 | path: dist/*.rpm 120 | 121 | - name: Upload .pacman files 122 | if: runner.os == 'Linux' 123 | uses: actions/upload-artifact@v4 124 | with: 125 | name: Linux pacman Files 126 | path: dist/*.pacman 127 | 128 | - name: Upload .AppImage files 129 | if: runner.os == 'Linux' 130 | uses: actions/upload-artifact@v4 131 | with: 132 | name: Linux AppImage Files 133 | path: dist/*.AppImage 134 | 135 | - name: Upload Linux .zip files 136 | if: runner.os == 'Linux' 137 | uses: actions/upload-artifact@v4 138 | with: 139 | name: Linux Portable Files 140 | path: dist/linux-unpacked 141 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | dist/ 2 | node_modules/ 3 | yarn-error.log 4 | yarn.lock -------------------------------------------------------------------------------- /.nvmrc: -------------------------------------------------------------------------------- 1 | 16.20.2 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 2, June 1991 3 | 4 | Copyright (C) 1989, 1991 Free Software Foundation, Inc., 5 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA 6 | Everyone is permitted to copy and distribute verbatim copies 7 | of this license document, but changing it is not allowed. 8 | 9 | Preamble 10 | 11 | The licenses for most software are designed to take away your 12 | freedom to share and change it. By contrast, the GNU General Public 13 | License is intended to guarantee your freedom to share and change free 14 | software--to make sure the software is free for all its users. This 15 | General Public License applies to most of the Free Software 16 | Foundation's software and to any other program whose authors commit to 17 | using it. (Some other Free Software Foundation software is covered by 18 | the GNU Lesser General Public License instead.) You can apply it to 19 | your programs, too. 20 | 21 | When we speak of free software, we are referring to freedom, not 22 | price. Our General Public Licenses are designed to make sure that you 23 | have the freedom to distribute copies of free software (and charge for 24 | this service if you wish), that you receive source code or can get it 25 | if you want it, that you can change the software or use pieces of it 26 | in new free programs; and that you know you can do these things. 27 | 28 | To protect your rights, we need to make restrictions that forbid 29 | anyone to deny you these rights or to ask you to surrender the rights. 30 | These restrictions translate to certain responsibilities for you if you 31 | distribute copies of the software, or if you modify it. 32 | 33 | For example, if you distribute copies of such a program, whether 34 | gratis or for a fee, you must give the recipients all the rights that 35 | you have. You must make sure that they, too, receive or can get the 36 | source code. And you must show them these terms so they know their 37 | rights. 38 | 39 | We protect your rights with two steps: (1) copyright the software, and 40 | (2) offer you this license which gives you legal permission to copy, 41 | distribute and/or modify the software. 42 | 43 | Also, for each author's protection and ours, we want to make certain 44 | that everyone understands that there is no warranty for this free 45 | software. If the software is modified by someone else and passed on, we 46 | want its recipients to know that what they have is not the original, so 47 | that any problems introduced by others will not reflect on the original 48 | authors' reputations. 49 | 50 | Finally, any free program is threatened constantly by software 51 | patents. We wish to avoid the danger that redistributors of a free 52 | program will individually obtain patent licenses, in effect making the 53 | program proprietary. To prevent this, we have made it clear that any 54 | patent must be licensed for everyone's free use or not licensed at all. 55 | 56 | The precise terms and conditions for copying, distribution and 57 | modification follow. 58 | 59 | GNU GENERAL PUBLIC LICENSE 60 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 61 | 62 | 0. This License applies to any program or other work which contains 63 | a notice placed by the copyright holder saying it may be distributed 64 | under the terms of this General Public License. The "Program", below, 65 | refers to any such program or work, and a "work based on the Program" 66 | means either the Program or any derivative work under copyright law: 67 | that is to say, a work containing the Program or a portion of it, 68 | either verbatim or with modifications and/or translated into another 69 | language. (Hereinafter, translation is included without limitation in 70 | the term "modification".) Each licensee is addressed as "you". 71 | 72 | Activities other than copying, distribution and modification are not 73 | covered by this License; they are outside its scope. The act of 74 | running the Program is not restricted, and the output from the Program 75 | is covered only if its contents constitute a work based on the 76 | Program (independent of having been made by running the Program). 77 | Whether that is true depends on what the Program does. 78 | 79 | 1. You may copy and distribute verbatim copies of the Program's 80 | source code as you receive it, in any medium, provided that you 81 | conspicuously and appropriately publish on each copy an appropriate 82 | copyright notice and disclaimer of warranty; keep intact all the 83 | notices that refer to this License and to the absence of any warranty; 84 | and give any other recipients of the Program a copy of this License 85 | along with the Program. 86 | 87 | You may charge a fee for the physical act of transferring a copy, and 88 | you may at your option offer warranty protection in exchange for a fee. 89 | 90 | 2. You may modify your copy or copies of the Program or any portion 91 | of it, thus forming a work based on the Program, and copy and 92 | distribute such modifications or work under the terms of Section 1 93 | above, provided that you also meet all of these conditions: 94 | 95 | a) You must cause the modified files to carry prominent notices 96 | stating that you changed the files and the date of any change. 97 | 98 | b) You must cause any work that you distribute or publish, that in 99 | whole or in part contains or is derived from the Program or any 100 | part thereof, to be licensed as a whole at no charge to all third 101 | parties under the terms of this License. 102 | 103 | c) If the modified program normally reads commands interactively 104 | when run, you must cause it, when started running for such 105 | interactive use in the most ordinary way, to print or display an 106 | announcement including an appropriate copyright notice and a 107 | notice that there is no warranty (or else, saying that you provide 108 | a warranty) and that users may redistribute the program under 109 | these conditions, and telling the user how to view a copy of this 110 | License. (Exception: if the Program itself is interactive but 111 | does not normally print such an announcement, your work based on 112 | the Program is not required to print an announcement.) 113 | 114 | These requirements apply to the modified work as a whole. If 115 | identifiable sections of that work are not derived from the Program, 116 | and can be reasonably considered independent and separate works in 117 | themselves, then this License, and its terms, do not apply to those 118 | sections when you distribute them as separate works. But when you 119 | distribute the same sections as part of a whole which is a work based 120 | on the Program, the distribution of the whole must be on the terms of 121 | this License, whose permissions for other licensees extend to the 122 | entire whole, and thus to each and every part regardless of who wrote it. 123 | 124 | Thus, it is not the intent of this section to claim rights or contest 125 | your rights to work written entirely by you; rather, the intent is to 126 | exercise the right to control the distribution of derivative or 127 | collective works based on the Program. 128 | 129 | In addition, mere aggregation of another work not based on the Program 130 | with the Program (or with a work based on the Program) on a volume of 131 | a storage or distribution medium does not bring the other work under 132 | the scope of this License. 133 | 134 | 3. You may copy and distribute the Program (or a work based on it, 135 | under Section 2) in object code or executable form under the terms of 136 | Sections 1 and 2 above provided that you also do one of the following: 137 | 138 | a) Accompany it with the complete corresponding machine-readable 139 | source code, which must be distributed under the terms of Sections 140 | 1 and 2 above on a medium customarily used for software interchange; or, 141 | 142 | b) Accompany it with a written offer, valid for at least three 143 | years, to give any third party, for a charge no more than your 144 | cost of physically performing source distribution, a complete 145 | machine-readable copy of the corresponding source code, to be 146 | distributed under the terms of Sections 1 and 2 above on a medium 147 | customarily used for software interchange; or, 148 | 149 | c) Accompany it with the information you received as to the offer 150 | to distribute corresponding source code. (This alternative is 151 | allowed only for noncommercial distribution and only if you 152 | received the program in object code or executable form with such 153 | an offer, in accord with Subsection b above.) 154 | 155 | The source code for a work means the preferred form of the work for 156 | making modifications to it. For an executable work, complete source 157 | code means all the source code for all modules it contains, plus any 158 | associated interface definition files, plus the scripts used to 159 | control compilation and installation of the executable. However, as a 160 | special exception, the source code distributed need not include 161 | anything that is normally distributed (in either source or binary 162 | form) with the major components (compiler, kernel, and so on) of the 163 | operating system on which the executable runs, unless that component 164 | itself accompanies the executable. 165 | 166 | If distribution of executable or object code is made by offering 167 | access to copy from a designated place, then offering equivalent 168 | access to copy the source code from the same place counts as 169 | distribution of the source code, even though third parties are not 170 | compelled to copy the source along with the object code. 171 | 172 | 4. You may not copy, modify, sublicense, or distribute the Program 173 | except as expressly provided under this License. Any attempt 174 | otherwise to copy, modify, sublicense or distribute the Program is 175 | void, and will automatically terminate your rights under this License. 176 | However, parties who have received copies, or rights, from you under 177 | this License will not have their licenses terminated so long as such 178 | parties remain in full compliance. 179 | 180 | 5. You are not required to accept this License, since you have not 181 | signed it. However, nothing else grants you permission to modify or 182 | distribute the Program or its derivative works. These actions are 183 | prohibited by law if you do not accept this License. Therefore, by 184 | modifying or distributing the Program (or any work based on the 185 | Program), you indicate your acceptance of this License to do so, and 186 | all its terms and conditions for copying, distributing or modifying 187 | the Program or works based on it. 188 | 189 | 6. Each time you redistribute the Program (or any work based on the 190 | Program), the recipient automatically receives a license from the 191 | original licensor to copy, distribute or modify the Program subject to 192 | these terms and conditions. You may not impose any further 193 | restrictions on the recipients' exercise of the rights granted herein. 194 | You are not responsible for enforcing compliance by third parties to 195 | this License. 196 | 197 | 7. If, as a consequence of a court judgment or allegation of patent 198 | infringement or for any other reason (not limited to patent issues), 199 | conditions are imposed on you (whether by court order, agreement or 200 | otherwise) that contradict the conditions of this License, they do not 201 | excuse you from the conditions of this License. If you cannot 202 | distribute so as to satisfy simultaneously your obligations under this 203 | License and any other pertinent obligations, then as a consequence you 204 | may not distribute the Program at all. For example, if a patent 205 | license would not permit royalty-free redistribution of the Program by 206 | all those who receive copies directly or indirectly through you, then 207 | the only way you could satisfy both it and this License would be to 208 | refrain entirely from distribution of the Program. 209 | 210 | If any portion of this section is held invalid or unenforceable under 211 | any particular circumstance, the balance of the section is intended to 212 | apply and the section as a whole is intended to apply in other 213 | circumstances. 214 | 215 | It is not the purpose of this section to induce you to infringe any 216 | patents or other property right claims or to contest validity of any 217 | such claims; this section has the sole purpose of protecting the 218 | integrity of the free software distribution system, which is 219 | implemented by public license practices. Many people have made 220 | generous contributions to the wide range of software distributed 221 | through that system in reliance on consistent application of that 222 | system; it is up to the author/donor to decide if he or she is willing 223 | to distribute software through any other system and a licensee cannot 224 | impose that choice. 225 | 226 | This section is intended to make thoroughly clear what is believed to 227 | be a consequence of the rest of this License. 228 | 229 | 8. If the distribution and/or use of the Program is restricted in 230 | certain countries either by patents or by copyrighted interfaces, the 231 | original copyright holder who places the Program under this License 232 | may add an explicit geographical distribution limitation excluding 233 | those countries, so that distribution is permitted only in or among 234 | countries not thus excluded. In such case, this License incorporates 235 | the limitation as if written in the body of this License. 236 | 237 | 9. The Free Software Foundation may publish revised and/or new versions 238 | of the General Public License from time to time. Such new versions will 239 | be similar in spirit to the present version, but may differ in detail to 240 | address new problems or concerns. 241 | 242 | Each version is given a distinguishing version number. If the Program 243 | specifies a version number of this License which applies to it and "any 244 | later version", you have the option of following the terms and conditions 245 | either of that version or of any later version published by the Free 246 | Software Foundation. If the Program does not specify a version number of 247 | this License, you may choose any version ever published by the Free Software 248 | Foundation. 249 | 250 | 10. If you wish to incorporate parts of the Program into other free 251 | programs whose distribution conditions are different, write to the author 252 | to ask for permission. For software which is copyrighted by the Free 253 | Software Foundation, write to the Free Software Foundation; we sometimes 254 | make exceptions for this. Our decision will be guided by the two goals 255 | of preserving the free status of all derivatives of our free software and 256 | of promoting the sharing and reuse of software generally. 257 | 258 | NO WARRANTY 259 | 260 | 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY 261 | FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN 262 | OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES 263 | PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED 264 | OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF 265 | MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS 266 | TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE 267 | PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, 268 | REPAIR OR CORRECTION. 269 | 270 | 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 271 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR 272 | REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, 273 | INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING 274 | OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED 275 | TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY 276 | YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER 277 | PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE 278 | POSSIBILITY OF SUCH DAMAGES. 279 | 280 | END OF TERMS AND CONDITIONS 281 | 282 | How to Apply These Terms to Your New Programs 283 | 284 | If you develop a new program, and you want it to be of the greatest 285 | possible use to the public, the best way to achieve this is to make it 286 | free software which everyone can redistribute and change under these terms. 287 | 288 | To do so, attach the following notices to the program. It is safest 289 | to attach them to the start of each source file to most effectively 290 | convey the exclusion of warranty; and each file should have at least 291 | the "copyright" line and a pointer to where the full notice is found. 292 | 293 | 294 | Copyright (C) 295 | 296 | This program is free software; you can redistribute it and/or modify 297 | it under the terms of the GNU General Public License as published by 298 | the Free Software Foundation; either version 2 of the License, or 299 | (at your option) any later version. 300 | 301 | This program is distributed in the hope that it will be useful, 302 | but WITHOUT ANY WARRANTY; without even the implied warranty of 303 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 304 | GNU General Public License for more details. 305 | 306 | You should have received a copy of the GNU General Public License along 307 | with this program; if not, write to the Free Software Foundation, Inc., 308 | 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. 309 | 310 | Also add information on how to contact you by electronic and paper mail. 311 | 312 | If the program is interactive, make it output a short notice like this 313 | when it starts in an interactive mode: 314 | 315 | Gnomovision version 69, Copyright (C) year name of author 316 | Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 317 | This is free software, and you are welcome to redistribute it 318 | under certain conditions; type `show c' for details. 319 | 320 | The hypothetical commands `show w' and `show c' should show the appropriate 321 | parts of the General Public License. Of course, the commands you use may 322 | be called something other than `show w' and `show c'; they could even be 323 | mouse-clicks or menu items--whatever suits your program. 324 | 325 | You should also get your employer (if you work as a programmer) or your 326 | school, if any, to sign a "copyright disclaimer" for the program, if 327 | necessary. Here is a sample; alter the names: 328 | 329 | Yoyodyne, Inc., hereby disclaims all copyright interest in the program 330 | `Gnomovision' (which makes passes at compilers) written by James Hacker. 331 | 332 | , 1 April 1989 333 | Ty Coon, President of Vice 334 | 335 | This General Public License does not permit incorporating your program into 336 | proprietary programs. If your program is a subroutine library, you may 337 | consider it more useful to permit linking proprietary applications with the 338 | library. If this is what you want to do, use the GNU Lesser General 339 | Public License instead of this License. 340 | -------------------------------------------------------------------------------- /build.bat: -------------------------------------------------------------------------------- 1 | @echo off 2 | rem set NODE_OPTIONS=--openssl-legacy-provider 3 | call npx yarn dist 4 | echo Build complete. Press any key to close. 5 | pause > nul 6 | -------------------------------------------------------------------------------- /build/icon.ico: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sploder-Saptarshi/Sploder-Launcher/896a4322f6ec26a5e2e8e1506f317e1d19829e3f/build/icon.ico -------------------------------------------------------------------------------- /build/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sploder-Saptarshi/Sploder-Launcher/896a4322f6ec26a5e2e8e1506f317e1d19829e3f/build/icon.png -------------------------------------------------------------------------------- /build/macos.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sploder-Saptarshi/Sploder-Launcher/896a4322f6ec26a5e2e8e1506f317e1d19829e3f/build/macos.png -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "Sploder", 3 | "version": "5.0.0", 4 | "author": "Saptarshi ", 5 | "main": "dist/main/main.js", 6 | "description": "Sploder Launcher", 7 | "license": "MIT", 8 | "scripts": { 9 | "dev": "electron-webpack dev", 10 | "compile": "electron-webpack", 11 | "dist-64bit": "yarn compile && electron-builder", 12 | "dist-32bit": "yarn compile && electron-builder --ia32", 13 | "dist": "yarn compile && (node -e \"if (process.platform === 'win32') { require('child_process').execSync('npx yarn electron-builder --ia32 --x64', { stdio: 'inherit' }); } else if (process.platform === 'darwin') { require('child_process').execSync('electron-builder --mac --x64', { stdio: 'inherit' }); } else { require('child_process').execSync('electron-builder --linux appimage snap deb rpm pacman', { stdio: 'inherit' }); }\")", 14 | "dist:dir": "yarn dist --dir -c.compression=store -c.mac.identity=null" 15 | }, 16 | "dependencies": { 17 | "discord-rpc": "^4.0.1", 18 | "source-map-support": "^0.5.16" 19 | }, 20 | "devDependencies": { 21 | "electron": "11.0.0", 22 | "electron-builder": "^22.4.1", 23 | "electron-webpack": "^2.7.0", 24 | "webpack": "~4.42.1", 25 | "yarn": "1.22.22" 26 | }, 27 | "build": { 28 | "asar": true, "files": [ "./dist/main/*" ], "win": {}, 29 | "publish": null, 30 | "appId": "com.sploder", 31 | "productName": "Sploder", 32 | "linux": { 33 | "target": ["snap", "AppImage", "deb", "rpm", "pacman"], 34 | "category": "Games", 35 | "icon": "build/icon.png" 36 | }, 37 | "mac": { 38 | "icon": "build/macos.png", 39 | "identity": null, 40 | "target": ["dir"] 41 | }, 42 | "nsis": { 43 | "allowElevation": "true", 44 | "oneClick": "false", 45 | "perMachine": "true", 46 | "allowToChangeInstallationDirectory": "true", 47 | "deleteAppDataOnUninstall": "true", 48 | "runAfterFinish": "true", 49 | "artifactName": "Sploder-Setup-${version}-${arch}.${ext}" 50 | }, 51 | "extraResources": [ 52 | "./plugins/**", 53 | "./src/local/**" 54 | ] 55 | } 56 | } 57 | -------------------------------------------------------------------------------- /plugins/PepperFlashPlayer.plugin/Contents/Info.plist: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | BuildMachineOSBuild 6 | 16G1314 7 | CFBundleDevelopmentRegion 8 | en_US 9 | CFBundleExecutable 10 | PepperFlashPlayer 11 | CFBundleGetInfoString 12 | Adobe Flash Player 30.0 d0 Copyright (c) 1996-2018 Adobe Systems Incorporated. All rights reserved 13 | CFBundleIdentifier 14 | com.macromedia.PepperFlashPlayer.pepper 15 | CFBundleInfoDictionaryVersion 16 | 6.0 17 | CFBundleName 18 | PepperFlashPlayer 19 | CFBundlePackageType 20 | BRPL 21 | CFBundleShortVersionString 22 | 30.0.0.127 23 | CFBundleSignature 24 | ???? 25 | CFBundleSupportedPlatforms 26 | 27 | MacOSX 28 | 29 | CFBundleVersion 30 | 30.0.0.127 31 | CFPlugInDynamicRegisterFunction 32 | 33 | CFPlugInDynamicRegistration 34 | NO 35 | DTCompiler 36 | com.apple.compilers.llvm.clang.1_0 37 | DTPlatformBuild 38 | 8B62 39 | DTPlatformVersion 40 | GM 41 | DTSDKBuild 42 | 16B2649 43 | DTSDKName 44 | macosx10.12 45 | DTXcode 46 | 0810 47 | DTXcodeBuild 48 | 8B62 49 | 50 | 51 | -------------------------------------------------------------------------------- /plugins/PepperFlashPlayer.plugin/Contents/MacOS/PepperFlashPlayer: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sploder-Saptarshi/Sploder-Launcher/896a4322f6ec26a5e2e8e1506f317e1d19829e3f/plugins/PepperFlashPlayer.plugin/Contents/MacOS/PepperFlashPlayer -------------------------------------------------------------------------------- /plugins/PepperFlashPlayer.plugin/Contents/_CodeSignature/CodeResources: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | files 6 | 7 | files2 8 | 9 | rules 10 | 11 | ^Resources/ 12 | 13 | ^Resources/.*\.lproj/ 14 | 15 | optional 16 | 17 | weight 18 | 1000 19 | 20 | ^Resources/.*\.lproj/locversion.plist$ 21 | 22 | omit 23 | 24 | weight 25 | 1100 26 | 27 | ^version.plist$ 28 | 29 | 30 | rules2 31 | 32 | .*\.dSYM($|/) 33 | 34 | weight 35 | 11 36 | 37 | ^(.*/)?\.DS_Store$ 38 | 39 | omit 40 | 41 | weight 42 | 2000 43 | 44 | ^(Frameworks|SharedFrameworks|PlugIns|Plug-ins|XPCServices|Helpers|MacOS|Library/(Automator|Spotlight|LoginItems))/ 45 | 46 | nested 47 | 48 | weight 49 | 10 50 | 51 | ^.* 52 | 53 | ^Info\.plist$ 54 | 55 | omit 56 | 57 | weight 58 | 20 59 | 60 | ^PkgInfo$ 61 | 62 | omit 63 | 64 | weight 65 | 20 66 | 67 | ^Resources/ 68 | 69 | weight 70 | 20 71 | 72 | ^Resources/.*\.lproj/ 73 | 74 | optional 75 | 76 | weight 77 | 1000 78 | 79 | ^Resources/.*\.lproj/locversion.plist$ 80 | 81 | omit 82 | 83 | weight 84 | 1100 85 | 86 | ^[^/]+$ 87 | 88 | nested 89 | 90 | weight 91 | 10 92 | 93 | ^embedded\.provisionprofile$ 94 | 95 | weight 96 | 20 97 | 98 | ^version\.plist$ 99 | 100 | weight 101 | 20 102 | 103 | 104 | 105 | 106 | -------------------------------------------------------------------------------- /plugins/x32/libpepflashplayer.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sploder-Saptarshi/Sploder-Launcher/896a4322f6ec26a5e2e8e1506f317e1d19829e3f/plugins/x32/libpepflashplayer.so -------------------------------------------------------------------------------- /plugins/x32/pepflashplayer32.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sploder-Saptarshi/Sploder-Launcher/896a4322f6ec26a5e2e8e1506f317e1d19829e3f/plugins/x32/pepflashplayer32.dll -------------------------------------------------------------------------------- /plugins/x64/libpepflashplayer.so: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sploder-Saptarshi/Sploder-Launcher/896a4322f6ec26a5e2e8e1506f317e1d19829e3f/plugins/x64/libpepflashplayer.so -------------------------------------------------------------------------------- /plugins/x64/pepflashplayer.dll: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sploder-Saptarshi/Sploder-Launcher/896a4322f6ec26a5e2e8e1506f317e1d19829e3f/plugins/x64/pepflashplayer.dll -------------------------------------------------------------------------------- /readme.md: -------------------------------------------------------------------------------- 1 | # Sploder Launcher 2 | 3 | A repository that aims to provide a standalone application to be able to access the Sploder-Revival project without needing to install Flash or downgraded applications system wide. 4 | 5 | Join the [Discord Server](https://discord.gg/cHGz362sdC) for the active community and development. 6 | 7 | ## Using without releases 8 | 9 | - Download the [latest release](https://github.com/Sploder-Saptarshi/Sploder-Launcher/releases/latest) 10 | - Run the installer 11 | 12 | ## How to build 13 | 14 | ### Dependencies 15 | 16 | - [node.js](https://nodejs.org/en) 17 | - [node version manager (nvm)](https://github.com/nvm-sh/nvm) 18 | 19 | ### Steps to Build 20 | 21 | - Run `nvm use` to switch to the node version specified in .nvmrc 22 | - Run `npm i` to install all necessary packages 23 | - Run `npm run dist` to build the project 24 | - The built files will be available in the dist folder. 25 | 26 | ### Steps to Debug 27 | 28 | - Run `nvm use` to switch to the node version specified in .nvmrc 29 | - Run `npm i` to install all necessary packages 30 | - Run `npm run dev` to start the electron development server 31 | -------------------------------------------------------------------------------- /src/local/images/button_bkgd_small.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sploder-Saptarshi/Sploder-Launcher/896a4322f6ec26a5e2e8e1506f317e1d19829e3f/src/local/images/button_bkgd_small.jpg -------------------------------------------------------------------------------- /src/local/images/icon.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sploder-Saptarshi/Sploder-Launcher/896a4322f6ec26a5e2e8e1506f317e1d19829e3f/src/local/images/icon.png -------------------------------------------------------------------------------- /src/local/images/logo.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Sploder-Saptarshi/Sploder-Launcher/896a4322f6ec26a5e2e8e1506f317e1d19829e3f/src/local/images/logo.png -------------------------------------------------------------------------------- /src/local/offline.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Sploder 8 | 9 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 56 | 57 |
34 | < 35 | 36 |
37 |


Whoops... Could not connect to the server.

38 |

Check your internet connection and try again.

39 |

If that does not work, please email saptarshi12345yt@gmail.com with 40 | your exact issue.

41 |
42 | 52 | 53 |
54 | 55 |
58 | 59 | 60 | 61 | 62 | -------------------------------------------------------------------------------- /src/local/start.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Sploder 8 | 9 | 121 | 165 | 166 | 167 |
168 |
169 | 170 |
Sploder
171 |
172 |
173 | 174 | 175 | 176 |
177 |
178 |
180 | 182 | 185 | 186 |
187 |
188 | 189 | 190 | -------------------------------------------------------------------------------- /src/main/index.js: -------------------------------------------------------------------------------- 1 | const { app, BrowserWindow, shell } = require("electron"); 2 | const path = require("path"); 3 | // If not on windows, disable RPC 4 | let DiscordRPC; 5 | if (process.platform == "win32") { 6 | DiscordRPC = require('discord-rpc'); 7 | } 8 | let win; 9 | let pluginName; 10 | const isDev = !app.isPackaged; // Change to false if you want to disable development mode and package the application. 11 | switch (process.platform) { 12 | case "win32": 13 | pluginName = process.arch == 'x64' ? 'x64/pepflashplayer.dll' : 'x32/pepflashplayer32.dll'; 14 | break; 15 | // If linux, use libpepflashplayer.so 16 | case "linux": 17 | pluginName = process.arch == 'x64' ? 'x64/libpepflashplayer.so' : 'x32/libpepflashplayer.so'; 18 | break; 19 | // If macOS, use PepperFlashPlayer.plugin 20 | case "darwin": 21 | pluginName = 'PepperFlashPlayer.plugin'; 22 | break; 23 | default: 24 | pluginName = 'x64/pepflashplayer.dll'; 25 | break; 26 | } 27 | 28 | if(isDev){ 29 | flashpath = path.join("../../../plugins/", pluginName) 30 | } else { 31 | flashpath = path.join(__dirname + "/../plugins/", pluginName) 32 | } 33 | if (process.platform === "linux") app.commandLine.appendSwitch("no-sandbox"); 34 | app.commandLine.appendSwitch("ppapi-flash-path", flashpath); 35 | app.commandLine.appendSwitch("ppapi-flash-version", "32.0.0.371"); 36 | // I do not know why this exists or what this does. 37 | app.commandLine.appendSwitch('disable-site-isolation-trials') 38 | function createWindow() { 39 | win = new BrowserWindow({ 40 | // Disable the titlebar for Windows XP theme. 41 | backgroundColor: "#32103C", 42 | frame:false, 43 | minWidth:640, 44 | minHeight: 320, 45 | show: false, // Initially hide the new window 46 | webPreferences: { 47 | // Who cares about security? 48 | // I'll surely have to address this sometime soon though. 49 | enableRemoteModule: true, 50 | nodeIntegration: true, 51 | devTools: true, 52 | // Must be enabled to allow flash to run. 53 | plugins: true, 54 | }, 55 | 56 | } 57 | ); 58 | macosMenu = [ 59 | { 60 | label: app.name, 61 | submenu: [ 62 | { 63 | label: "About " + app.name, 64 | role: "about" 65 | }, 66 | { 67 | type: "separator" 68 | }, 69 | { 70 | label: "Quit", 71 | role: "quit" 72 | } 73 | ] 74 | }, 75 | // Add edit menu for macOS 76 | { 77 | label: "Edit", 78 | submenu: [ 79 | { 80 | label: "Undo", 81 | role: "undo" 82 | }, 83 | { 84 | label: "Redo", 85 | role: "redo" 86 | }, 87 | { 88 | type: "separator" 89 | }, 90 | { 91 | label: "Cut", 92 | role: "cut" 93 | }, 94 | { 95 | label: "Copy", 96 | role: "copy" 97 | }, 98 | { 99 | label: "Paste", 100 | role: "paste" 101 | }, 102 | { 103 | label: "Select All", 104 | role: "selectAll" 105 | } 106 | ] 107 | } 108 | ]; 109 | // If not on macOS, disable the menu. 110 | if (process.platform !== "darwin") { 111 | win.setMenu(null); 112 | } else { 113 | win.setMenu(macosMenu); 114 | } 115 | win.maximize(); 116 | if(isDev){ 117 | win.openDevTools(); 118 | } 119 | // Load the custom Windows XP titlebar. 120 | if(isDev){ 121 | startpath = "/../../src/local/start.html?url=" 122 | } else { 123 | startpath = "/../../resources/src/local/start.html?url=" 124 | } 125 | win.loadURL("file:///" + app.getAppPath().replace(/\\/g, '/') + startpath + "https://www.sploder.net/update"); 126 | win.webContents.on('did-finish-load', () => { 127 | win.show(); 128 | }); 129 | win.webContents.on('new-window', (event, url) => { 130 | if (url.includes("/make/publish.php?s=") || url.includes("&inLauncher=1")) { 131 | // Internally handle the new window by creating a popup window 132 | // The URL should be on "file:///" + app.getAppPath().replace(/\\/g, '/') + URL 133 | event.preventDefault(); 134 | win.newwin = new BrowserWindow({ 135 | backgroundColor: "#32103C", 136 | width: 800, 137 | height: 600, 138 | minWidth: 640, 139 | minHeight: 320, 140 | frame: false, 141 | show: false, // Initially hide the new window 142 | webPreferences: { 143 | nodeIntegration: true, 144 | enableRemoteModule: true, 145 | nodeIntegration: true, 146 | plugins: true, 147 | }, 148 | }); 149 | win.newwin.setMenu(null); 150 | win.newwin.loadURL("file:///" + app.getAppPath().replace(/\\/g, '/') + startpath + url); 151 | win.newwin.webContents.on('did-finish-load', () => { 152 | win.newwin.show(); 153 | }); 154 | win.newwin.on("closed", () => { 155 | win.newwin = null; 156 | }); 157 | win.newwin.webContents.on('new-window', (event, url) => { 158 | event.preventDefault(); 159 | shell.openExternal(url); 160 | }); 161 | } else { 162 | event.preventDefault(); 163 | shell.openExternal(url); 164 | } 165 | }); 166 | } 167 | 168 | app.whenReady().then(() => { 169 | createWindow(); 170 | 171 | app.on("activate", function () { 172 | if (BrowserWindow.getAllWindows().length === 0) createWindow(); 173 | }); 174 | }); 175 | 176 | app.on("window-all-closed", function () { 177 | app.quit(); 178 | }); 179 | 180 | 181 | if (process.platform == "win32") { 182 | const clientId = '915116210570539058'; 183 | const rpc = new DiscordRPC.Client({ transport: 'ipc' }); 184 | const startTimestamp = new Date(); 185 | 186 | async function setActivity() { 187 | if (!rpc || !win) { 188 | return; 189 | } 190 | const boops = await win.webContents.executeJavaScript('rpcinfo'); 191 | rpc.setActivity({ 192 | details: `${boops}`, 193 | startTimestamp, 194 | largeImageKey: 'icon', 195 | largeImageText: `${boops}` 196 | }); 197 | } 198 | 199 | rpc.on('ready', () => { 200 | setActivity(); 201 | setInterval(() => { 202 | setActivity(); 203 | }, 15e3); 204 | }); 205 | 206 | rpc.login({ clientId }).catch(); 207 | } 208 | -------------------------------------------------------------------------------- /src/renderer/index.js: -------------------------------------------------------------------------------- 1 | // Initial welcome page. Delete the following line to remove it. 2 | 'use strict';const styles=document.createElement('style');styles.innerText=`@import url(https://unpkg.com/spectre.css/dist/spectre.min.css);.empty{display:flex;flex-direction:column;justify-content:center;height:100vh;position:relative}.footer{bottom:0;font-size:13px;left:50%;opacity:.9;position:absolute;transform:translateX(-50%);width:100%}`;const vueScript=document.createElement('script');vueScript.setAttribute('type','text/javascript'),vueScript.setAttribute('src','https://unpkg.com/vue'),vueScript.onload=init,document.head.appendChild(vueScript),document.head.appendChild(styles);function init(){Vue.config.devtools=false,Vue.config.productionTip=false,new Vue({data:{versions:{electron:process.versions.electron,electronWebpack:require('electron-webpack/package.json').version}},methods:{open(b){require('electron').shell.openExternal(b)}},template:`

Welcome to your new project!

Get qwdqwd now and take advantage of the great documentation at hand.


`}).$mount('#app')} 3 | --------------------------------------------------------------------------------