GithubHelp home page GithubHelp logo

warp's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

warp's Issues

Export warp-packer as a library

It would be cool if other rust tooling was able to use the functionality that warp-packer provides.

This would mostly mean putting some functions that are currently in main.rs into a lib.rs file and make them public.
Making the magic string public would also be very useful.

Another great step would be publishing to crates.io. But using it from GitHub would also be possible.

resulting executable is dynamically linked instead of statically linked

I am trying to setup docker build process and I am able to build and app, but for some reason the final executable is dynamically linked.

MyApp: ELF 64-bit LSB pie executable x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2, for GNU/Linux 3.2.0, BuildID[sha1]=d405babc210901599bb80605a87853e2a1f662ba, stripped

All relevant files could be found:
https://gist.github.com/leapingbytes/b046a1309ca8fa6c75e2b2bf6dc45720

Any suggestions would be highly appreciated.

ARM Support

I plan to use this project for cdr/code-server but I'll need ARM builds since I intend it to be used for ARM builds and possibly for normal builds as part of an experiment.

can't find crate for `std`

I try compile this project ,but failed like this:
image

[root@iz0xi6fyb0guktgu5ux21tz warp]# make
make build
make[1]: Entering directory `/root/warp'
cargo build -p warp-runner --release --target x86_64-unknown-linux-gnu
   Compiling warp-runner v0.3.0 (/root/warp/warp-runner)
warning: trait objects without an explicit `dyn` are deprecated
  --> warp-runner/src/main.rs:46:29
   |
46 | fn main() -> Result<(), Box<Error>> {
   |                             ^^^^^ help: use `dyn`: `dyn Error`
   |
   = note: `#[warn(bare_trait_objects)]` on by default

    Finished release [optimized] target(s) in 3.16s
strip target/x86_64-unknown-linux-gnu/release/warp-runner
cargo build -p warp-runner --release --target x86_64-pc-windows-gnu
   Compiling approx v0.1.1
error[E0463]: can't find crate for `std`
  |
  = note: the `x86_64-pc-windows-gnu` target may not be installed

error: aborting due to previous error

For more information about this error, try `rustc --explain E0463`.
error: Could not compile `approx`.

