qt-deploy-win 0.0.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +17 -0
- data/Gemfile +4 -0
- data/LICENSE.txt +22 -0
- data/README.md +37 -0
- data/Rakefile +1 -0
- data/bin/qt-deploy-win +3 -0
- data/lib/qt-deploy-win.rb +7 -0
- data/lib/qt-deploy-win/builder.rb +102 -0
- data/lib/qt-deploy-win/cli.rb +49 -0
- data/lib/qt-deploy-win/version.rb +3 -0
- data/qt-deploy-win.gemspec +25 -0
- metadata +100 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 25461233e70cde2fde7684dddf7f5fad9fc838a6
|
4
|
+
data.tar.gz: 6913d61cba0702cb1a7d3318af67a7d6a410ceda
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 8a0d75105c6ad568c24711c7b958a77d37763d723e551a651b190f1f483a92ec5a844a7e02b1a360c526c067f13ae8dd71c3b8b3e7bb9a49dba83659bc2c7e8c
|
7
|
+
data.tar.gz: 1d86d6ba434bee0e11d8c162ef371ea0888c901fddce5dd1b70dedf059d7053f78b0f1dd1e8d339babca0864cdc147925c2d3648e39e8fe0c7633cbc110b70c2
|
data/.gitignore
ADDED
data/Gemfile
ADDED
data/LICENSE.txt
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
Copyright (c) 2015 MOZGIII
|
2
|
+
|
3
|
+
MIT License
|
4
|
+
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
6
|
+
a copy of this software and associated documentation files (the
|
7
|
+
"Software"), to deal in the Software without restriction, including
|
8
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
9
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
10
|
+
permit persons to whom the Software is furnished to do so, subject to
|
11
|
+
the following conditions:
|
12
|
+
|
13
|
+
The above copyright notice and this permission notice shall be
|
14
|
+
included in all copies or substantial portions of the Software.
|
15
|
+
|
16
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
17
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
18
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
19
|
+
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
20
|
+
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
21
|
+
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
22
|
+
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
ADDED
@@ -0,0 +1,37 @@
|
|
1
|
+
# QtDeployWin
|
2
|
+
|
3
|
+
*Win at deploying your Qt application for Windows.*
|
4
|
+
|
5
|
+
This is a tiny command-line utility that takes a Qt application executable file built for Windows and produces a directory with a complete set of dependencies required to run the executable on other machines.
|
6
|
+
|
7
|
+
It is effectively a thin wrapper around Qt's build in `windeployqt` that tries to guess and set some environment variables for you and does some other useful actions that you don't need to do manually.
|
8
|
+
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Install the command line utility:
|
12
|
+
|
13
|
+
$ gem install qt-deploy-win
|
14
|
+
|
15
|
+
Or to use it in your project just add this to `Gemfile`
|
16
|
+
|
17
|
+
gem 'qt-deploy-win'
|
18
|
+
|
19
|
+
And then execute:
|
20
|
+
|
21
|
+
$ bundle
|
22
|
+
|
23
|
+
## Usage
|
24
|
+
|
25
|
+
Pass you freshly built app executable path and an output dir (will be cleared!).
|
26
|
+
|
27
|
+
qt-deploy-win path/to/my-qt-app.exe output-dir/
|
28
|
+
|
29
|
+
**Warning!** Output dir is cleared every time you run the utility, so use carefully and do not lose your files!
|
30
|
+
|
31
|
+
## Contributing
|
32
|
+
|
33
|
+
1. Fork it
|
34
|
+
2. Create your feature branch (`git checkout -b my-new-feature`)
|
35
|
+
3. Commit your changes (`git commit -am 'Add some feature'`)
|
36
|
+
4. Push to the branch (`git push origin my-new-feature`)
|
37
|
+
5. Create new Pull Request
|
data/Rakefile
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
require "bundler/gem_tasks"
|
data/bin/qt-deploy-win
ADDED
@@ -0,0 +1,102 @@
|
|
1
|
+
require "fileutils"
|
2
|
+
require "visual_studio"
|
3
|
+
|
4
|
+
module QtDeployWin
|
5
|
+
class Builder
|
6
|
+
def initialize(options)
|
7
|
+
@options = options
|
8
|
+
@errors = []
|
9
|
+
@visual_studio = VisualStudio.find("vs2013")
|
10
|
+
validate
|
11
|
+
end
|
12
|
+
|
13
|
+
def path(name)
|
14
|
+
case name
|
15
|
+
when :qt_dir, :dist_dir, :executable, :windeployqt_args
|
16
|
+
return @options[name]
|
17
|
+
when :windeployqt
|
18
|
+
qtdir = path(:qt_dir)
|
19
|
+
return nil unless qtdir
|
20
|
+
@windeployqt ||= which("windeployqt", "#{qtdir}/bin")
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
def errors
|
25
|
+
@errors
|
26
|
+
end
|
27
|
+
|
28
|
+
def valid?
|
29
|
+
@errors.empty?
|
30
|
+
end
|
31
|
+
|
32
|
+
def env
|
33
|
+
qtdir = path(:qt_dir)
|
34
|
+
{
|
35
|
+
"QTDIR" => qtdir,
|
36
|
+
"PATH" => "#{qtdir}/bin" + File::PATH_SEPARATOR + ENV["PATH"],
|
37
|
+
"VSINSTALLDIR" => @visual_studio.root,
|
38
|
+
"VCINSTALLDIR" => @visual_studio.toolsets.cpp
|
39
|
+
}
|
40
|
+
end
|
41
|
+
|
42
|
+
def build
|
43
|
+
raise "Task not valid, unable to exec" unless valid?
|
44
|
+
|
45
|
+
distdir = path(:dist_dir)
|
46
|
+
main_executable = path(:executable)
|
47
|
+
|
48
|
+
# Setup distdir
|
49
|
+
preapare_distdir(distdir)
|
50
|
+
|
51
|
+
# Copy main executable
|
52
|
+
dist_main_path = File.join(distdir, File.basename(main_executable))
|
53
|
+
FileUtils.cp main_executable, dist_main_path
|
54
|
+
|
55
|
+
# Package
|
56
|
+
args = path(:windeployqt_args) || []
|
57
|
+
system env, path(:windeployqt), dist_main_path, *args
|
58
|
+
end
|
59
|
+
|
60
|
+
protected
|
61
|
+
|
62
|
+
def preapare_distdir(distdir)
|
63
|
+
# Create distdir
|
64
|
+
FileUtils.mkdir_p distdir
|
65
|
+
|
66
|
+
# Clean distdir
|
67
|
+
FileUtils.rm_rf Dir["#{distdir}/*"]
|
68
|
+
end
|
69
|
+
|
70
|
+
def validate
|
71
|
+
qtdir = path(:qt_dir)
|
72
|
+
@errors << ":qt_dir is not set" unless qtdir
|
73
|
+
@errors << ":qt_dir not fould at \"#{qtdir}\"" unless qtdir && File.directory?(qtdir)
|
74
|
+
|
75
|
+
distdir = path(:dist_dir)
|
76
|
+
@errors << ":dist_dir is not set" unless distdir
|
77
|
+
@errors << ":dist_dir at \"#{qtdir}\" is already exists and not a directory" if distdir && File.exists?(distdir) && !File.directory?(distdir)
|
78
|
+
|
79
|
+
windeployqt = path(:windeployqt)
|
80
|
+
@errors << ":windeployqt is not set" unless windeployqt
|
81
|
+
@errors << ":windeployqt at \"#{windeployqt}\" is not fould" unless windeployqt && File.exists?(windeployqt)
|
82
|
+
|
83
|
+
main_executable = path(:executable)
|
84
|
+
@errors << ":executable is not set" unless main_executable
|
85
|
+
@errors << ":executable at \"#{main_executable}\" is not fould" unless main_executable && File.file?(main_executable)
|
86
|
+
|
87
|
+
@errors << "Visual Studio 2013 was not found" unless @visual_studio
|
88
|
+
end
|
89
|
+
|
90
|
+
def which(cmd, paths = ENV['PATH'])
|
91
|
+
pathext_env = ENV['PATHEXT']
|
92
|
+
exts = pathext_env ? pathext_env.split(';') : ['']
|
93
|
+
paths.split(File::PATH_SEPARATOR).each do |path|
|
94
|
+
exts.each do |ext|
|
95
|
+
exe = File.join(path, "#{cmd}#{ext}")
|
96
|
+
return exe if File.executable?(exe) && !File.directory?(exe)
|
97
|
+
end
|
98
|
+
end
|
99
|
+
nil
|
100
|
+
end
|
101
|
+
end
|
102
|
+
end
|
@@ -0,0 +1,49 @@
|
|
1
|
+
require "qt-deploy-win"
|
2
|
+
|
3
|
+
module QtDeployWin
|
4
|
+
module Cli
|
5
|
+
def self.print_usage
|
6
|
+
puts "Usage: #{$0} some-qt-app.exe dist-dir"
|
7
|
+
end
|
8
|
+
|
9
|
+
def self.print_extended_usage
|
10
|
+
print_usage
|
11
|
+
puts
|
12
|
+
puts "Pass an executable as a first argument" +
|
13
|
+
" and it will be copied to the directoy passed" +
|
14
|
+
" as a second argument along with all dependencies."
|
15
|
+
puts
|
16
|
+
puts "You should also specify a correct path to the Qt" +
|
17
|
+
" installation directroy."
|
18
|
+
puts "Current ENV['QTDIR']: #{ENV['QTDIR']}"
|
19
|
+
puts "Example ENV['QTDIR']: C:/Qt/5.5/msvc2013"
|
20
|
+
end
|
21
|
+
|
22
|
+
def self.exec
|
23
|
+
target, dist_dir = ARGV.shift, ARGV.shift
|
24
|
+
unless target && dist_dir
|
25
|
+
print_extended_usage
|
26
|
+
exit 2
|
27
|
+
end
|
28
|
+
|
29
|
+
builder = ::QtDeployWin::Builder.new(
|
30
|
+
executable: target,
|
31
|
+
dist_dir: dist_dir,
|
32
|
+
qt_dir: ENV["QTDIR"],
|
33
|
+
windeployqt_args: ARGV.to_a
|
34
|
+
)
|
35
|
+
|
36
|
+
unless builder.valid?
|
37
|
+
print_usage
|
38
|
+
puts
|
39
|
+
puts "The following errors occured:"
|
40
|
+
builder.errors.each do |err|
|
41
|
+
puts " " + err
|
42
|
+
end
|
43
|
+
exit
|
44
|
+
end
|
45
|
+
|
46
|
+
builder.build
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -0,0 +1,25 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'qt-deploy-win/version'
|
5
|
+
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "qt-deploy-win"
|
8
|
+
spec.version = QtDeployWin::VERSION
|
9
|
+
spec.authors = ["MOZGIII"]
|
10
|
+
spec.email = ["mike-n@narod.ru"]
|
11
|
+
spec.description = %q{This gem provides a small command to gather all application files required for a Qt app deploy for Windows in one place ready for packaging.}
|
12
|
+
spec.summary = %q{Win at deplying Qt applications for Windows}
|
13
|
+
spec.homepage = "https://github.com/MOZGIII/qt-deploy-win"
|
14
|
+
spec.license = "MIT"
|
15
|
+
|
16
|
+
spec.files = `git ls-files`.split($/)
|
17
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
18
|
+
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
19
|
+
spec.require_paths = ["lib"]
|
20
|
+
|
21
|
+
spec.add_development_dependency "bundler", "~> 1.3"
|
22
|
+
spec.add_development_dependency "rake"
|
23
|
+
|
24
|
+
spec.add_dependency "visual_studio", "0.0.0.3"
|
25
|
+
end
|
metadata
ADDED
@@ -0,0 +1,100 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: qt-deploy-win
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.2
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- MOZGIII
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2015-09-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: bundler
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ~>
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '1.3'
|
20
|
+
type: :development
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ~>
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '1.3'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - '>='
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - '>='
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: visual_studio
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 0.0.0.3
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 0.0.0.3
|
55
|
+
description: This gem provides a small command to gather all application files required
|
56
|
+
for a Qt app deploy for Windows in one place ready for packaging.
|
57
|
+
email:
|
58
|
+
- mike-n@narod.ru
|
59
|
+
executables:
|
60
|
+
- qt-deploy-win
|
61
|
+
extensions: []
|
62
|
+
extra_rdoc_files: []
|
63
|
+
files:
|
64
|
+
- .gitignore
|
65
|
+
- Gemfile
|
66
|
+
- LICENSE.txt
|
67
|
+
- README.md
|
68
|
+
- Rakefile
|
69
|
+
- bin/qt-deploy-win
|
70
|
+
- lib/qt-deploy-win.rb
|
71
|
+
- lib/qt-deploy-win/builder.rb
|
72
|
+
- lib/qt-deploy-win/cli.rb
|
73
|
+
- lib/qt-deploy-win/version.rb
|
74
|
+
- qt-deploy-win.gemspec
|
75
|
+
homepage: https://github.com/MOZGIII/qt-deploy-win
|
76
|
+
licenses:
|
77
|
+
- MIT
|
78
|
+
metadata: {}
|
79
|
+
post_install_message:
|
80
|
+
rdoc_options: []
|
81
|
+
require_paths:
|
82
|
+
- lib
|
83
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
84
|
+
requirements:
|
85
|
+
- - '>='
|
86
|
+
- !ruby/object:Gem::Version
|
87
|
+
version: '0'
|
88
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - '>='
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: '0'
|
93
|
+
requirements: []
|
94
|
+
rubyforge_project:
|
95
|
+
rubygems_version: 2.4.1
|
96
|
+
signing_key:
|
97
|
+
specification_version: 4
|
98
|
+
summary: Win at deplying Qt applications for Windows
|
99
|
+
test_files: []
|
100
|
+
has_rdoc:
|