win32-taskscheduler 2.0.1 → 2.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/win32-taskscheduler.rb +1 -1
- data/lib/win32/taskscheduler.rb +266 -292
- data/lib/win32/taskscheduler/constants.rb +6 -6
- data/lib/win32/taskscheduler/helper.rb +10 -10
- data/lib/win32/taskscheduler/sid.rb +12 -12
- data/lib/win32/taskscheduler/time_calc_helper.rb +71 -40
- data/lib/win32/taskscheduler/version.rb +1 -1
- metadata +5 -53
- data/CHANGELOG.md +0 -184
- data/Gemfile +0 -3
- data/README.md +0 -78
- data/RELEASE_NOTES.md +0 -14
- data/Rakefile +0 -38
- data/VERSION +0 -1
- data/appveyor.yml +0 -40
- data/examples/taskscheduler_example.rb +0 -54
- data/spec/functional/win32/taskscheduler/time_calc_helper_spec.rb +0 -392
- data/spec/functional/win32/taskscheduler_spec.rb +0 -883
- data/spec/spec_helper.rb +0 -224
- data/spec/unit/win32/taskscheduler/constants_spec.rb +0 -20
- data/spec/unit/win32/taskscheduler/time_calc_helper_spec.rb +0 -217
- data/spec/unit/win32/taskscheduler_spec.rb +0 -169
- data/test/test_taskscheduler.rb +0 -690
- data/win32-taskscheduler.gemspec +0 -34
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative
|
1
|
+
require_relative "sid"
|
2
2
|
|
3
3
|
module Win32
|
4
4
|
class TaskScheduler
|
@@ -221,11 +221,11 @@ module Win32
|
|
221
221
|
IDLE_PRIORITY_CLASS = 9 # Or 10
|
222
222
|
|
223
223
|
CLSCTX_INPROC_SERVER = 0x1
|
224
|
-
CLSID_CTask = [0x148BD520, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03].pack(
|
225
|
-
CLSID_CTaskScheduler = [0x148BD52A, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03].pack(
|
226
|
-
IID_ITaskScheduler = [0x148BD527, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03].pack(
|
227
|
-
IID_ITask = [0x148BD524, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03].pack(
|
228
|
-
IID_IPersistFile = [0x0000010b, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46].pack(
|
224
|
+
CLSID_CTask = [0x148BD520, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03].pack("LSSC8")
|
225
|
+
CLSID_CTaskScheduler = [0x148BD52A, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03].pack("LSSC8")
|
226
|
+
IID_ITaskScheduler = [0x148BD527, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03].pack("LSSC8")
|
227
|
+
IID_ITask = [0x148BD524, 0xA2AB, 0x11CE, 0xB1, 0x1F, 0x00, 0xAA, 0x00, 0x53, 0x05, 0x03].pack("LSSC8")
|
228
|
+
IID_IPersistFile = [0x0000010b, 0x0000, 0x0000, 0xC0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x46].pack("LSSC8")
|
229
229
|
|
230
230
|
# Days of month
|
231
231
|
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require
|
1
|
+
require "ffi"
|
2
2
|
|
3
3
|
module Win32
|
4
4
|
class TaskScheduler
|
@@ -12,14 +12,14 @@ module Win32
|
|
12
12
|
ffi_lib :kernel32, :advapi32
|
13
13
|
|
14
14
|
attach_function :FormatMessage, :FormatMessageA,
|
15
|
-
|
15
|
+
%i{ulong pointer ulong ulong pointer ulong pointer}, :ulong
|
16
16
|
|
17
|
-
attach_function :ConvertStringSidToSidW,
|
18
|
-
attach_function :LookupAccountSidW,
|
19
|
-
attach_function :LocalFree, [
|
17
|
+
attach_function :ConvertStringSidToSidW, %i{pointer pointer}, :bool
|
18
|
+
attach_function :LookupAccountSidW, %i{pointer pointer pointer pointer pointer pointer pointer}, :bool
|
19
|
+
attach_function :LocalFree, [:pointer], :pointer
|
20
20
|
|
21
|
-
def win_error(function, err=FFI.errno)
|
22
|
-
err_msg =
|
21
|
+
def win_error(function, err = FFI.errno)
|
22
|
+
err_msg = ""
|
23
23
|
flags = FORMAT_MESSAGE_IGNORE_INSERTS |
|
24
24
|
FORMAT_MESSAGE_FROM_SYSTEM |
|
25
25
|
FORMAT_MESSAGE_MAX_WIDTH_MASK
|
@@ -28,8 +28,8 @@ module Win32
|
|
28
28
|
# We use English for errors because Ruby uses English for errors.
|
29
29
|
|
30
30
|
FFI::MemoryPointer.new(:char, 1024) do |buf|
|
31
|
-
len = FormatMessage(flags, nil, err
|
32
|
-
err_msg = function +
|
31
|
+
len = FormatMessage(flags, nil, err, 0x0409, buf, buf.size, nil)
|
32
|
+
err_msg = function + ": " + buf.read_string(len).strip
|
33
33
|
end
|
34
34
|
|
35
35
|
err_msg
|
@@ -43,7 +43,7 @@ module Win32
|
|
43
43
|
error = match.captures.first.hex
|
44
44
|
win_error(function, error)
|
45
45
|
else
|
46
|
-
"#{function}: #{err
|
46
|
+
"#{function}: #{err}"
|
47
47
|
end
|
48
48
|
end
|
49
49
|
end
|
@@ -1,4 +1,4 @@
|
|
1
|
-
require_relative
|
1
|
+
require_relative "helper"
|
2
2
|
|
3
3
|
module FFI
|
4
4
|
class Pointer
|
@@ -21,10 +21,10 @@ module FFI
|
|
21
21
|
def wide_to_utf8(wstring)
|
22
22
|
# ensure it is actually UTF-16LE
|
23
23
|
# Ruby likes to mark binary data as ASCII-8BIT
|
24
|
-
wstring = wstring.force_encoding(
|
24
|
+
wstring = wstring.force_encoding("UTF-16LE")
|
25
25
|
|
26
26
|
# encode it all as UTF-8 and remove trailing CRLF and NULL characters
|
27
|
-
wstring.encode(
|
27
|
+
wstring.encode("UTF-8").strip
|
28
28
|
end
|
29
29
|
end
|
30
30
|
end
|
@@ -36,27 +36,27 @@ module Win32
|
|
36
36
|
ERROR_INSUFFICIENT_BUFFER = 122
|
37
37
|
|
38
38
|
def self.LocalSystem
|
39
|
-
from_string_sid(
|
39
|
+
from_string_sid("S-1-5-18")
|
40
40
|
end
|
41
41
|
|
42
42
|
def self.NtLocal
|
43
|
-
from_string_sid(
|
43
|
+
from_string_sid("S-1-5-19")
|
44
44
|
end
|
45
45
|
|
46
46
|
def self.NtNetwork
|
47
|
-
from_string_sid(
|
47
|
+
from_string_sid("S-1-5-20")
|
48
48
|
end
|
49
49
|
|
50
50
|
def self.BuiltinAdministrators
|
51
|
-
from_string_sid(
|
51
|
+
from_string_sid("S-1-5-32-544")
|
52
52
|
end
|
53
53
|
|
54
54
|
def self.BuiltinUsers
|
55
|
-
from_string_sid(
|
55
|
+
from_string_sid("S-1-5-32-545")
|
56
56
|
end
|
57
57
|
|
58
58
|
def self.Guests
|
59
|
-
from_string_sid(
|
59
|
+
from_string_sid("S-1-5-32-546")
|
60
60
|
end
|
61
61
|
|
62
62
|
# Converts a string-format security identifier (SID) into a valid, functional SID
|
@@ -77,13 +77,13 @@ module Win32
|
|
77
77
|
def self.utf8_to_wide(ustring)
|
78
78
|
# ensure it is actually UTF-8
|
79
79
|
# Ruby likes to mark binary data as ASCII-8BIT
|
80
|
-
ustring = (ustring +
|
80
|
+
ustring = (ustring + "").force_encoding("UTF-8")
|
81
81
|
|
82
82
|
# ensure we have the double-null termination Windows Wide likes
|
83
83
|
ustring += "\000\000" if ustring.empty? || ustring[-1].chr != "\000"
|
84
84
|
|
85
85
|
# encode it all as UTF-16LE AKA Windows Wide Character AKA Windows Unicode
|
86
|
-
ustring.encode(
|
86
|
+
ustring.encode("UTF-16LE")
|
87
87
|
end
|
88
88
|
|
89
89
|
# Accepts a security identifier (SID) as input.
|
@@ -97,7 +97,7 @@ module Win32
|
|
97
97
|
referenced_domain_name_size = FFI::Buffer.new(:long).write_long(0)
|
98
98
|
|
99
99
|
if LookupAccountSidW(nil, sid, nil, name_size, nil, referenced_domain_name_size, nil)
|
100
|
-
raise
|
100
|
+
raise "Expected ERROR_INSUFFICIENT_BUFFER from LookupAccountSid, and got no error!"
|
101
101
|
elsif FFI::LastError.error != ERROR_INSUFFICIENT_BUFFER
|
102
102
|
raise FFI::LastError.error
|
103
103
|
end
|
@@ -2,29 +2,44 @@ module Win32
|
|
2
2
|
class TaskScheduler
|
3
3
|
module TimeCalcHelper
|
4
4
|
|
5
|
-
#
|
6
|
-
#
|
7
|
-
#
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
#
|
5
|
+
# No of days in given month. Deliberately placed 0 in the
|
6
|
+
# beginning to avoid any miscalculations
|
7
|
+
#
|
8
|
+
DAYS_IN_A_MONTH = [0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31].freeze
|
9
|
+
|
10
|
+
# No of days in a month for given year
|
11
|
+
#
|
12
|
+
# @param [Integer] month
|
13
|
+
# @param [Integer] year
|
14
|
+
# @return [Integer] No of days
|
15
|
+
#
|
12
16
|
def days_in_month(month, year)
|
13
|
-
|
17
|
+
month == 2 && is_leap_year?(year) ? 29 : DAYS_IN_A_MONTH[month]
|
14
18
|
end
|
15
19
|
|
16
|
-
#
|
17
|
-
#
|
20
|
+
# Checks weather the given year is a leap year or not
|
21
|
+
#
|
22
|
+
# @param [Integer] year
|
23
|
+
# @return [Boolean]
|
24
|
+
#
|
18
25
|
def is_leap_year?(year)
|
19
26
|
(((year % 4).zero? && !(year % 100).zero?) || (year % 400).zero?)
|
20
27
|
end
|
21
28
|
|
22
|
-
#
|
29
|
+
# Calculates the total minutes within given PTM format time
|
30
|
+
#
|
31
|
+
# @param [Integer] time_str
|
32
|
+
# @return [Integer] Time duration in minutes
|
33
|
+
#
|
23
34
|
def time_in_minutes(time_str)
|
24
35
|
time_in_seconds(time_str) / 60
|
25
36
|
end
|
26
37
|
|
27
|
-
# Calculates total
|
38
|
+
# Calculates the total seconds within given PTM format time
|
39
|
+
#
|
40
|
+
# @param [Integer] time_str the time in PTM format
|
41
|
+
# @return [Integer] Time duration in seconds
|
42
|
+
#
|
28
43
|
def time_in_seconds(time_str)
|
29
44
|
dt_tm_hash = time_details(time_str)
|
30
45
|
curr_time = Time.now
|
@@ -54,17 +69,20 @@ module Win32
|
|
54
69
|
future_time.to_i - curr_time.to_i
|
55
70
|
end
|
56
71
|
|
57
|
-
#
|
58
|
-
#
|
59
|
-
#
|
60
|
-
#
|
72
|
+
# Adjusts the overlapping seconds and returns actual minutes and seconds
|
73
|
+
#
|
74
|
+
# @example
|
75
|
+
# extra_time(65, 2, 60) #=> => [5, 3]
|
76
|
+
#
|
61
77
|
def extra_time(low_rank, high_rank, div_val)
|
62
78
|
a, b = low_rank.divmod(div_val)
|
63
79
|
high_rank += a; low_rank = b
|
64
80
|
[low_rank, high_rank]
|
65
81
|
end
|
66
82
|
|
67
|
-
|
83
|
+
# Adjusts the overlapping months and returns actual month and year
|
84
|
+
#
|
85
|
+
def extra_months(month_count, year_count, _init_month, _init_year)
|
68
86
|
year, month_count = month_count.divmod(12)
|
69
87
|
if year.positive? && month_count.zero?
|
70
88
|
month_count = 12
|
@@ -74,7 +92,8 @@ module Win32
|
|
74
92
|
[month_count, year_count]
|
75
93
|
end
|
76
94
|
|
77
|
-
#
|
95
|
+
# Adjusts the overlapping years and months and returns actual days, month and year
|
96
|
+
#
|
78
97
|
def extra_days(days_count, month_count, year_count, init_month, init_year)
|
79
98
|
# Will keep increamenting them with surplus days
|
80
99
|
days = days_count
|
@@ -82,13 +101,13 @@ module Win32
|
|
82
101
|
yr = init_year
|
83
102
|
|
84
103
|
loop do
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
104
|
+
days -= days_in_month(mth, yr)
|
105
|
+
break if days <= 0
|
106
|
+
mth += 1
|
107
|
+
if mth > 12
|
108
|
+
mth = 1; yr += 1
|
109
|
+
end
|
110
|
+
days_count = days
|
92
111
|
end
|
93
112
|
|
94
113
|
# Setting actual incremented values
|
@@ -98,34 +117,46 @@ module Win32
|
|
98
117
|
[days_count, month_count, year_count]
|
99
118
|
end
|
100
119
|
|
101
|
-
# Extracts
|
102
|
-
#
|
103
|
-
#
|
104
|
-
#
|
120
|
+
# Extracts a hash out of given PTM formatted time
|
121
|
+
#
|
122
|
+
# @param [String] time_str
|
123
|
+
# @return [Hash<:year, :month, :day, :hour, :min, :sec>] With their values in Integer
|
124
|
+
#
|
125
|
+
# @example
|
126
|
+
# time_details("PT3S") #=> {sec: 3}
|
127
|
+
#
|
105
128
|
def time_details(time_str)
|
106
129
|
tm_detail = {}
|
107
|
-
if time_str.to_s !=
|
130
|
+
if time_str.to_s != ""
|
108
131
|
# time_str will be like "PxxYxxMxxDTxxHxxMxxS"
|
109
132
|
# Ignoring 'P' and extracting date and time
|
110
|
-
dt, tm = time_str[1..-1].split(
|
133
|
+
dt, tm = time_str[1..-1].split("T")
|
111
134
|
|
112
135
|
# Replacing strings
|
113
|
-
if dt.to_s !=
|
114
|
-
dt[
|
115
|
-
|
136
|
+
if dt.to_s != ""
|
137
|
+
dt["Y"] = "year" if dt["Y"]; dt["M"] = "month" if dt["M"]; dt["D"] = "day" if dt["D"]
|
138
|
+
dt_tm_string_to_hash(dt, tm_detail)
|
116
139
|
end
|
117
140
|
|
118
|
-
if tm.to_s !=
|
119
|
-
tm[
|
120
|
-
|
141
|
+
if tm.to_s != ""
|
142
|
+
tm["H"] = "hour" if tm["H"]; tm["M"] = "min" if tm["M"]; tm["S"] = "sec" if tm["S"]
|
143
|
+
dt_tm_string_to_hash(tm, tm_detail)
|
121
144
|
end
|
122
145
|
end
|
123
146
|
tm_detail
|
124
147
|
end
|
125
148
|
|
126
|
-
#
|
127
|
-
|
128
|
-
|
149
|
+
# Converts the given date/time string to the hash
|
150
|
+
#
|
151
|
+
# @param [String] str
|
152
|
+
# @param [Hash] tm_detail May be loaded
|
153
|
+
# @return [Hash]
|
154
|
+
#
|
155
|
+
# @example
|
156
|
+
# dt_tm_string_to_hash("10year3month", {}) #=> {:year=>"10", :month=>"3"}
|
157
|
+
#
|
158
|
+
def dt_tm_string_to_hash(str, tm_detail)
|
159
|
+
str.split(/(\d+)/)[1..-1].each_slice(2).each_with_object(tm_detail) { |i, h| h[i.last.to_sym] = i.first; }
|
129
160
|
end
|
130
161
|
end
|
131
162
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: win32-taskscheduler
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.
|
4
|
+
version: 2.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Park Heesob
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2019-01-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: ffi
|
@@ -53,20 +53,6 @@ dependencies:
|
|
53
53
|
- - ">="
|
54
54
|
- !ruby/object:Gem::Version
|
55
55
|
version: '0'
|
56
|
-
- !ruby/object:Gem::Dependency
|
57
|
-
name: rake
|
58
|
-
requirement: !ruby/object:Gem::Requirement
|
59
|
-
requirements:
|
60
|
-
- - ">="
|
61
|
-
- !ruby/object:Gem::Version
|
62
|
-
version: '0'
|
63
|
-
type: :development
|
64
|
-
prerelease: false
|
65
|
-
version_requirements: !ruby/object:Gem::Requirement
|
66
|
-
requirements:
|
67
|
-
- - ">="
|
68
|
-
- !ruby/object:Gem::Version
|
69
|
-
version: '0'
|
70
56
|
- !ruby/object:Gem::Dependency
|
71
57
|
name: win32-security
|
72
58
|
requirement: !ruby/object:Gem::Requirement
|
@@ -81,20 +67,6 @@ dependencies:
|
|
81
67
|
- - ">="
|
82
68
|
- !ruby/object:Gem::Version
|
83
69
|
version: '0'
|
84
|
-
- !ruby/object:Gem::Dependency
|
85
|
-
name: rspec
|
86
|
-
requirement: !ruby/object:Gem::Requirement
|
87
|
-
requirements:
|
88
|
-
- - "~>"
|
89
|
-
- !ruby/object:Gem::Version
|
90
|
-
version: '3.0'
|
91
|
-
type: :development
|
92
|
-
prerelease: false
|
93
|
-
version_requirements: !ruby/object:Gem::Requirement
|
94
|
-
requirements:
|
95
|
-
- - "~>"
|
96
|
-
- !ruby/object:Gem::Version
|
97
|
-
version: '3.0'
|
98
70
|
description: |2
|
99
71
|
The win32-taskscheduler library provides an interface to the MS Windows
|
100
72
|
Task Scheduler. With this interface you can create new scheduled tasks,
|
@@ -102,19 +74,8 @@ description: |2
|
|
102
74
|
email: djberg96@gmail.com
|
103
75
|
executables: []
|
104
76
|
extensions: []
|
105
|
-
extra_rdoc_files:
|
106
|
-
- README.md
|
107
|
-
- CHANGELOG.md
|
108
|
-
- RELEASE_NOTES.md
|
77
|
+
extra_rdoc_files: []
|
109
78
|
files:
|
110
|
-
- CHANGELOG.md
|
111
|
-
- Gemfile
|
112
|
-
- README.md
|
113
|
-
- RELEASE_NOTES.md
|
114
|
-
- Rakefile
|
115
|
-
- VERSION
|
116
|
-
- appveyor.yml
|
117
|
-
- examples/taskscheduler_example.rb
|
118
79
|
- lib/win32-taskscheduler.rb
|
119
80
|
- lib/win32/taskscheduler.rb
|
120
81
|
- lib/win32/taskscheduler/constants.rb
|
@@ -122,15 +83,7 @@ files:
|
|
122
83
|
- lib/win32/taskscheduler/sid.rb
|
123
84
|
- lib/win32/taskscheduler/time_calc_helper.rb
|
124
85
|
- lib/win32/taskscheduler/version.rb
|
125
|
-
|
126
|
-
- spec/functional/win32/taskscheduler_spec.rb
|
127
|
-
- spec/spec_helper.rb
|
128
|
-
- spec/unit/win32/taskscheduler/constants_spec.rb
|
129
|
-
- spec/unit/win32/taskscheduler/time_calc_helper_spec.rb
|
130
|
-
- spec/unit/win32/taskscheduler_spec.rb
|
131
|
-
- test/test_taskscheduler.rb
|
132
|
-
- win32-taskscheduler.gemspec
|
133
|
-
homepage: http://github.com/chef/win32-taskscheduler
|
86
|
+
homepage: https://github.com/chef/win32-taskscheduler
|
134
87
|
licenses:
|
135
88
|
- Artistic-2.0
|
136
89
|
metadata: {}
|
@@ -154,5 +107,4 @@ rubygems_version: 2.7.6
|
|
154
107
|
signing_key:
|
155
108
|
specification_version: 4
|
156
109
|
summary: A library for the Windows task scheduler
|
157
|
-
test_files:
|
158
|
-
- test/test_taskscheduler.rb
|
110
|
+
test_files: []
|
data/CHANGELOG.md
DELETED
@@ -1,184 +0,0 @@
|
|
1
|
-
# win32-taskscheduler change log
|
2
|
-
|
3
|
-
Note: this log contains only changes from win32-taskscheduler release 0.4.0 and later
|
4
|
-
-- it does not contain the changes from prior releases. To view change history
|
5
|
-
prior to release 0.4.0, please visit the [source repository](https://github.com/chef/win32-taskscheduler/commits).
|
6
|
-
|
7
|
-
<!-- latest_release 2.0.1 -->
|
8
|
-
## [win32-taskscheduler-2.0.1](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-2.0.1) (2018-11-01)
|
9
|
-
|
10
|
-
#### Merged Pull Requests
|
11
|
-
- Minor Fix for logon_type flag while task registration [#75](https://github.com/chef/win32-taskscheduler/pull/75) ([Nimesh-Msys](https://github.com/Nimesh-Msys))
|
12
|
-
- Bump version to 2.0 [#71](https://github.com/chef/win32-taskscheduler/pull/71) ([btm](https://github.com/btm))
|
13
|
-
<!-- latest_release -->
|
14
|
-
|
15
|
-
<!-- release_rollup since=2.0.0 -->
|
16
|
-
### Changes since 2.0.0 release
|
17
|
-
|
18
|
-
#### Merged Pull Requests
|
19
|
-
- Minor Fix for logon_type flag while task registration [#75](https://github.com/chef/win32-taskscheduler/pull/75) ([Nimesh-Msys](https://github.com/Nimesh-Msys)) <!-- 2.0.1 -->
|
20
|
-
<!-- release_rollup -->
|
21
|
-
|
22
|
-
<!-- latest_stable_release -->
|
23
|
-
## [win32-taskscheduler-2.0.0](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-2.0.0) (2018-10-11)
|
24
|
-
|
25
|
-
#### Merged Pull Requests
|
26
|
-
- Move helpers under the Win32::TaskScheduler namespace [#70](https://github.com/chef/win32-taskscheduler/pull/70) ([btm](https://github.com/btm))
|
27
|
-
- Bump version to 2.0 [#71](https://github.com/chef/win32-taskscheduler/pull/71) ([btm](https://github.com/btm))
|
28
|
-
<!-- latest_stable_release -->
|
29
|
-
|
30
|
-
## [win32-taskscheduler-1.0.12](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-1.0.12) (2018-10-11)
|
31
|
-
|
32
|
-
#### Merged Pull Requests
|
33
|
-
- Refactored configure_settings [#67](https://github.com/chef/win32-taskscheduler/pull/67) ([btm](https://github.com/btm))
|
34
|
-
- Fixing user registration at Non English version of windows [#69](https://github.com/chef/win32-taskscheduler/pull/69) ([Nimesh-Msys](https://github.com/Nimesh-Msys))
|
35
|
-
|
36
|
-
## [win32-taskscheduler-1.0.10](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-1.0.10) (2018-07-24)
|
37
|
-
|
38
|
-
#### Merged Pull Requests
|
39
|
-
- Fix exists? method breaking task full path search [#62](https://github.com/chef/win32-taskscheduler/pull/62) ([Vasu1105](https://github.com/Vasu1105))
|
40
|
-
|
41
|
-
## [win32-taskscheduler-1.0.9](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-1.0.9) (2018-07-23)
|
42
|
-
|
43
|
-
#### Merged Pull Requests
|
44
|
-
- MSYS-835 Setup appveyor [#55](https://github.com/chef/win32-taskscheduler/pull/55) ([Vasu1105](https://github.com/Vasu1105))
|
45
|
-
- Remove the cert [#53](https://github.com/chef/win32-taskscheduler/pull/53) ([tas50](https://github.com/tas50))
|
46
|
-
- Add github templates and codeowners file [#52](https://github.com/chef/win32-taskscheduler/pull/52) ([tas50](https://github.com/tas50))
|
47
|
-
- Remove the Manifest file and add a gitignore file [#57](https://github.com/chef/win32-taskscheduler/pull/57) ([tas50](https://github.com/tas50))
|
48
|
-
- [MSYS-827] Add functional test cases [#58](https://github.com/chef/win32-taskscheduler/pull/58) ([Nimesh-Msys](https://github.com/Nimesh-Msys))
|
49
|
-
- Add DisallowStartIfOnBatteries and StopIfGoingOnBatteries task configs [#61](https://github.com/chef/win32-taskscheduler/pull/61) ([dheerajd-msys](https://github.com/dheerajd-msys))
|
50
|
-
- Fix priority should return unique value. [#60](https://github.com/chef/win32-taskscheduler/pull/60) ([Vasu1105](https://github.com/Vasu1105))
|
51
|
-
|
52
|
-
## [win32-taskscheduler-1.0.2](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-1.0.2) (2018-06-13)
|
53
|
-
- Fix for exists? method returning false for task without full path. [#43](https://github.com/chef/win32-taskscheduler/pull/43)([#Vasu1105](https://github.com/Vasu1105))
|
54
|
-
- Fix to set user information at the time of creation of task. [#42](https://github.com/chef/win32-taskscheduler/pull/42)([#Vasu1105](https://github.com/Vasu1105))
|
55
|
-
- Fix exists? method to find task in given path and if path or folder not present return false. [#40](https://github.com/chef/win32-taskscheduler/pull/40)([#Vasu1105](https://github.com/Vasu1105))
|
56
|
-
- Fix for undefined method nil:Nilclass error when force flag is passed to create folder. [#32](https://github.com/chef/win32-taskscheduler/pull/32)([#Vasu1105](https://github.com/Vasu1105))
|
57
|
-
|
58
|
-
## [v0.4.1](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-0.4.1) (15-May-2018)
|
59
|
-
- Fix the issue of "no mapping" while creating Windows task for SYSTEM USERS. [#30](https://github.com/chef/win32-taskscheduler/pull/30) ([#NAshwini](https://github.com/NAshwini))
|
60
|
-
- Fix for not to set start time if not set if its 0000-00-00T00:00:00 [#29][(https://github.com/chef/win32-taskscheduler/pull/29) ([#Vasu1105](https://github.com/Vasu1105))
|
61
|
-
|
62
|
-
|
63
|
-
## [v0.4.0](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-0.4.0) (5-Apr-2018)
|
64
|
-
- Updated code to create task without trigger. [#25](https://github.com/chef/win32-taskscheduler/pull/25) ([#Vasu1105](https://github.com/Vasu1105))
|
65
|
-
- Fix for execution time limit and weeks of month. [#23](https://github.com/chef/win32-taskscheduler/pull/23) ([#Vasu1105](https://github.com/Vasu1105))
|
66
|
-
- Added methods to get and set principal information of the task. [#22](https://github.com/chef/win32-taskscheduler/pull/22) ([#Nimesh-Msys](https://github.com/Nimesh-Msys))
|
67
|
-
- Added methods to retrieve settings(all/Idle/Network) of current task. [#21](https://github.com/chef/win32-taskscheduler/pull/21) ([#Nimesh-Msys](https://github.com/Nimesh-Msys))
|
68
|
-
- Refactored constants, moved predefined MSDN constns to another file. [#20](https://github.com/chef/win32-taskscheduler/pull/20) ([#Nimesh-Msys](https://github.com/Nimesh-Msys))
|
69
|
-
- Added code to handle on idle trigger and on idle settings. [#19](https://github.com/chef/win32-taskscheduler/pull/19) ([#Vasu1105](https://github.com/Vasu1105))
|
70
|
-
- Fix for trigger at_logon and at_system_start. [#18](https://github.com/chef/win32-taskscheduler/pull/18) ([#Nimesh-Msys](https://github.com/Nimesh-Msys))
|
71
|
-
- Added get_task and enabled? method. [#17](https://github.com/chef/win32-taskscheduler/pull/17) ([#Vasu1105](https://github.com/Vasu1105))
|
72
|
-
- Fix for undefined method 'weeks' error while updating week_of_month[#16](https://github.com/chef/win32-taskscheduler/pull/16) ([#Vasu1105](https://github.com/Vasu1105))
|
73
|
-
- Fix for handling days of month for trigger_type MONTHLYDATE. [#15](https://github.com/chef/win32-taskscheduler/pull/15)([#Vasu1105](https://github.com/Vasu1105))
|
74
|
-
- Fix for setting system user for scheduled task. [#14](https://github.com/chef/win32-taskscheduler/pull/14) ([#Vasu1105](https://github.com/Vasu1105))
|
75
|
-
- Fix for Wrong value is set for end_day, end_year, end_month it should be EndBoundary and not StartBoundary. [#13](https://github.com/chef/win32-taskscheduler/pull/13)([#Vasu1105](https://github.com/Vasu1105))
|
76
|
-
|
77
|
-
## [v0.3.2](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-0.3.2) (18-Mar-2017)
|
78
|
-
- Use the block form for FFI::MemoryPointer in the error message helper
|
79
|
-
function. Thanks go to Ethan Brown for the suggestion.
|
80
|
-
- Fixed a potential bug in the helper module, which was also renamed to
|
81
|
-
help prevent any name collisions.
|
82
|
-
- Added the win32-taskscheduler.rb file for convenience.
|
83
|
-
- Added the configure_settings method.
|
84
|
-
- Added the configure_registration_info method.
|
85
|
-
- Added the description and description= aliases for comments.
|
86
|
-
- Added the author and author= aliases for creator.
|
87
|
-
- Some internal cleanup, moving common code to private methods.
|
88
|
-
- Rakefile now assumes Rubygems 2.0 or later for tasks.
|
89
|
-
- Gemspec cleanup, updated home page, removed old rubyforge_project reference.
|
90
|
-
- This gem is now signed.
|
91
|
-
|
92
|
-
## [v0.3.1](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-0.3.1) (6-Jul-2014)
|
93
|
-
- Added FFI as a dependency. Thanks go to Maxime Lapointe for the spot.
|
94
|
-
- Some updates to the win_error helper method. Thanks go to Ethan J. Brown
|
95
|
-
for the suggestions.
|
96
|
-
|
97
|
-
## [v0.3.0](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-0.3.0) (15-Jan-2014)
|
98
|
-
- Rewritten to use Win32OLE instead of using wrapping the C API. Benefits
|
99
|
-
include working on Windows Vista or later, and working with JRuby.
|
100
|
-
- Modified the constructor to accept 3rd and 4th arguments. These indicate
|
101
|
-
which folder to use, and whether or not to create it if it doesn't exist.
|
102
|
-
- The TaskScheduler#save method is now no longer necessary. It is retained
|
103
|
-
for backwards compatibility, but will raise a deprecation warning. In this
|
104
|
-
version simply calling TaskScheduler#activate will implement the task.
|
105
|
-
- Added support for the AT_SYSTEMSTART, AT_LOGON and ON_IDLE trigger types.
|
106
|
-
- Now requires the structured_warnings gem.
|
107
|
-
- Removed the doc directory and separate documentation file. Everything is
|
108
|
-
inlined now. There's still an example under the "examples" directory, too.
|
109
|
-
- Added test-unit, rake, and win32-security as development dependencies.
|
110
|
-
These are needed for testing only.
|
111
|
-
|
112
|
-
## [v0.2.2](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-0.2.2)(29-Feb-2012)
|
113
|
-
- Moved some include statements inside the TaskScheduler class to avoid
|
114
|
-
polluting Object. Thanks go to Josh Cooper for the spot and patch.
|
115
|
-
- Minor formatting tweaks to silence 1.9 warnings.
|
116
|
-
|
117
|
-
## [v0.2.1](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-0.2.1) (8-Oct-2011)
|
118
|
-
- Fixed a bug that would not allow task to run as SYSTEM. Thanks go to
|
119
|
-
Josh cooper for the spot and patch.
|
120
|
-
- Fixed a bug in new_work_item that would cause it to crash if you tried
|
121
|
-
to create a work item that already existed. An error is now raised instead.
|
122
|
-
Thanks go to Pete Higgins for the spot.
|
123
|
-
- The set_trigger and trigger= methods now internally transform and validate
|
124
|
-
the trigger hash in the same manner as new_work_item. Thanks again go to
|
125
|
-
Pete Higgins.
|
126
|
-
- Cleaned up the repo. The C source files have been removed from the main
|
127
|
-
repository (and this gem). They are in a separate branch on github for
|
128
|
-
anyone who misses them.
|
129
|
-
- Refactored the Rakefile, removing tasks related to the old C source files,
|
130
|
-
and added tasks for cleaning, building and installing a gem.
|
131
|
-
- Updated the README file, eliminating references to anything that was only
|
132
|
-
related to the older C version.
|
133
|
-
|
134
|
-
## [v0.2.0](https://github.com/chef/win32-taskscheduler/tree/win32-taskscheduler-0.2.0)(19-Jun-2009)
|
135
|
-
- Rewritten in pure Ruby!
|
136
|
-
- The TaskScheduler::ONCE constant is now a valid trigger type. Thanks go to
|
137
|
-
Uri Iurgel for the spot and patch.
|
138
|
-
- Added the TaskScheduler#exists? method.
|
139
|
-
- Added the TaskScheduler#tasks alias for the TaskScheduler#enum method.
|
140
|
-
- The TaskScheduler#new_work_item method now accepts symbols as well as
|
141
|
-
strings for hash keys, and ignores case. Also, the keys are now validated.
|
142
|
-
- Renamed the example file and test file.
|
143
|
-
- Added the 'example' Rake task.
|
144
|
-
- Fixed some code in the README synopsis that was incorrect.
|
145
|
-
|
146
|
-
## [v0.1.0](11-May-2008)
|
147
|
-
- The TaskScheduler#save instance method now accepts an optional file name.
|
148
|
-
- Most of the TaskScheduler setter methods now return the value specified
|
149
|
-
instead of true.
|
150
|
-
- Removed the RUN_ONLY_IF_DOCKED and RUN_IF_CONNECTED_TO_INTERNET constants.
|
151
|
-
The MSDN docs say that they are unused.
|
152
|
-
- Added more documentation. Much more rdoc friendly now.
|
153
|
-
- Added many more tests.
|
154
|
-
- Better type handling for bad arguments.
|
155
|
-
- Added a Rakefile with tasks for building, installation and testing.
|
156
|
-
- Added a gemspec.
|
157
|
-
- Inlined the rdoc documentation.
|
158
|
-
- Internal project reorganization and code cleanup.
|
159
|
-
|
160
|
-
## [v0.0.3](1-Mar-2005)
|
161
|
-
- Bug fix for the bitFieldToHumanDays() internal function.
|
162
|
-
- Moved the 'examples' directory to the toplevel directory.
|
163
|
-
- Made the CHANGES and README files rdoc friendly.
|
164
|
-
- Minor updates to taskscheduler.h.
|
165
|
-
|
166
|
-
## [v0.0.2](04-Aug-2004)
|
167
|
-
- Now uses the newer allocation framework and replaced all instances of the
|
168
|
-
deprecated STR2CSTR() function with StringValuePtr(). This means that, as
|
169
|
-
of this release, Ruby 1.8.0 or later is required.
|
170
|
-
- Modified the constructor to accept arguments. This is just some sugar for
|
171
|
-
creating a new task item in one call instead of two.
|
172
|
-
- The argument to trigger= now must be a hash. The same goes for the 'type'
|
173
|
-
sub-hash.
|
174
|
-
- Added the add_trigger() method. Actually, the C code for this method was
|
175
|
-
already in place, I simply forgot to create a corresponding Ruby method
|
176
|
-
for it.
|
177
|
-
- Removed the create_trigger() method. This was really nothing more than an
|
178
|
-
alias for trigger=(). I got confused somehow.
|
179
|
-
- Test suite modified and many more tests added.
|
180
|
-
- Documentation updates, including docs for a couple of methods that I had
|
181
|
-
accidentally omitted previously.
|
182
|
-
|
183
|
-
## [v0.0.1](24-Apr-2004)
|
184
|
-
- Initial release
|