To learn more, run the command again with --verbose.
make[1]: *** [build] Error 101
make[1]: Leaving directory `/root/warp'
make: *** [all] Error 2
[root@iz0xi6fyb0guktgu5ux21tz warp]# ^C

Can you help me? Thank you very much

Could not load file or assembly 'System.Runtime'

Windows - .NET Core 2.1

After packing, exe throws error:

Unhandled Exception: System.IO.FileNotFoundException:
Could not load file or assembly 'System.Runtime, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a' or one of its dependencies.

Where are my dlls are:
CoreApp.dll
Microsoft.AspNetCore.Http.Abstractions.dll
Microsoft.AspNetCore.Http.Features.dll
Microsoft.Extensions.Primitives.dll
Newtonsoft.Json.dll
SendGrid.dll
SevenZipSharp.dll
System.Configuration.ConfigurationManager.dll
System.Runtime.CompilerServices.Unsafe.dll
System.Security.Cryptography.ProtectedData.dll
System.Security.Permissions.dll
System.Text.Encodings.Web.dll

Any clues?

Erlang/OTP support

I like to help for supporting Erlang. What do we need to make it possible?

"Error: No tarball found inside binary" (Mac & Linux only)

I have a set of binaries (application + dependency libraries) that I'm using warp to pack as part of my automated workflow. However, lately, the packed binary has been failing to run with a "No tarball found inside binary" error message.

This only happens on Mac and Linux (Ubuntu). The packed binary runs as expected on Windows.

Also, and this is weird, this was working until today.

I even tried running the warp packer manually, outside my workflow, to the same result: works on Windows, does not work on other platforms.

I should also mention that on all 3 platforms, the packed binary does have the gzip magic header that the runner is looking for.

Any idea what might be going on? Since nothing has changed on the warp side, could something in my payload be tripping it? (Though, I can't think of anything I changed that could have caused it to drop dead so suddenly)

32 Bit support ?

Is there any way to compile windows executables for 32-bit systems ?

Application cache path should be unique per application version (or hash).

Not sure if this is a big issue but raising so there is a record of a discussion.

Currently, the cache path using the application executable name prog:

https://github.com/dgiagio/warp/blob/master/warp-runner/src/main.rs#L32-L38

Could this be problematic if:

  • Two applications have the same name
  • Two different versions of an app are run.

Possible solution: include a deterministic GUID and warp-packer time that is then subsequently used as the cache folder.

Would this work with Python?

Do you think this would work to package Python applications?

Using conda-pack I have a standalone relocatable self-contained directory (containing Python core, all 3rd party dependencies and the application) and a launch script, say, on Linux. It just needs to be packed/unpacked, so it seems warp might work for this use case also.

Is there a docker image available?

Hi. Thank you for a great tool
I'm currently using docker to build my project and thought of using warp-packer as a packing stage. Searched through the DockerHub but was unable to find one.
Is there a docker image available? If not, maybe it would be a good idea for a feature request?
Thank you.

[Windows] Parenthesis in packaged filename causes "not recognized as ... command" error

When downloading a file that already exists, browsers generally name the second version of the file something like "$file(1).exe". This causes warp-runner to fail to run.

To reproduce

  1. Create a app folder
  2. Create a launch.cmd script inside that folder with the only contents being echo "app ran!"
  3. warp-packer --arch windows-x64 --input_dir app --exec launch.cmd --output "app(1).exe"
  4. "app(1).exe"
'C:\Users\Mitch\AppData\Local\warp\packages\app' is not recognized as an internal or external command,
operable program or batch file.
  1. SET WARP_TRACE=1
  2. "app(1).exe"
2022-04-01 20:43:55,615 TRACE [warp_runner] self_path="C:\\dev\\warp\\app(1).exe"
2022-04-01 20:43:55,615 TRACE [warp_runner] self_file_name="app(1).exe"
2022-04-01 20:43:55,616 TRACE [warp_runner] cache_path="C:\\Users\\Mitch\\AppData\\Local\\warp\\packages\\app(1).exe"
2022-04-01 20:43:55,616 TRACE [warp_runner] target_exec="launch.cmd"
2022-04-01 20:43:55,617 TRACE [warp_runner] target_path="C:\\Users\\Mitch\\AppData\\Local\\warp\\packages\\app(1).exe\\launch.cmd"
2022-04-01 20:43:55,617 TRACE [warp_runner] cache is up-to-date
2022-04-01 20:43:55,618 TRACE [warp_runner::executor] target="C:\\Users\\Mitch\\AppData\\Local\\warp\\packages\\app(1).exe\\launch.cmd"
2022-04-01 20:43:55,618 TRACE [warp_runner::executor] args=[]
'C:\Users\Mitch\AppData\Local\warp\packages\app' is not recognized as an internal or external command,
operable program or batch file.

Cause

cmd /c %path% (as used here) doesn't play nice with special characters.

Workaround

In my case, I only have a launch.cmd so that I could set an environment variable before my app ran.
However, I was able to move that env-var-setting to the very beginning of my executable, at which point I was able to bypass running cmd /c.

Is there anyway to debug this?

A minimal example works fine, but when I tried on a larger application i got

Specify --help for a list of available options and commands.
Unrecognized command or argument 'MyApp.exe'

But I can run the app just fine from the warp packages folder in appdata.

Can I get some more verbose output somehow to try to figure out whats wrong?

warp-packer windows-x64 on linux

Tried to run the following command on Ubuntu 18.04:

warp-packer --arch windows-x64 --input_dir ./bin/Release/netcoreapp2.2/win-x64/publish --exec nvidia-dicom.exe --output nvidia-dicom.exe

and got the following error:

Downloading runner from https://github.com/dgiagio/warp/releases/download/v0.1.1/windows-x64.warp-runner...
Error: Inner { kind: ClientError(404), url: Some("https://github.com/dgiagio/warp/releases/download/v0.1.1/windows-x64.warp-runner") }

Q: is this supported? packing a Windows build on Linux or vice versa?

Also, the link printed with the error points to 404 page.

"Error: No tarball found inside binary"

Replicate

On Linux, follow the steps from #37 (comment) to create a Windows x64 build, but run the application on Windows. I don't know if the problem exists when performing the build steps on Windows.

Expected

Running the re-packed executable launches the application.

Actual

The following error message is displayed, then the program exits:

Error: Custom ( kind: Other, error: StringError("no tarball found inside binary") )

Workaround

The user must delete C:\Users\%USERNAME%\AppData\Local\warp\packages\*.exe\.

Details

This is especially problematic because if the user double-clicks on the executable, a command window is briefly shown then it closes without launching the app. The error message goes by too quickly for the user to see. Even if the error message remained visible (e.g., PAUSE in a .bat file), it is too cryptic to inform the user how to proceed.

So do i need Mac, Linux and windows systems?

Or can I just change the -r and everything just works?

Got a simple Discord bot that the source is available for however that is 100% hostile to anyone that wants to "run" the bot and gives zero f***s about code.

So being able to publish the three binaries ready to go from my windows box would be pretty great.

Thanks

Support linux-musl-x64

I'd like to be able to use Warp with .NET Core to target linux-musl-x64. Right now only linux-x64 is supported.

Support for linux-musl-x64 would allow me to layer binaries onto the mcr.microsoft.com/dotnet/core/runtime-deps:3.1-alpine container.

This would save over 100 (!) MB in container size compared to the Debian-based runtime-deps container, bringing the total to around 23 MB (10 for container, 13 for binary) for a basic Hello World application.

And that would be really lightweight.

Distribute as global package

Hi, this looks fantastic.

Please consider publishing warp as:

  • chocolatey package
  • npm package
  • dotnet cli global tool

That way, it will be easier for some folks to obtain the tool and keep track of updates when you issue new versions. It will also automatically be put on the PATH if desired by the user!

proxy support

Hello.
Windows version of warp-packer currently does not seem to support proxy as I find it cannot proceed on with downloading warp-runner in my corporate environment.
Could you either add proxy support or give a guidance to use manually downloaded version of warp-runner instead?
Thanks.

Making a self-contained jq binary

Hey, sorry for posting this to the issues but I could not figure out how to create a self-contained version of jq. I'm using DockerSlim and the images come out wayyyyy smaller when I only include binaries. How could I use warp-packer to create a self-contained jq that has all the /usr/lib and /lib dependencies bundled into the single file?

Error: Os { code: 21, kind: Other, message: "Is a directory" }

I'm attempting to use warp-packer to package a directory of files alongside a single go binary and hit the error titled. It's a bit cryptic so I started yanking stuff out and noticed it's only occurring when a directory exists in myapp.

Expand to view output from tree
.
├── exec
├── hugo
└── site
    ├── archetypes
    │   └── default.md
    ├── config.toml
    ├── content
    │   └── post
    │       └── welcome.md
    ├── data
    ├── layouts
    ├── static
    └── themes
        ├── after-dark
        │   ├── CHANGELOG.md
        │   ├── COPYING
        │   ├── README.md
        │   ├── after-dark-6.13.2.tgz
        │   ├── archetypes
        │   │   ├── default.md
        │   │   ├── post.md
        │   │   └── search.md
        │   ├── assets
        │   │   └── css
        │   │       ├── custom.css
        │   │       ├── theme.css
        │   │       └── vendor
        │   │           └── hack
        │   │               ├── dark-grey.css
        │   │               ├── dark.css
        │   │               ├── hack.css
        │   │               ├── solarized-dark.css
        │   │               └── standard.css
        │   ├── bin
        │   │   ├── help
        │   │   ├── install
        │   │   └── upgrade
        │   ├── data
        │   │   └── npm
        │   │       └── latest.json
        │   ├── docker
        │   │   └── hugo
        │   │       └── Dockerfile
        │   ├── docs
        │   │   ├── archetypes
        │   │   │   ├── feature.md
        │   │   │   ├── module.md
        │   │   │   ├── shortcode.md
        │   │   │   └── validate.md
        │   │   ├── config.toml
        │   │   ├── content
        │   │   │   ├── _index.md
        │   │   │   ├── extra
        │   │   │   │   └── high-tea.md
        │   │   │   ├── feature
        │   │   │   │   ├── _index.md
        │   │   │   │   ├── air-gapping.md
        │   │   │   │   ├── code-highlighter.md
        │   │   │   │   ├── custom-layouts.md
        │   │   │   │   ├── custom-styles.md
        │   │   │   │   ├── display-variants.md
        │   │   │   │   ├── error-page.md
        │   │   │   │   ├── fetch-injection.md
        │   │   │   │   ├── fuzzy-search.md
        │   │   │   │   ├── index-blocking.md
        │   │   │   │   ├── jit-requests.md
        │   │   │   │   ├── keywords-meta.md
        │   │   │   │   ├── last-modified.md
        │   │   │   │   ├── lazy-loading.md
        │   │   │   │   ├── link-typing.md
        │   │   │   │   ├── module-system.md
        │   │   │   │   ├── online-help.md
        │   │   │   │   ├── post-bylines.md
        │   │   │   │   ├── post-images.md
        │   │   │   │   ├── quick-installer.md
        │   │   │   │   ├── referrer-policy.md
        │   │   │   │   ├── related-content.md
        │   │   │   │   ├── release-hashes.md
        │   │   │   │   ├── section-menu.md
        │   │   │   │   ├── snippets.md
        │   │   │   │   ├── social-meta.md
        │   │   │   │   ├── structured-data.md
        │   │   │   │   ├── svg-favicon.md
        │   │   │   │   ├── table-of-contents.md
        │   │   │   │   ├── taxonomy-pages.md
        │   │   │   │   ├── telegram-iv.md
        │   │   │   │   ├── trim-color.md
        │   │   │   │   ├── upgrade-script.md
        │   │   │   │   └── webmaster-tools.md
        │   │   │   ├── module
        │   │   │   │   ├── _index.md
        │   │   │   │   ├── fractal-forest.md
        │   │   │   │   ├── hall-of-mirrors.md
        │   │   │   │   ├── toxic-swamp
        │   │   │   │   │   └── configuration.md
        │   │   │   │   ├── toxic-swamp.md
        │   │   │   │   └── voyeur.md
        │   │   │   ├── search
        │   │   │   │   └── _index.md
        │   │   │   ├── shortcode
        │   │   │   │   ├── _index.md
        │   │   │   │   ├── alert.md
        │   │   │   │   ├── blockquote.md
        │   │   │   │   ├── button-group.md
        │   │   │   │   ├── button.md
        │   │   │   │   ├── card.md
        │   │   │   │   ├── external.md
        │   │   │   │   ├── figure.md
        │   │   │   │   ├── form-group.md
        │   │   │   │   ├── form.md
        │   │   │   │   ├── help-block.md
        │   │   │   │   ├── label.md
        │   │   │   │   ├── progress.md
        │   │   │   │   ├── text-area.md
        │   │   │   │   ├── text-input.md
        │   │   │   │   └── throbber.md
        │   │   │   └── validate.md
        │   │   ├── index.html
        │   │   ├── layouts
        │   │   │   ├── extra
        │   │   │   │   ├── list.html
        │   │   │   │   └── single.html
        │   │   │   ├── feature
        │   │   │   │   ├── list.html
        │   │   │   │   └── single.html
        │   │   │   ├── index.html
        │   │   │   ├── module
        │   │   │   │   ├── list.html
        │   │   │   │   └── single.html
        │   │   │   ├── partials
        │   │   │   │   ├── category-link.html
        │   │   │   │   ├── definition-data.html
        │   │   │   │   ├── feature-link.html
        │   │   │   │   ├── module-latest.html
        │   │   │   │   ├── module-link.html
        │   │   │   │   └── shortcode-link.html
        │   │   │   ├── shortcode
        │   │   │   │   ├── list.html
        │   │   │   │   └── single.html
        │   │   │   └── shortcodes
        │   │   │       └── include.html
        │   │   ├── resources
        │   │   │   └── _gen
        │   │   │       └── assets
        │   │   │           └── css
        │   │   │               └── css
        │   │   │                   ├── theme.css_d3f53f09220d597dac26fe7840c31fc9.content
        │   │   │                   └── theme.css_d3f53f09220d597dac26fe7840c31fc9.json
        │   │   ├── s3_website.yml
        │   │   ├── static
        │   │   │   └── images
        │   │   │       ├── addon-high-tea_1440x900-fs8.png
        │   │   │       ├── addon-high-tea_720x450-fs8.png
        │   │   │       ├── instant-view-fs8.png
        │   │   │       ├── minimal-mac_1600x1200-fs8.png
        │   │   │       ├── minimal-mac_800x600-fs8.png
        │   │   │       ├── social-awareness-fs8.png
        │   │   │       └── wtfpl.svg
        │   │   └── themes
        │   │       └── after-dark -> ../..
        │   ├── images
        │   │   ├── minimal-mac.png
        │   │   ├── screenshot.png
        │   │   └── tn.png
        │   ├── layouts
        │   │   ├── 404.html
        │   │   ├── _default
        │   │   │   ├── baseof.html
        │   │   │   ├── index.json
        │   │   │   ├── list.html
        │   │   │   ├── search.html
        │   │   │   ├── single.html
        │   │   │   ├── taxonomy.html
        │   │   │   └── terms.html
        │   │   ├── index.html
        │   │   ├── partials
        │   │   │   ├── async-scripts.html
        │   │   │   ├── components
        │   │   │   │   ├── alert.html
        │   │   │   │   ├── button.html
        │   │   │   │   ├── buttongroup.html
        │   │   │   │   ├── card.html
        │   │   │   │   ├── common
        │   │   │   │   │   └── textattrs.html
        │   │   │   │   ├── form.html
        │   │   │   │   ├── formactions.html
        │   │   │   │   ├── formgroup.html
        │   │   │   │   ├── helpblock.html
        │   │   │   │   ├── label.html
        │   │   │   │   ├── progress.html
        │   │   │   │   ├── select.html
        │   │   │   │   ├── textarea.html
        │   │   │   │   ├── textinput.html
        │   │   │   │   └── throbber.html
        │   │   │   ├── global-styles.html
        │   │   │   ├── head
        │   │   │   │   ├── favicon.html
        │   │   │   │   └── site-verification.html
        │   │   │   ├── menu.html
        │   │   │   ├── meta
        │   │   │   │   ├── http-referrer.html
        │   │   │   │   ├── name-author.html
        │   │   │   │   ├── ogimage-maybe.html
        │   │   │   │   ├── telegram-channel-maybe.html
        │   │   │   │   └── theme-color.html
        │   │   │   ├── modules-footer.html
        │   │   │   ├── modules.html
        │   │   │   ├── page-summary.html
        │   │   │   ├── pagination.html
        │   │   │   ├── post
        │   │   │   │   ├── byline.html
        │   │   │   │   ├── category-link.html
        │   │   │   │   ├── meta.html
        │   │   │   │   ├── related-content.html
        │   │   │   │   └── tag-link.html
        │   │   │   ├── powered-by.html
        │   │   │   ├── shortcode
        │   │   │   │   ├── external.html
        │   │   │   │   └── navmenu.html
        │   │   │   └── toc-maybe.html
        │   │   ├── post
        │   │   │   └── single.html
        │   │   └── shortcodes
        │   │       ├── blockquote.html
        │   │       ├── external.html
        │   │       ├── figure.html
        │   │       ├── hackcss-alert.html
        │   │       ├── hackcss-button.html
        │   │       ├── hackcss-buttongroup.html
        │   │       ├── hackcss-card.html
        │   │       ├── hackcss-form.html
        │   │       ├── hackcss-formgroup.html
        │   │       ├── hackcss-helpblock.html
        │   │       ├── hackcss-label.html
        │   │       ├── hackcss-progress.html
        │   │       ├── hackcss-textarea.html
        │   │       ├── hackcss-textinput.html
        │   │       ├── hackcss-throbber.html
        │   │       └── navmenu.html
        │   ├── package.json
        │   └── static
        │       ├── css
        │       │   └── syntax.css
        │       └── js
        │           ├── fuse.min.js
        │           ├── lazysizes.min.js
        │           ├── lodash.custom.min.js
        │           ├── mark.min.js
        │           ├── smoothscroll.js
        │           └── vue.min.js
        └── fractal-forest
            ├── CHANGELOG.md
            ├── COPYING
            ├── Dockerfile
            ├── README.md
            ├── bin
            │   └── generate-hashes.sh
            ├── layouts
            │   └── partials
            │       └── modules
            │           └── fractal-forest
            │               └── index.html
            ├── package.json
            └── static
                ├── bpg
                │   └── cinemagraph-6.bpg
                └── js
                    ├── bpgdec.js
                    ├── bpgdec.js.sha384
                    ├── bpgdec8.js
                    ├── bpgdec8.js.sha384
                    ├── bpgdec8a.js
                    └── bpgdec8a.js.sha384

68 directories, 205 files

Here's the contents of my exec file:

#!/bin/sh

DIR="$(cd "$(dirname "$0")" ; pwd -P)"
HUGO_EXE="$DIR/hugo"
SITE_PATH="$DIR/site"

exec "$HUGO_EXE" -s "$SITE_PATH" "$@

Here's the command I ran to produce the error:

./warp-packer --arch macos-x64 --input_dir myappp --exec exec --output ad

And the output from the packer --version flag: warp-packer 0.2.1

If I remove the site directory packing works fine and I'm able to execute. Not sure what to try next. I wasn't able to find anything about the error online and finagling my exec script had no effect.

Please let me know if you'd like me to upload a test case. The source code is open.

linux-arm architecture

As far as I understood linux-arm architecture is not supported.
Are there any plans to implement it?

.NET Core native dependency problems

The application has a dependency to native library (.so) file. It is extracted from the resources of .dll file and placed into the same folder where the executalbe is running.
When the warped application is running it cannot see native libraries that are placed in the working directory.
Not warped application working fine.

Target OS: ubuntu 18.01
netcore SDK version: 2.1.502
Target framework: netcoreapp2.0

If I copy ntive libs into the publish warping it then everything works.

Can the runner window start hidden?

I'm trying Warp with a WPF app in net core 3. When it runs it shows a console window followed by the WPF window, wich runs as expected.

There is a way to hide the runner window? It is confusing as it stays open as the WPF app is running.

Updating

How do you update the app local cache? Right now I’m having to manually delete this.

Remote Update/Auto-Update functionality

Very cool project!

I haven't dug too much into it, but had an idea.

Could you have a remote location for the exe or source files?
The idea is that you release updates for distributed users, so the remote users have the same experience as users on a network.

Ability to choose compression level and algorithm

Using something like LZMA or bzip would reduce the size. I estimate on my app, a factor of like 1.8x.
I don't know how quick it would be to decompress, but having the choice would allow tailoring of that.
I assume gzip is used for speed.

Application name should not be included in CLI args

Hi this looks like a promising tool, thanks for sharing.

Given this code:

using System;

namespace myapp
{
    class Program
    {
        static void Main(string[] args)
        {
            Console.WriteLine($"Args: {string.Join(";", args)}");
        }
    }
}

I get different output compared to just using dotnet run:

D:\dev\temp\myapp> dotnet run stuff
Args: stuff
D:\dev\temp\myapp> .\myapp.exe stuff
Args: myapp.exe;stuff
D:\dev\temp\myapp>

The expected result should not include myapp.exe.

when start Java warped on windows, there is a cmd window, how to hide it?

thank you for great work ! i have followed:#51 to wrap my java program on windows 10. and i succeed to build my "exe“. but when start the ”exe“, it always started with a cmd window. this is not elegant for my customers. i tried to hide it in the way below ,but failed, all this can do is to minimize the window.

@ECHO OFF
:: below is to minimized cmd window
if not DEFINED IS_MINIMIZED set IS_MINIMIZED=1 && start "" /min "%~dpnx0" %* && exit
SETLOCAL
SET "JAVA_EXE=%~dp0\jre\bin\java.exe"
SET "APP_JAR=%~dp0\demo.jar"
%JAVA_EXE% -jar %APP_JAR% -Djava.ext.dirs=%~dp0\jre\lib

this is the cmd i used to wrap my exe, i think the key is the param "exec", need your help~~
warp-packer.exe --arch windows-x64 --input_dir "./bundle" --exec run.cmd --output cntvFtpClientV5.exe

thank you for tool by the way.

single executable of a php application

is it possible like with node to make a single executable of a php application (such as laravel and composer)? I see a great need in bundling composer dependencies.

Feature Request: Splash Screen or Small Bootstrap exe?

A common practice for slow loading applications (especially professional and enterprise applications) is to show a splash screen while they are loading. -- Some frameworks bake this in and make it a really easy thing to setup (i.e. in C#/WPF it's as simple as adding an image to the project and declaring it a splash screen).

Unfortunately, Warped executables can add a significant loading time and delay any built-in splash screens by quite a bit (i.e. it can add up to 7 seconds of loading time to my app, where the users sometimes click the exe multiple times).

I understand that adding a blanket "show this bitmap while unpacking" is probably a lot to swallow as a feature request (especially given the cross platform nature of this project), and could easily be considered "out of scope", and just in general be a huge headache to implement. -- So, instead, I'm suggesting an alternate route that would basically enable us to build this in ourselves, with hopefully minimal effort on your part...

Suggested Implementation
The workaround I suggest is this: let us declare a bootstrap executable (in addition to the main executable) while packaging.

Then during the unpacking step, you just unpack and run that bootstrap exe before anything else (and you just continue unpacking the rest of the files in the background, and proceed like normal -- no additional changes would be necessary).

This would give us a vector where we could put our own small bit of bootstrapping code (such as displaying a splash screen window) while the rest of the application was being unpacked. -- (And it would be our own responsibility to clean up the window / close the app, etc, once the full application started.)

Is this a reasonable request? -- if not, what would be a reasonable way to achieve the desired result?

A way to specify with version of glibc will be used?

I have to switch some of our net core binaries to run on a rhel 7.x instance and hit a show stopper where warp-packer as well as binaries I made with this awesome tool failed to run due to glib_c being on 2.17 for rhel 7.x, it wanted 2.18. I'm still learning (probably never will stop) my ways through linux and didn't see anything obvious where I could change this or an easy way to work around. It seemed my options were to either compile glibc outside and place it in rhel or upgrade rhel to 8.x, which is probably the better choice, but I'm not in control of those decisions in what I'm facing.

Thanks for any insight if this is something I can specify/config when running warp-packer.

Provide a way to reference the packed executable directory

Currently I don't see any way to reach the executable path from the packed process. One way to do this would be to pass the original directory to the process in an environment variable, for example WARP_EXECUTABLE_DIR.

My use case is to keep a few config files next to my executable.

Does not work in some scenarios

Running on windows similar to:

warp-packer --exec E:\path\to\folder\file.exe --input_dir E:\path\to\folder --output G:\some\test.exe --arch windows-x64

Then running test.exe. Working locally, but copying on another machine getting:

Error: Os { code: 2, kind: NotFound, message: "The system cannot find the file specified." }

If I copy E:\path\to\folder to that same machine and run file.exe everything is working as expected.

The application being wrapped in a ,net core app. Note that I went through the steps with myapp.exe from readme and that simple application also worked fine when copied to the other machine. So it looks there are some more complex interactions at work here...

Is it possible to get some debug output somehow?

Provide a parameter to control expansion location for packed exe

currently warp packed exe will be expanded into folder tied to %userprofile%:

%appdata%..\Local\warp\packages\myProgramName.exe\

when running warp created service or for other reasons that is not suitable..

It would be really helpful to have a switch for warp created exe to control this... for example
myProgramName.exe --expandTo "C:\aaa"

thanks

Clean up package directory after application terminates

Is there a possibility to clean up the package directory after the application is closed?
I am packaging an application which I use on my client's computers but I do not want any files left after the application is closed.
At the moment I clean up the package folder manually.
The problem is that I cannot clean the folder from my application while it runs.

Can you support to add icon?

Thanks a lot for the great work. I successfully packed a full .NET Framework executable and it runs flawlessly, and even though it packde a .config file inside. When the app changes the .config file, the next run it get the changes without issue, which means warp does not re-unpack it. It also makes my exe not readable by ILDASM which is another good feature.

Can I request another feature?
I need to add an icon to the executable file, but this maybe windows specific thing and different OS needs different implementation too, but it will be great to have it.

You can close this if you think you don't want to do that.
Thanks again for the great work.

Warp does not work for no login shell users

Create a user with no login shell and no bin/bash

sudo useradd -r subversion

I am trying to create a systemd service which will be executed by a user of this category.

Executing the warped application using this user

sudo -u subversion ./warped

creates error

Error: Custom { kind: Other, error: StringError("no tarball found inside binary")

Is there a way run warped dotnet applications for users with no login shell users / no bin/bash users?

Assembly information

Is it possible to retrieve the assembly informations or give parameters to set it during the packaging ?
The executable generated has no assembly informations.

IIS run netcore exe throw error.

thread 'main' panicked at 'No data local dir found', libcore\option.rs:1000:5
note: Run with RUST_BACKTRACE=1 for a backtrace.

Request: Example for usage with node.js

Hi! I'd love to use this with node.js. If this is possible (I'm assuming it would be one of the goals by the stub for a Java example, being a similar setup to node), please make an example for this at some point in the future. =-)

Error: Os { code: 13, kind: PermissionDenied, message: "Permission denied" }

Steps to reproduce this issue

1. Init app(Windows)

$ dotnet new console -o myApp
$ cd myApp
$ dotnet publish -c Release -r linux-x64

2. Warp v0.3.0(Windows)

$ windows-x64.warp-packer.exe --arch linux-x64 --input_dir bin/Release/netcoreapp2.1/linux-x64/publish --exec myApp --output myAppOut

3. Copy file to Ubuntu

$ chmod 777 myAppOut
$ ./myAppOut
Error: Os { code: 13, kind: PermissionDenied, message: "Permission denied" }

Possible solution

  • setting permission
$ chmod 777 /home/user01/.local/share/warp/packages/myApp/myApp

This is Bug or warp specification?

Environment

  • Windows 10 64bit 1809
  • Ubuntu 18.04.1
  • .NET Core 2.1

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.