Compare commits
621 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1da2839cc3 | ||
|
|
0200281732 | ||
|
|
3d9f9ff4c2 | ||
|
|
60048b4450 | ||
|
|
4bd67c15c0 | ||
|
|
3237e18d2d | ||
|
|
fe17123707 | ||
|
|
a51df79925 | ||
|
|
efbe78a77e | ||
|
|
9f860a3f3e | ||
|
|
9dc5442743 | ||
|
|
e2d66235b5 | ||
|
|
cafad5599d | ||
|
|
6d8f375ae1 | ||
|
|
a055d7f4a8 | ||
|
|
09102325eb | ||
|
|
33c9774b21 | ||
|
|
d7f64fec4f | ||
|
|
eab5a42d93 | ||
|
|
5c7f120a7e | ||
|
|
d7d78d8053 | ||
|
|
cde7f114f9 | ||
|
|
69f4904b5a | ||
|
|
93d54a915d | ||
|
|
fe9aa59690 | ||
|
|
381a87ab50 | ||
|
|
ffea221568 | ||
|
|
aaf3316e65 | ||
|
|
41664d2ef4 | ||
|
|
717d4f0b9a | ||
|
|
24873ffa9b | ||
|
|
7f6e90758a | ||
|
|
5f4d565483 | ||
|
|
727e23ada9 | ||
|
|
497363bc3a | ||
|
|
6acf8b84ad | ||
|
|
daff0de0bd | ||
|
|
f6daa3b5dc | ||
|
|
2c87d36cbb | ||
|
|
3af3074ab9 | ||
|
|
c00342df6f | ||
|
|
9bbd95a6f2 | ||
|
|
f1fe5d215c | ||
|
|
36e1522a32 | ||
|
|
7c5f795bf4 | ||
|
|
90258636ed | ||
|
|
06ce840a8f | ||
|
|
268c5a92d8 | ||
|
|
7f11783d46 | ||
|
|
ae2d18e79c | ||
|
|
58b9755d0c | ||
|
|
11a79c2f1f | ||
|
|
32742a6f4f | ||
|
|
083e71370f | ||
|
|
0278390279 | ||
|
|
f344ef054f | ||
|
|
68e3953bcc | ||
|
|
7755a5cd9a | ||
|
|
05a7fec4c4 | ||
|
|
8f0e15db85 | ||
|
|
b7dc56fef5 | ||
|
|
da14fb56fa | ||
|
|
b15e892c60 | ||
|
|
eeeb13d094 | ||
|
|
03cb3cd161 | ||
|
|
f1b3558565 | ||
|
|
6a69725ca9 | ||
|
|
63fdabd902 | ||
|
|
d624f04cde | ||
|
|
ba08c7d589 | ||
|
|
35d072f550 | ||
|
|
4c28eebbdf | ||
|
|
3ca0e2fc58 | ||
|
|
7450b22130 | ||
|
|
e39faaa550 | ||
|
|
ccde45acc9 | ||
|
|
6b1c5b5b92 | ||
|
|
e6af5aaea3 | ||
|
|
a792c98630 | ||
|
|
46985ab39d | ||
|
|
28d882af7f | ||
|
|
9d6423e7d7 | ||
|
|
0a88ae6a52 | ||
|
|
395741a502 | ||
|
|
00dbbdf453 | ||
|
|
77cf6202fe | ||
|
|
7ed00bb42d | ||
|
|
b97fe50958 | ||
|
|
0501d73e7b | ||
|
|
8abe2bffb8 | ||
|
|
8477625472 | ||
|
|
08851a2b7a | ||
|
|
d4b9ccf1c2 | ||
|
|
7b177f1fd8 | ||
|
|
7d6e814745 | ||
|
|
3cfb6ecf6f | ||
|
|
11085a0037 | ||
|
|
a679bcf26b | ||
|
|
8ed1764fb3 | ||
|
|
b2696003f0 | ||
|
|
bc818704df | ||
|
|
d21f3c1bcf | ||
|
|
e6ae513474 | ||
|
|
4360f45ab8 | ||
|
|
74ef73ebf4 | ||
|
|
35b512de19 | ||
|
|
a5966592e1 | ||
|
|
8e2e1769c3 | ||
|
|
19da883e14 | ||
|
|
600d5f4475 | ||
|
|
0e0e3b28de | ||
|
|
2439ae0508 | ||
|
|
f9633cb860 | ||
|
|
2c43f35b0b | ||
|
|
a1beff754c | ||
|
|
647fa12cdc | ||
|
|
725235c250 | ||
|
|
25d438d691 | ||
|
|
37232b5302 | ||
|
|
2d250282ee | ||
|
|
18e1c112e0 | ||
|
|
32891e5155 | ||
|
|
ef7cbf097b | ||
|
|
41ab8033e7 | ||
|
|
4f392690eb | ||
|
|
d591e4ebc2 | ||
|
|
a315c19ebb | ||
|
|
764b956221 | ||
|
|
f0b0086ca5 | ||
|
|
8c43494c03 | ||
|
|
634df366bd | ||
|
|
86585feb56 | ||
|
|
f4335ff339 | ||
|
|
61100d167f | ||
|
|
77c7ba3194 | ||
|
|
669e3a762b | ||
|
|
71254ba6e2 | ||
|
|
8e7fe19585 | ||
|
|
95f605ea9d | ||
|
|
19d0e5d42f | ||
|
|
5433a69775 | ||
|
|
f2ac6dace6 | ||
|
|
028889f9ec | ||
|
|
f0c3395c00 | ||
|
|
ee180440e0 | ||
|
|
4eac00c0d9 | ||
|
|
8e15b38e03 | ||
|
|
61e44af487 | ||
|
|
605fecedea | ||
|
|
ac1a5e257e | ||
|
|
401ac0225f | ||
|
|
dbda032a4c | ||
|
|
b60b55dca2 | ||
|
|
e3229f4400 | ||
|
|
34435b3046 | ||
|
|
1077d8ef4b | ||
|
|
9527780d99 | ||
|
|
9878b39571 | ||
|
|
34f0b54284 | ||
|
|
49d8aa7352 | ||
|
|
3ad6246e68 | ||
|
|
66eccf0032 | ||
|
|
995daecaff | ||
|
|
1757c141fe | ||
|
|
45b3f3d56f | ||
|
|
b758b053d5 | ||
|
|
7a3088d553 | ||
|
|
15e297eef3 | ||
|
|
9476ba6578 | ||
|
|
a532120662 | ||
|
|
b33f1a988c | ||
|
|
24663a1944 | ||
|
|
983ce80703 | ||
|
|
4f3dbaa7ff | ||
|
|
0c93614423 | ||
|
|
2060b19e92 | ||
|
|
cc3fc47cc3 | ||
|
|
dd81a6ea91 | ||
|
|
95f59ffb1b | ||
|
|
eaf1eaaee3 | ||
|
|
2ebccbe372 | ||
|
|
adc49e61e7 | ||
|
|
58142e70af | ||
|
|
bae61f58af | ||
|
|
f7ac538f1d | ||
|
|
8196e61a2c | ||
|
|
403983ac6b | ||
|
|
f3e2f495d3 | ||
|
|
78f7ded7a8 | ||
|
|
053d59153e | ||
|
|
84d849da4c | ||
|
|
90eba686c7 | ||
|
|
5a4d53908d | ||
|
|
e76dd18962 | ||
|
|
071c4537ee | ||
|
|
e4e92c8b21 | ||
|
|
43a54cdc76 | ||
|
|
c88ad088c0 | ||
|
|
f462340ac8 | ||
|
|
b0cef15fa2 | ||
|
|
160b0101a9 | ||
|
|
63e0cd198c | ||
|
|
8a601b4d00 | ||
|
|
ff81202d8a | ||
|
|
eed8df7391 | ||
|
|
12df1caead | ||
|
|
15a7565cfb | ||
|
|
38f17b05c2 | ||
|
|
d4e81daee3 | ||
|
|
143724f146 | ||
|
|
a3223d2f01 | ||
|
|
9520fbe4a1 | ||
|
|
91bce23a5a | ||
|
|
b39b367ef2 | ||
|
|
97736b19cd | ||
|
|
a5c6fc9bed | ||
|
|
a68bbc7950 | ||
|
|
40941a3b22 | ||
|
|
7ea6902b87 | ||
|
|
7c74d447bc | ||
|
|
a937d5c4f7 | ||
|
|
2f90496a6e | ||
|
|
36fa99cef0 | ||
|
|
eadbb1672f | ||
|
|
eb7fad1054 | ||
|
|
b4b7dc667f | ||
|
|
8fe56722a5 | ||
|
|
7dfc0643d5 | ||
|
|
b3c2fa1770 | ||
|
|
4303c452e1 | ||
|
|
6b4f2d3e18 | ||
|
|
f8dfc3c652 | ||
|
|
21014f2e0e | ||
|
|
5835e5f72c | ||
|
|
7350e94662 | ||
|
|
d5d2d5bf82 | ||
|
|
14d1f6cde2 | ||
|
|
9f17b917f7 | ||
|
|
c046b48ee9 | ||
|
|
cb6cf7c01f | ||
|
|
cd9b07ca0a | ||
|
|
eb435bc6b0 | ||
|
|
c9ca613348 | ||
|
|
771855fd07 | ||
|
|
e6967bbc07 | ||
|
|
095d8ca719 | ||
|
|
9c089bed37 | ||
|
|
7e94c6f1c9 | ||
|
|
df44296ee0 | ||
|
|
da42b6f3b2 | ||
|
|
264756d986 | ||
|
|
49d9887d03 | ||
|
|
39f22dec4c | ||
|
|
69befbc97b | ||
|
|
820ed1c457 | ||
|
|
c0c6a6dc4b | ||
|
|
a410709f92 | ||
|
|
3b20e85ff0 | ||
|
|
5d8e7a9fa8 | ||
|
|
63ad0760cd | ||
|
|
2ea29ef8cb | ||
|
|
f34baa389c | ||
|
|
41db2f7fe7 | ||
|
|
2db04225a7 | ||
|
|
b6004117e6 | ||
|
|
fd73b28061 | ||
|
|
da39c03a6f | ||
|
|
ba721c9db6 | ||
|
|
9b707cf93d | ||
|
|
a73b42409f | ||
|
|
e743b2c699 | ||
|
|
107c44df88 | ||
|
|
5e19c420e7 | ||
|
|
2f55324708 | ||
|
|
6cc6c34c4b | ||
|
|
3d64fbef49 | ||
|
|
539a0198f3 | ||
|
|
9beebac7fc | ||
|
|
50567fd967 | ||
|
|
3ee004ce4e | ||
|
|
a58fd7559c | ||
|
|
73d738887a | ||
|
|
e96199dc37 | ||
|
|
f5cde10d62 | ||
|
|
1d5df08e78 | ||
|
|
869c2726bb | ||
|
|
2e663df42a | ||
|
|
1c33494547 | ||
|
|
4acaefe9c3 | ||
|
|
8c3f4c06df | ||
|
|
ed589f4b51 | ||
|
|
0a82828d2e | ||
|
|
13c1d049fc | ||
|
|
8c61e95a5b | ||
|
|
a6fa6e19d0 | ||
|
|
8273bdf70f | ||
|
|
5267de8b87 | ||
|
|
62feba1691 | ||
|
|
6036a792e5 | ||
|
|
3cb8784996 | ||
|
|
81d150f80a | ||
|
|
9ebce266ec | ||
|
|
42bcf8db31 | ||
|
|
ff2bbcf650 | ||
|
|
1341db0812 | ||
|
|
c16a4134c7 | ||
|
|
771047ddd7 | ||
|
|
718d67f20c | ||
|
|
d18a510310 | ||
|
|
3a3da1c6f1 | ||
|
|
ba55958327 | ||
|
|
2a67f493f6 | ||
|
|
00647e4963 | ||
|
|
06892deedf | ||
|
|
d12ea40845 | ||
|
|
3f21151331 | ||
|
|
c91f5e5cba | ||
|
|
9e90d17d80 | ||
|
|
2e67bbf6a1 | ||
|
|
ceec9749b9 | ||
|
|
f674b5bfeb | ||
|
|
b3e541c627 | ||
|
|
3389a152be | ||
|
|
662fcfa318 | ||
|
|
06baec9c55 | ||
|
|
270699c26b | ||
|
|
bc699a04ec | ||
|
|
3639e75f5b | ||
|
|
eef14ebc29 | ||
|
|
2568d2b750 | ||
|
|
58a57d7a7d | ||
|
|
8ddb71758e | ||
|
|
54f19eaeb6 | ||
|
|
960096273b | ||
|
|
b360902bd9 | ||
|
|
8006bb49ca | ||
|
|
ac65468233 | ||
|
|
8992cb29da | ||
|
|
b5f5f43b4c | ||
|
|
8a814d9016 | ||
|
|
4ff4a365e1 | ||
|
|
905b6bb92a | ||
|
|
88d06c8ef2 | ||
|
|
102987dac7 | ||
|
|
54cf76444e | ||
|
|
f595c1d446 | ||
|
|
9cf06c44e8 | ||
|
|
5d63ec6d2a | ||
|
|
0544b61138 | ||
|
|
ceb6f70b4d | ||
|
|
f3075f4c51 | ||
|
|
7b850892ae | ||
|
|
6a3ca9c9de | ||
|
|
d69d948963 | ||
|
|
aa6061d7b6 | ||
|
|
ba667475bf | ||
|
|
5737d78f78 | ||
|
|
079fe000bb | ||
|
|
29865c69ab | ||
|
|
f2e9cce248 | ||
|
|
6a16656f03 | ||
|
|
7f4d3605c0 | ||
|
|
d97ad31cc3 | ||
|
|
a49ebf17bf | ||
|
|
903a9dd5cc | ||
|
|
5d8db1ade6 | ||
|
|
423a89fdaa | ||
|
|
85d78fd4ae | ||
|
|
725269e914 | ||
|
|
9d3beaffbb | ||
|
|
7f36b7926b | ||
|
|
f4bb268e27 | ||
|
|
e1329348d1 | ||
|
|
4f06a48d16 | ||
|
|
1dea64d2eb | ||
|
|
375e737f02 | ||
|
|
1032801f12 | ||
|
|
1002b8d32f | ||
|
|
36a72da71f | ||
|
|
a2b3a815e7 | ||
|
|
7820707e46 | ||
|
|
c3f960cfe8 | ||
|
|
965f43a4c3 | ||
|
|
317175bb03 | ||
|
|
1608d48495 | ||
|
|
08ddee1bda | ||
|
|
72756a2bb8 | ||
|
|
38011a3546 | ||
|
|
d72dbdace0 | ||
|
|
5c887b648f | ||
|
|
4de7167352 | ||
|
|
54825b353f | ||
|
|
b23fb58977 | ||
|
|
7b831c6ab8 | ||
|
|
167344bd14 | ||
|
|
14f31ba461 | ||
|
|
13a82799b2 | ||
|
|
66fe33683e | ||
|
|
8030c9a63d | ||
|
|
60630a5cab | ||
|
|
d9ba8f81e2 | ||
|
|
7fe56402fd | ||
|
|
634bce25cd | ||
|
|
437ff003b0 | ||
|
|
9f09798da5 | ||
|
|
5da85b6a88 | ||
|
|
bb42a31486 | ||
|
|
7e5e1e6342 | ||
|
|
6f43bbf96e | ||
|
|
8ea514643d | ||
|
|
f7e12c6e92 | ||
|
|
30f2cc9e28 | ||
|
|
45b9dddb4b | ||
|
|
650dc487db | ||
|
|
5bc443707f | ||
|
|
4510219300 | ||
|
|
cd8601c7ff | ||
|
|
73c27069ee | ||
|
|
7dcad234f5 | ||
|
|
66281639b4 | ||
|
|
1af6fde986 | ||
|
|
83ec9e50b8 | ||
|
|
6d21c85d98 | ||
|
|
0ff00e59ba | ||
|
|
850a342e38 | ||
|
|
1caba06aca | ||
|
|
a115196cee | ||
|
|
5f451de94e | ||
|
|
a4921fc564 | ||
|
|
7d1d03e8cd | ||
|
|
92c18a45ba | ||
|
|
a61fb5c6d6 | ||
|
|
e1deaf73ea | ||
|
|
7d6d602477 | ||
|
|
b0439adee4 | ||
|
|
0a7c88a853 | ||
|
|
b735e6d3e4 | ||
|
|
960ecba12a | ||
|
|
3988820db9 | ||
|
|
22ea7055c9 | ||
|
|
edba3fbea0 | ||
|
|
51e4bc7eae | ||
|
|
3e680235ee | ||
|
|
d2459de700 | ||
|
|
f9f265b409 | ||
|
|
c218f0362e | ||
|
|
fb68ed099e | ||
|
|
01133b3d9f | ||
|
|
52461b758b | ||
|
|
3bc5ceede4 | ||
|
|
a3c9c667b4 | ||
|
|
73f71050a0 | ||
|
|
94d901ec4c | ||
|
|
9e67f36615 | ||
|
|
bf6f166d8f | ||
|
|
1de5ab43d6 | ||
|
|
39dd75dbde | ||
|
|
b509f75c17 | ||
|
|
877649b80a | ||
|
|
b5846f2286 | ||
|
|
80dd98e7fb | ||
|
|
7c3a349bd6 | ||
|
|
84d3f7d30b | ||
|
|
c29c5015d5 | ||
|
|
1f776fb9bf | ||
|
|
f90eb94484 | ||
|
|
80f35cea71 | ||
|
|
a12978967a | ||
|
|
8cce811ce5 | ||
|
|
adb45cec98 | ||
|
|
c09ea26a3c | ||
|
|
d71bf494df | ||
|
|
e82a9c5228 | ||
|
|
a7d976a0a7 | ||
|
|
d09727a9cd | ||
|
|
30c3b0111d | ||
|
|
4ea588d897 | ||
|
|
f7dfe0ecd0 | ||
|
|
323b3fb6de | ||
|
|
e6f1c947be | ||
|
|
a01663d2ca | ||
|
|
936f2e6655 | ||
|
|
67a6d60c62 | ||
|
|
85e6797c4f | ||
|
|
22322bc3ba | ||
|
|
b4a3b14334 | ||
|
|
a3ac44af55 | ||
|
|
d773f78ff5 | ||
|
|
76ee48269b | ||
|
|
35f442bad6 | ||
|
|
43c001b4ba | ||
|
|
182b097902 | ||
|
|
f841f4b41c | ||
|
|
67d07e5f0f | ||
|
|
6d15e3649e | ||
|
|
4fab4d91d5 | ||
|
|
61b70047c6 | ||
|
|
8c3cdc39fb | ||
|
|
a871074845 | ||
|
|
155bc07466 | ||
|
|
d32699008c | ||
|
|
28a8a3debd | ||
|
|
da50517113 | ||
|
|
3079b45ab1 | ||
|
|
62edfd2c50 | ||
|
|
becf48f347 | ||
|
|
568170d525 | ||
|
|
d853303bc6 | ||
|
|
5462242c39 | ||
|
|
cfa935df11 | ||
|
|
818708dfb4 | ||
|
|
3d26a1a028 | ||
|
|
5dcfb272d9 | ||
|
|
c634b0ccbc | ||
|
|
c957be8774 | ||
|
|
513356506b | ||
|
|
f7754d2371 | ||
|
|
aa9a642ade | ||
|
|
7868b7e76b | ||
|
|
01d62c410d | ||
|
|
a1b4cadc1d | ||
|
|
9a283e5da7 | ||
|
|
7a7c6aebd9 | ||
|
|
4b03e542d6 | ||
|
|
66d3a83f1c | ||
|
|
cbda4f3b96 | ||
|
|
1e139fa5d9 | ||
|
|
816b5baefb | ||
|
|
ba3fb6cab2 | ||
|
|
a19a027d5a | ||
|
|
ab9f61dbd8 | ||
|
|
b76019f516 | ||
|
|
9d97c86704 | ||
|
|
8bbb717ac1 | ||
|
|
43f1c1fdce | ||
|
|
ec6cb2218f | ||
|
|
b382c8556f | ||
|
|
427464bca5 | ||
|
|
5629acba85 | ||
|
|
55caaefe88 | ||
|
|
1ce99d89b3 | ||
|
|
ad64e7f7f3 | ||
|
|
8d857867f2 | ||
|
|
8211a730d2 | ||
|
|
4d4fd79ce1 | ||
|
|
c155ac234e | ||
|
|
0d71be34f2 | ||
|
|
b5295dc98d | ||
|
|
864bfd912e | ||
|
|
a20606888e | ||
|
|
80791ff642 | ||
|
|
00db5c4dc7 | ||
|
|
701933cfb5 | ||
|
|
13a19fc9eb | ||
|
|
be8ed0f263 | ||
|
|
435e5eb9a8 | ||
|
|
b539c34cf6 | ||
|
|
2cd27114d6 | ||
|
|
eff877169d | ||
|
|
4474b84dac | ||
|
|
175d955ef8 | ||
|
|
d23fd3fc1f | ||
|
|
82d56f13fc | ||
|
|
68cee49830 | ||
|
|
5892c0cda8 | ||
|
|
59e09e3762 | ||
|
|
79dad7e319 | ||
|
|
4455f9c71d | ||
|
|
ed8e4e0303 | ||
|
|
56993c0785 | ||
|
|
ec830a3fc4 | ||
|
|
cb224a352a | ||
|
|
99b981b988 | ||
|
|
e88cf2be5e | ||
|
|
91262db838 | ||
|
|
e339fb1390 | ||
|
|
4644741849 | ||
|
|
f249505d84 | ||
|
|
6792737f25 | ||
|
|
87b0f317d1 | ||
|
|
2778f8d1c3 | ||
|
|
b67a68b100 | ||
|
|
72e2d9c2ab | ||
|
|
2af9e02029 | ||
|
|
7b6d01a965 | ||
|
|
d9cfda43b6 | ||
|
|
d15aa639f5 | ||
|
|
8a70a3e64b | ||
|
|
1a26a6a145 | ||
|
|
5f3449876e | ||
|
|
d757443e38 | ||
|
|
f8fe2c9760 | ||
|
|
a24728eebf | ||
|
|
06bdb264bc | ||
|
|
7a2c18804b | ||
|
|
ac797aaa8e | ||
|
|
c530ea300f | ||
|
|
245282bd06 | ||
|
|
ab1930e972 | ||
|
|
13ba0b2802 | ||
|
|
ee94b65fb0 | ||
|
|
cf16606348 | ||
|
|
5b57f46d99 | ||
|
|
0436a6490e | ||
|
|
b3ee2633a8 | ||
|
|
036b90370f | ||
|
|
04dbfb2bf4 | ||
|
|
bfb137c442 | ||
|
|
5c2059c16f | ||
|
|
52694a1c4c | ||
|
|
961eb0b92c | ||
|
|
cbf74e5432 | ||
|
|
760b9b5434 | ||
|
|
d344e5ad16 | ||
|
|
3247f9a487 | ||
|
|
33a140ed60 | ||
|
|
0bc3cdb111 | ||
|
|
127e7cce2e | ||
|
|
db428989b1 | ||
|
|
4c33adfee7 | ||
|
|
3876099d56 |
278
.gitignore
vendored
@@ -1,19 +1,281 @@
|
||||
Release
|
||||
mRemoteV1/bin
|
||||
mRemoteV1/obj
|
||||
mRemoteV1/publish
|
||||
**/bin/
|
||||
**/obj/
|
||||
**/[Rr]elease [Pp]ortable/
|
||||
**/[Dd]ebug [Pp]ortable/
|
||||
|
||||
*.pfx
|
||||
*.suo
|
||||
*.vbproj.user
|
||||
Thumbs.db
|
||||
[Dd]ebug/
|
||||
_Re[Ss]harper.*
|
||||
*.resharper
|
||||
*.resharper.user
|
||||
*.suo
|
||||
*.cache
|
||||
*~
|
||||
*.swp
|
||||
*.user*
|
||||
*.pidb
|
||||
*.gpState
|
||||
_UpgradeReport_Files/
|
||||
Backup/
|
||||
UpgradeLog.XML
|
||||
*.orig
|
||||
*.sdf
|
||||
*.opensdf
|
||||
*.ipch
|
||||
|
||||
## Ignore Visual Studio temporary files, build results, and
|
||||
## files generated by popular Visual Studio add-ons.
|
||||
|
||||
# User-specific files
|
||||
*.suo
|
||||
*.user
|
||||
*.userosscache
|
||||
*.sln.docstates
|
||||
|
||||
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||
*.userprefs
|
||||
|
||||
# Build results
|
||||
[Dd]ebug/
|
||||
[Dd]ebugPublic/
|
||||
[Rr]elease/
|
||||
[Rr]eleases/
|
||||
x64/
|
||||
x86/
|
||||
bld/
|
||||
[Bb]in/
|
||||
[Oo]bj/
|
||||
[Ll]og/
|
||||
|
||||
# Visual Studio 2015 cache/options directory
|
||||
.vs/
|
||||
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||
#wwwroot/
|
||||
|
||||
# MSTest test Results
|
||||
[Tt]est[Rr]esult*/
|
||||
[Bb]uild[Ll]og.*
|
||||
|
||||
# NUNIT
|
||||
*.VisualState.xml
|
||||
TestResult.xml
|
||||
|
||||
# Build Results of an ATL Project
|
||||
[Dd]ebugPS/
|
||||
[Rr]eleasePS/
|
||||
dlldata.c
|
||||
|
||||
# DNX
|
||||
project.lock.json
|
||||
artifacts/
|
||||
|
||||
*_i.c
|
||||
*_p.c
|
||||
*_i.h
|
||||
*.ilk
|
||||
*.meta
|
||||
*.obj
|
||||
*.pch
|
||||
*.pdb
|
||||
*.pgc
|
||||
*.pgd
|
||||
*.rsp
|
||||
*.sbr
|
||||
*.tlb
|
||||
*.tli
|
||||
*.tlh
|
||||
*.tmp
|
||||
*.tmp_proj
|
||||
*.log
|
||||
*.vspscc
|
||||
*.vssscc
|
||||
.builds
|
||||
*.pidb
|
||||
*.svclog
|
||||
*.scc
|
||||
|
||||
# Chutzpah Test files
|
||||
_Chutzpah*
|
||||
|
||||
# Visual C++ cache files
|
||||
ipch/
|
||||
*.aps
|
||||
*.ncb
|
||||
*.opendb
|
||||
*.opensdf
|
||||
*.sdf
|
||||
*.cachefile
|
||||
*.VC.db
|
||||
*.VC.VC.opendb
|
||||
|
||||
# Visual Studio profiler
|
||||
*.psess
|
||||
*.vsp
|
||||
*.vspx
|
||||
*.sap
|
||||
|
||||
# TFS 2012 Local Workspace
|
||||
$tf/
|
||||
|
||||
# Guidance Automation Toolkit
|
||||
*.gpState
|
||||
|
||||
# ReSharper is a .NET coding add-in
|
||||
_ReSharper*/
|
||||
*.[Rr]e[Ss]harper
|
||||
*.DotSettings.user
|
||||
|
||||
# JustCode is a .NET coding add-in
|
||||
.JustCode
|
||||
|
||||
# TeamCity is a build add-in
|
||||
_TeamCity*
|
||||
|
||||
# DotCover is a Code Coverage Tool
|
||||
*.dotCover
|
||||
|
||||
# NCrunch
|
||||
_NCrunch_*
|
||||
.*crunch*.local.xml
|
||||
nCrunchTemp_*
|
||||
|
||||
# MightyMoose
|
||||
*.mm.*
|
||||
AutoTest.Net/
|
||||
|
||||
# Web workbench (sass)
|
||||
.sass-cache/
|
||||
|
||||
# Installshield output folder
|
||||
[Ee]xpress/
|
||||
|
||||
# DocProject is a documentation generator add-in
|
||||
DocProject/buildhelp/
|
||||
DocProject/Help/*.HxT
|
||||
DocProject/Help/*.HxC
|
||||
DocProject/Help/*.hhc
|
||||
DocProject/Help/*.hhk
|
||||
DocProject/Help/*.hhp
|
||||
DocProject/Help/Html2
|
||||
DocProject/Help/html
|
||||
|
||||
# Click-Once directory
|
||||
publish/
|
||||
|
||||
# Publish Web Output
|
||||
*.[Pp]ublish.xml
|
||||
*.azurePubxml
|
||||
# TODO: Comment the next line if you want to checkin your web deploy settings
|
||||
# but database connection strings (with potential passwords) will be unencrypted
|
||||
*.pubxml
|
||||
*.publishproj
|
||||
|
||||
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||
# in these scripts will be unencrypted
|
||||
PublishScripts/
|
||||
|
||||
# NuGet Packages
|
||||
*.nupkg
|
||||
# The packages folder can be ignored because of Package Restore
|
||||
**/packages/*
|
||||
# except build/, which is used as an MSBuild target.
|
||||
!**/packages/build/
|
||||
# Uncomment if necessary however generally it will be regenerated when needed
|
||||
#!**/packages/repositories.config
|
||||
# NuGet v3's project.json files produces more ignoreable files
|
||||
*.nuget.props
|
||||
*.nuget.targets
|
||||
|
||||
# Microsoft Azure Build Output
|
||||
csx/
|
||||
*.build.csdef
|
||||
|
||||
# Microsoft Azure Emulator
|
||||
ecf/
|
||||
rcf/
|
||||
|
||||
# Windows Store app package directories and files
|
||||
AppPackages/
|
||||
BundleArtifacts/
|
||||
Package.StoreAssociation.xml
|
||||
_pkginfo.txt
|
||||
|
||||
# Visual Studio cache files
|
||||
# files ending in .cache can be ignored
|
||||
*.[Cc]ache
|
||||
# but keep track of directories ending in .cache
|
||||
!*.[Cc]ache/
|
||||
|
||||
# Others
|
||||
ClientBin/
|
||||
~$*
|
||||
*~
|
||||
*.dbmdl
|
||||
*.dbproj.schemaview
|
||||
*.pfx
|
||||
*.publishsettings
|
||||
node_modules/
|
||||
orleans.codegen.cs
|
||||
|
||||
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||
#bower_components/
|
||||
|
||||
# RIA/Silverlight projects
|
||||
Generated_Code/
|
||||
|
||||
# Backup & report files from converting an old project file
|
||||
# to a newer Visual Studio version. Backup files are not needed,
|
||||
# because we have git ;-)
|
||||
_UpgradeReport_Files/
|
||||
Backup*/
|
||||
UpgradeLog*.XML
|
||||
UpgradeLog*.htm
|
||||
|
||||
# SQL Server files
|
||||
*.mdf
|
||||
*.ldf
|
||||
|
||||
# Business Intelligence projects
|
||||
*.rdl.data
|
||||
*.bim.layout
|
||||
*.bim_*.settings
|
||||
|
||||
# Microsoft Fakes
|
||||
FakesAssemblies/
|
||||
|
||||
# GhostDoc plugin setting file
|
||||
*.GhostDoc.xml
|
||||
|
||||
# Node.js Tools for Visual Studio
|
||||
.ntvs_analysis.dat
|
||||
|
||||
# Visual Studio 6 build log
|
||||
*.plg
|
||||
|
||||
# Visual Studio 6 workspace options file
|
||||
*.opt
|
||||
|
||||
# Visual Studio LightSwitch build output
|
||||
**/*.HTMLClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/GeneratedArtifacts
|
||||
**/*.DesktopClient/ModelManifest.xml
|
||||
**/*.Server/GeneratedArtifacts
|
||||
**/*.Server/ModelManifest.xml
|
||||
_Pvt_Extensions
|
||||
|
||||
# Paket dependency manager
|
||||
.paket/paket.exe
|
||||
paket-files/
|
||||
|
||||
# FAKE - F# Make
|
||||
.fake/
|
||||
|
||||
# JetBrains Rider
|
||||
.idea/
|
||||
*.sln.iml
|
||||
*.msi
|
||||
Installer/Resources/License.rtf
|
||||
Installer/Fragments/FilesFragment.wxs
|
||||
Installer Projects/Installer/Resources/License.rtf
|
||||
Installer Projects/Installer/Fragments/FilesFragment.wxs
|
||||
|
||||
126
BUILD.CMD
@@ -1,16 +1,36 @@
|
||||
@echo off
|
||||
|
||||
SET VERSIONTAG=RC5
|
||||
setlocal enabledelayedexpansion
|
||||
|
||||
SET VCVARSALL="%ProgramFiles(x86)%\Microsoft Visual Studio 9.0\VC\vcvarsall.bat"
|
||||
SET DEVENV="devenv.exe"
|
||||
SET MAKENSIS="%ProgramFiles(x86)%\NSIS\Unicode\makensis.exe"
|
||||
SET RAR="%ProgramFiles%\WinRAR\WinRAR.exe"
|
||||
set VERSIONTAG=
|
||||
|
||||
call %VCVARSALL% x86 > NUL 2>&1
|
||||
set VCVARSALL="%ProgramFiles(x86)%\Microsoft Visual Studio 10.0\VC\vcvarsall.bat"
|
||||
set DEVENV="devenv.exe"
|
||||
set MAKENSIS="%ProgramFiles(x86)%\NSIS\Unicode\makensis.exe"
|
||||
set RAR="%ProgramFiles%\WinRAR\WinRAR.exe"
|
||||
set SIGNCMD=signtool.exe sign /n "Astrospark Technologies, LLC" /sha1 "1cbd910dbd6e77f26506e7f600736972f700673f" /tr http://timestamp.comodoca.com/rfc3161
|
||||
|
||||
rmdir /s /q "%~dp0\mRemoteV1\bin" > NUL 2>&1
|
||||
rmdir /s /q "%~dp0\mRemoteV1\obj" > NUL 2>&1
|
||||
rem Windows Sysinternals Sigcheck from http://technet.microsoft.com/en-us/sysinternals/bb897441
|
||||
set SIGCHECK="%ProgramFiles(x86)%\Sigcheck\sigcheck.exe"
|
||||
|
||||
call %VCVARSALL% x86
|
||||
|
||||
rmdir /s /q "%~dp0\mRemoteV1\bin" > nul 2>&1
|
||||
rmdir /s /q "%~dp0\mRemoteV1\obj" > nul 2>&1
|
||||
|
||||
if exist "%~dp0\mRemoteV1\bin" goto ERROR_RMDIR
|
||||
if exist "%~dp0\mRemoteV1\obj" goto ERROR_RMDIR
|
||||
goto NOERROR_RMDIR
|
||||
|
||||
:ERROR_RMDIR
|
||||
echo.
|
||||
echo Could not clean output directories.
|
||||
echo.
|
||||
echo Build process failed.
|
||||
echo.
|
||||
goto END
|
||||
|
||||
:NOERROR_RMDIR
|
||||
|
||||
echo Building release version...
|
||||
%DEVENV% "%~dp0\mRemoteV1.sln" /build "Release"
|
||||
@@ -18,34 +38,112 @@ echo Building release version...
|
||||
echo Building portable version...
|
||||
%DEVENV% "%~dp0\mRemoteV1.sln" /build "Release Portable"
|
||||
|
||||
mkdir "%~dp0\Release"
|
||||
echo Signing binaries...
|
||||
%SIGNCMD% ^
|
||||
"%~dp0\mRemoteV1\bin\Release\de\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\el\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\en-US\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\es\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\es-AR\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\fr\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\hu\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\it\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\nb-NO\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\nl\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\pl\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\pt\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\pt-BR\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\ru\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\uk\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\zh-CN\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\zh-TW\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\AxInterop.MSTSCLib.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\AxInterop.WFICALib.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\Interop.EOLWTSCOM.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\Interop.MSTSCLib.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\Interop.ShDocVw.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\Interop.WFICALib.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release\mRemoteNG.exe" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\de\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\el\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\en-US\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\es\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\es-AR\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\fr\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\hu\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\it\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\nb-NO\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\nl\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\pl\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\pt\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\pt-BR\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\ru\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\uk\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\zh-CN\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\zh-TW\mRemoteNG.resources.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\AxInterop.MSTSCLib.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\AxInterop.WFICALib.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\Interop.EOLWTSCOM.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\Interop.MSTSCLib.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\Interop.ShDocVw.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\Interop.WFICALib.dll" ^
|
||||
"%~dp0\mRemoteV1\bin\Release Portable\mRemoteNG.exe" ^
|
||||
|
||||
|
||||
rem Do not remove the two blank lines above this line.
|
||||
|
||||
mkdir "%~dp0\Release" > nul 2>&1
|
||||
|
||||
echo Getting product version...
|
||||
%MAKENSIS% "%~dp0\Installer\GetVersion.nsi"
|
||||
"%~dp0\Release\GetVersion.exe"
|
||||
call "%~dp0\Release\Version.cmd"
|
||||
set VERSIONNSH="%~dp0\Release\Version.nsh"
|
||||
set SIGCHECK=!SIGCHECK:"=^"!
|
||||
set SIGCHECK=!SIGCHECK: =^^ !
|
||||
set SIGCHECK=!SIGCHECK:(=^^(!
|
||||
set SIGCHECK=!SIGCHECK:)=^^)!
|
||||
for /F "usebackq delims=. tokens=1-4" %%i in (`!SIGCHECK! /accepteula -q -n "%~dp0\mRemoteV1\bin\Release\mRemoteNG.exe"`) do (
|
||||
set PRODUCT_VERSION_SHORT=%%i.%%j
|
||||
echo ^^!define PRODUCT_VERSION "%%i.%%j.%%k.%%l" > %VERSIONNSH%
|
||||
echo ^^!define PRODUCT_VERSION_SHORT "%%i.%%j" >> %VERSIONNSH%
|
||||
echo ^^!define PRODUCT_VERSION_MAJOR "%%i" >> %VERSIONNSH%
|
||||
echo ^^!define PRODUCT_VERSION_MINOR "%%j" >> %VERSIONNSH%
|
||||
)
|
||||
echo Version is %PRODUCT_VERSION_SHORT%
|
||||
|
||||
echo Creating installer package...
|
||||
if defined VERSIONTAG (
|
||||
%MAKENSIS% /DPRODUCT_VERSION_TAG=%VERSIONTAG% "%~dp0\Installer\mRemote.nsi"
|
||||
|
||||
set INSTALLEREXE="%~dp0\Release\mRemoteNG-Installer-%PRODUCT_VERSION_SHORT%-%VERSIONTAG%.exe"
|
||||
set BINARYZIP="%~dp0\Release\mRemoteNG-%PRODUCT_VERSION_SHORT%-%VERSIONTAG%.zip"
|
||||
set PORTABLEZIP="%~dp0\Release\mRemoteNG-Portable-%PRODUCT_VERSION_SHORT%-%VERSIONTAG%.zip"
|
||||
) else (
|
||||
%MAKENSIS% "%~dp0\Installer\mRemote.nsi"
|
||||
|
||||
set INSTALLEREXE="%~dp0\Release\mRemoteNG-Installer-%PRODUCT_VERSION_SHORT%.exe"
|
||||
set BINARYZIP="%~dp0\Release\mRemoteNG-%PRODUCT_VERSION_SHORT%.zip"
|
||||
set PORTABLEZIP="%~dp0\Release\mRemoteNG-Portable-%PRODUCT_VERSION_SHORT%.zip"
|
||||
)
|
||||
|
||||
del %VERSIONNSH%
|
||||
|
||||
echo Signing installer package...
|
||||
%SIGNCMD% %INSTALLEREXE%
|
||||
|
||||
echo Creating release ZIP file...
|
||||
del /f /q %BINARYZIP% > NUL 2>&1
|
||||
del /f /q %BINARYZIP% > nul 2>&1
|
||||
%RAR% a -m5 -r -ep1 -afzip -inul %BINARYZIP% "%~dp0\mRemoteV1\bin\Release\*.*"
|
||||
%RAR% a -m5 -r -ep1 -afzip -inul %BINARYZIP% "%~dp0\Installer\Dependencies\*.*"
|
||||
%RAR% a -m5 -ep -afzip -inul %BINARYZIP% "%~dp0\*.TXT"
|
||||
|
||||
echo Creating portable ZIP file...
|
||||
del /f /q %PORTABLEZIP% > NUL 2>&1
|
||||
del /f /q %PORTABLEZIP% > nul 2>&1
|
||||
%RAR% a -m5 -r -ep1 -afzip -inul %PORTABLEZIP% "%~dp0\mRemoteV1\bin\Release Portable\*.*"
|
||||
%RAR% a -m5 -r -ep1 -afzip -inul %PORTABLEZIP% "%~dp0\Installer\Dependencies\*.*"
|
||||
%RAR% a -m5 -ep -afzip -inul %PORTABLEZIP% "%~dp0\*.TXT"
|
||||
|
||||
echo.
|
||||
echo Build process complete.
|
||||
echo.
|
||||
|
||||
:END
|
||||
pause
|
||||
|
||||
@@ -1,3 +1,255 @@
|
||||
1.73 Beta 2 ():
|
||||
Fixed issue MR-619 - Keyboard shortcuts stop working after locking the screen with Win+L
|
||||
Added support for importing files from PuTTY Connection Manager.
|
||||
Improved the import and export functionality.
|
||||
|
||||
1.73 Beta 1 (2013-11-19):
|
||||
Added feature MR-16 - Add keyboard shortcuts to switch between tabs
|
||||
Added feature MR-141 - Add a default protocol option
|
||||
Added feature MR-212 - Add option to connect without credentials
|
||||
Added feature MR-512 - Add support for importing files from Remote Desktop Connection Manager
|
||||
Added feature MR-547 - Add support for Xming Portable PuTTY
|
||||
Made improvement MR-250 - Show the name of the selected connection tab in the title of the window
|
||||
Made improvement MR-367 - Make the 'Connect' button on the 'Quick Connect' toolbar a forced dropdown
|
||||
Made improvement MR-419 - Password prompt dialog should have a meaningful window title
|
||||
Made improvement MR-486 - Allow escaping of variable names for external tools
|
||||
Made improvement MR-590 - Make panels docked to the edge of the window keep their size
|
||||
Fixed issue MR-187 - F7 keyboard shortcut for New Folder conflicts with remote connections
|
||||
Fixed issue MR-523 - Changes to external tools are not saved until exiting the program
|
||||
Fixed issue MR-556 - Export fails when overwriting an existing file
|
||||
Fixed issue MR-594 - Crash on startup if write access is denied to the IE browser emulation registry key
|
||||
Fixed issue MR-603 - Some configuration options are still shown even when inheritance is enabled
|
||||
Added "Reset" to config panel context menu to allow resetting some config settings to their default value.
|
||||
Added and improved menu icons.
|
||||
Removed misleading log messages about RD Gateway support.
|
||||
Removed invalid "Site" configuration option from PuTTY Saved Sessions.
|
||||
Fixed PuTTY Saved Sessions still showing if all saved sessions are removed.
|
||||
Fixed config panel showing settings from previously loaded connection file after loading a new one.
|
||||
Improved handling of variables in external tool arguments.
|
||||
|
||||
1.72 (2013-11-13):
|
||||
Fixed issue MR-592 - Unable to run VBS script as an external tool
|
||||
Fixed issue MR-596 - Incorrect escaping of quotation marks in external tool arguments
|
||||
|
||||
1.71 (2013-10-29):
|
||||
Fixed issue MR-574 - Crash when retrieving RDP session list if eolwtscom.dll is not registered
|
||||
Fixed issue MR-578 - Connections file is reset
|
||||
Fixed log file not showing operating system version on Windows XP and Windows Server 2003.
|
||||
Fixed the wrong connections file opening on startup under certain conditions.
|
||||
Fixed checking for updates even when disabled.
|
||||
Improved error reporting when loading connections files.
|
||||
Removed warning message when mRemoteNG is started for the first time about new connections file being created.
|
||||
|
||||
1.71 Release Candidate 2 (2013-10-16):
|
||||
Fixed issue MR-560 - Cannot Auto-Update With Open Connections: Unable to find an entry point named 'TaskDialogIndirect' in DLL 'ComCtl32'
|
||||
Fixed issue MR-565 - Double Folder keep heritage on the initial Folder
|
||||
Fixed issue MR-566 - Typo in German UI Automatic Update Settings
|
||||
Fixed duplicated folders possibly being named "New Connection" instead of the original folder's name.
|
||||
|
||||
1.71 Release Candidate 1 (2013-10-01):
|
||||
Fixed issue MR-495 - Having a negative range in port scan creates memory exhaustion.
|
||||
Fixed issue MR-514 - Window Proxy test failed without close button
|
||||
Fixed issue MR-521 - Right-Clicking in "Sessions" panel crashes mRemoteNG
|
||||
Fixed issue MR-525 - Could not start on windows 7 64bit
|
||||
Fixed issue MR-535 - SQL error saving Connections
|
||||
Fixed issue MR-538 - RDP loses connection when hiding config or connections pane
|
||||
Fixed issue MR-542 - Wrapped putty has security flaw
|
||||
Made minor improvements to the port scan functionality.
|
||||
Fixed possible cross-thread operation exception when loading connections from SQL.
|
||||
Fixed PuTTY Saved Sessions not showing after loading a new connections file.
|
||||
Updated PuTTY to version 0.63.
|
||||
Updated translations.
|
||||
Added Chinese (Traditional) translation.
|
||||
Added partial Greek and Hungarian translations.
|
||||
|
||||
1.71 Beta 5 (2013-06-09):
|
||||
Fixed issue MR-491 - Could not start RDP Connection
|
||||
Fixed issue MR-499 - TS Gateway is not working in latest release 1.71
|
||||
Fixed typo in SQL queries.
|
||||
|
||||
1.71 Beta 4 (2013-05-28):
|
||||
Added feature MR-435 - Add digital signature check to updater
|
||||
Fixed issue MR-255 - The version of the RDP AX client should be updated to 7
|
||||
Fixed issue MR-392 - Sessions Panel - context menu entries need to be context aware
|
||||
Fixed issue MR-422 - Gives error Object reference not set to an instance of an object.
|
||||
Fixed issue MR-424 - Import of a few Linux SSH2 hosts discovered via the port scan tool results in a UE
|
||||
Fixed issue MR-439 - MRemoteNG 1.70 does not start
|
||||
Fixed issue MR-440 - RDP import with non-standard port
|
||||
Fixed issue MR-443 - Instructions for eolwtscom.dll registration for Portable version are inaccurate
|
||||
Fixed issue MR-446 - Putty saved sessions show in connection panel
|
||||
Fixed issue MR-459 - Maximized -> Minimized -> Restored results in mangled active display
|
||||
Fixed issue MR-463 - Add support for LoadBalanceInfo to RDP
|
||||
Fixed issue MR-470 - Quick Connect to Linux server uses invalid credentials
|
||||
Fixed issue MR-471 - PuTTY Saved Sessions disappears from connection list
|
||||
Fixed issue MR-487 - Initiate connections on MouseUp event
|
||||
Added PuTTY Session Settings command to the Config panel for PuTTY Saved Sessions.
|
||||
Updated translations.
|
||||
Added Norwegian (Bokmal) and Portuguese (Brazil) translations.
|
||||
Added Spanish translation to the installer.
|
||||
Fixed an exception or crash when choosing unnamed colors for themes.
|
||||
Fixed possible error "Control does not support transparent background colors" when modifying themes.
|
||||
Fixed changes to the active theme not being saved reliably.
|
||||
Fixed handling of the plus (+) character in PuTTY session names.
|
||||
Changed Internet Explorer to no longer force IE7 compatibility mode.
|
||||
Changed the "Launch PuTTY" button in the "Options" dialog to open PuTTY from the path the user has currently set, instead of what was previously saved.
|
||||
Improved update and announcement checking.
|
||||
Improved the PuTTY Saved Sessions list to update automatically when any changes are made.
|
||||
Improved loading time of large connection files.
|
||||
Lowered required version of RDC from 6.1 to 6.0.
|
||||
Updated VncSharpNG to 1.3.4896.25007.
|
||||
|
||||
1.71 Beta 3 (2013-03-20):
|
||||
Fixed issue MR-397 - Putty disappears from the screen
|
||||
Fixed issue MR-398 - Full Screen mode doesn't correctly make use of available space
|
||||
Fixed issue MR-402 - scrollbar touch moves putty window
|
||||
Fixed issue MR-406 - Items disappear from External Tools toolbar when accessing External Tools panel
|
||||
Fixed issue MR-410 - Unhandled exception when clicking New button under Theme
|
||||
Fixed issue MR-413 - Can't use aplication
|
||||
Fixed new connections having a globe icon.
|
||||
Fixed the category names in the themes tab of the options dialog on Windows XP not showing correctly.
|
||||
Fixed PuTTY saved sessions with spaces or special characters not being listed.
|
||||
|
||||
1.71 Beta 2 (2013-03-19):
|
||||
Added feature MR-336 - Customizable background color for the windows/panels
|
||||
Added feature MR-345 - Two separate options for confirming closure of Tabs and Connection Panels
|
||||
Added feature MR-346 - Option to show/hide the description box at the bottom of the Config panel
|
||||
Added feature MR-351 - Import connections from PuTTY
|
||||
Fixed issue MR-354 - Re-ordering tabs doesn't give good, reliable visual feedback
|
||||
Fixed issue MR-375 - Changing a connection's icon using the picture button should immediately update Icon field
|
||||
Fixed issue MR-377 - Several redundant panels can be opened
|
||||
Fixed issue MR-379 - Connection variables not working with external tools
|
||||
Fixed issue MR-381 - Notifications panel - whitespace context menu allows Copy and Delete on nothing
|
||||
Fixed issue MR-401 - Checkbox misaligned
|
||||
The username and domain settings are now hidden for VNC connections since they are not supported.
|
||||
Changed "Automatically get session information" to be disabled by default.
|
||||
RDP connections can now be switched to full screen mode when redirect key combinations is enabled.
|
||||
|
||||
1.71 Beta 1 (2013-03-04):
|
||||
Added feature MR-329 - Create Option to disable the "Quick: " prefix
|
||||
Fixed issue MR-67 - Sort does not recursively sort
|
||||
Fixed issue MR-117 - Remote Session Info Window / Tab does not populate
|
||||
Fixed issue MR-121 - Config pane not sorting properties correctly when switching between alphabetical and categorized view
|
||||
Fixed issue MR-130 - Issues duplicating folders
|
||||
Fixed issue MR-142 - Start of mRemoteNG takes about one minute and consumes excessive CPU
|
||||
Fixed issue MR-158 - Password field not accepting Pipe
|
||||
Fixed issue MR-330 - Portable version saves log to user's profile folder
|
||||
Fixed issue MR-333 - Unnecessary prompt for 'close all open connections?'
|
||||
Fixed issue MR-342 - Incorrect view in config pane of new connection after viewing default inheritance
|
||||
Fixed issue MR-352 - Passwords with " (quotation mark) and # (hash key) characters make mRemoteNG to open PuttyNG dialog
|
||||
Fixed issue MR-362 - Rename 'Screenshot Manager' to 'Screenshots' on the View menu to match Panel name
|
||||
Added detection of newer versions of connection files and database schemata. mRemoteNG will now refuse to open them to avoid data loss.
|
||||
Improved appearance and discoverability of the connection search box.
|
||||
If RDC 7.0 or higher is installed, the connection bar is no longer briefly shown when connecting to an RDP connection with redirect key combinations enabled.
|
||||
If RDC 8.0 or higher is installed, RDP connections automatically adjust their size when the window is resized or when toggling full screen mode.
|
||||
|
||||
1.70 (2013-03-07):
|
||||
Fixed issue MR-339 - Connection group collapses with just one click
|
||||
Fixed issue MR-340 - Object reference not set to an instance of an object.
|
||||
Fixed issue MR-344 - Move "Always show panel tabs" option
|
||||
Fixed issue MR-350 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long.
|
||||
Fixed issue MR-355 - Moving sub folders to top level causes property loss
|
||||
Fixed tabs not closing on double-click when the active tab is a PuTTY connection.
|
||||
|
||||
1.70 Release Candidate 2 (2013-02-25):
|
||||
Fixed issue MR-332 - Can't select different tab with one click after disconnecting existing tab
|
||||
Fixed issue MR-338 - PuTTYNG crashing on fresh install of mRemoteNG
|
||||
Re-enabled PuTTYNG integration enhancements on Windows 8
|
||||
|
||||
1.70 Release Candidate 1 (2013-02-22):
|
||||
Fixed issue MR-183 - Error trying to save connections when using SQL - Invalid column name _parentConstantId
|
||||
Fixed issue MR-225 - Tabs do not open in a panel until multiple panels are displayed.
|
||||
Fixed issue MR-229 - Integrated PuTTY doesn't work in Windows 8 RP
|
||||
Fixed issue MR-264 - Windows 8 support
|
||||
Fixed issue MR-317 - Difficulty right-clicking on Tab
|
||||
Fixed issue MR-318 - Wrong tab gets selected when tab names overflow on the tab bar
|
||||
Fixed issue MR-321 - New connection panel doesn't get panel header if its the only one or is moved
|
||||
Fixed issue MR-322 - Connection Button not listing servers
|
||||
Added option to always show panel tabs.
|
||||
Fixed "Decryption failed. Padding is invalid and cannot be removed." notification.
|
||||
Fixed KiTTY opening in a separate window when using a saved session.
|
||||
|
||||
1.70 Beta 2 (2013-02-18):
|
||||
Fixed issue MR-47 - Silent Installation Prompts for Language
|
||||
Fixed issue MR-54 - Error When disconnecting from SSL channel RDP
|
||||
Fixed issue MR-58 - Bug when duplicating connection in connection view
|
||||
Fixed issue MR-68 - Config Window Loses Options
|
||||
Fixed issue MR-71 - Minimizing mRemoteNG causes temporary re-size of Putty sessions (windows)
|
||||
Fixed issue MR-80 - Reconnect previous sessions
|
||||
Fixed issue MR-81 - Problem Duplicating Folder w/ Sub-Folders
|
||||
Fixed issue MR-85 - Microsoft .NET Framework warning
|
||||
Fixed issue MR-86 - Citrix GDI+ Error when screen is locked
|
||||
Fixed issue MR-96 - When pressing SHIFT+F4 to create a new connection inside a folder, the new connections doesn't inherit any properties from its parent
|
||||
Fixed issue MR-101 - Collapse all folders causes a NullReferenceException
|
||||
Fixed issue MR-165 - Can't close About window if it is the last tab
|
||||
Fixed issue MR-166 - Inheritance button is disabled on some connections
|
||||
Fixed issue MR-167 - Name and description of properties not show in inheritance list
|
||||
Fixed issue MR-171 - Inherit configuration not showing friendly names for each inherit component
|
||||
Fixed issue MR-172 - RDGatewayPassword is unencrypted in confCons.xml file
|
||||
Fixed issue MR-174 - Trailing Space on a Hostname/IP will cause the connection not to happen.
|
||||
Fixed issue MR-175 - Problem with focus when 2 or more PuTTY sessions opened
|
||||
Fixed issue MR-176 - Del key while editing connection name triggers 'Delete Connection'
|
||||
Fixed issue MR-178 - 3 different panels crashes all connections
|
||||
Fixed issue MR-181 - Sessions on startup
|
||||
Fixed issue MR-190 - Can't click on tab/session
|
||||
Fixed issue MR-196 - Cannot export list without usernames and passwords
|
||||
Fixed issue MR-199 - when using screen inside putty, screen becomes dead when reduce mremoteNG
|
||||
Fixed issue MR-202 - The Connection "Tab" show Ampersands as underscores.
|
||||
Fixed issue MR-214 - Hostname/IP reset
|
||||
Fixed issue MR-224 - Session tabs become un-clickable after duplicating a tab or opening a new one in the same panel
|
||||
Fixed issue MR-233 - Backslash at end of password prevents success of putty invocation and corresponding auto-logon
|
||||
Fixed issue MR-235 - Config file gets corrupted when leaving the password entry box with ESC
|
||||
Fixed issue MR-264 - Windows 8 support
|
||||
Fixed issue MR-277 - Inheritance configuration button not appear in configuration tab
|
||||
Fixed issue MR-284 - SSH: Text not showing properly
|
||||
Fixed issue MR-299 - mRemoteNG crashes while using remotely (Windows XP remote desktop)
|
||||
Fixed issue MR-306 - Fatal .NET exception on program start
|
||||
Fixed issue MR-313 - PuTTY window not maximized when loading from saved session
|
||||
mRemoteNG now requires .NET Framework 3.0 instead of 2.0.
|
||||
Updated translations.
|
||||
Added translations for Spanish (Argentina), Italian, Polish, Portuguese, Chinese (Simplified).
|
||||
Improved the use of Tab and Shift-Tab to cycle through entries in the Config grid.
|
||||
Improved loading of XML files from older versions of mRemote/mRemoteNG.
|
||||
|
||||
1.70 Beta 1 (2012-02-27):
|
||||
Fixed issue MR-77 - VerifyDatabaseVersion (Config.Connections.Save) failed. Version string portion was too short or too long.
|
||||
Fixed issue MR-78 - Renaming Connections
|
||||
Fixed issue MR-79 - MoveUp/Down item doesn't work + Sort button broken
|
||||
Fixed issue MR-93 - Regional settings problem when using SQL connection in mRemoteNG
|
||||
Fixed issue MR-97 - Integrate Dutch translation
|
||||
Fixed issue MR-98 - Integrate Russian and Ukranian translations
|
||||
Fixed issue MR-99 - Integrate Spanish translation
|
||||
Fixed issue MR-131 - RD Gateway does not respect setting for use different credentials
|
||||
Added compatibility check for "Use FIPS compliant algorithms" security setting.
|
||||
Improved reporting of errors when encrypting and decrypting connection files.
|
||||
Added partial Polish translation.
|
||||
The panel tabs are now hidden if only one panel is open.
|
||||
Fix focus issue with RDP connections when changing tabs.
|
||||
Show changes live as connection tabs are being dragged around to change their order.
|
||||
Updated PuTTY to version 0.62.
|
||||
Improved error handling when loading connection files.
|
||||
Fixed bugs with creating a new connection file.
|
||||
A backup of the connection file is saved when it is loaded. The most recent ten backup copies are kept.
|
||||
Added the option to use a smart card for RD Gateway credentials.
|
||||
Made the use of CredSSP for RDP connections optional.
|
||||
Updated VncSharpNG to version 1.2.4440.36644.
|
||||
Added debugging symbols for VncSharpNG.
|
||||
|
||||
1.69 (2011-12-09):
|
||||
Fixed issue #66 - Fresh Install Fails to Create Config
|
||||
Fixed issue #69 - Connection file gets erased
|
||||
Fixed issue #72 - scrollbars added to RDP window after minimize/restore of mRemoteNG
|
||||
Disabled automatic updates in the portable edition
|
||||
Fixed file name in window title changing when exporting an XML file.
|
||||
Fixed Use only Notifications panel checkbox.
|
||||
Updated PuTTY to version 0.61
|
||||
Binaries are now digitally signed
|
||||
Added Credits, License, and Version History items to the Start Menu and made Start Menu item names localizable.
|
||||
|
||||
1.68 (2011-07-07):
|
||||
Fixed issue #48 - VerifyDatabaseVersion fails with new (empty) database tables.
|
||||
Fixed issue #60 - Can't save connections file
|
||||
Fixed issue #62 - Connection file error upon launch.
|
||||
|
||||
1.67 (2011-06-05):
|
||||
Fixed migration of external tools configuration and panel layout from Local to Roaming folder.
|
||||
Disable ICA Hotkeys for Citrix connections. Fixes issue with international users.
|
||||
54
CREDITS.TXT
@@ -1,7 +1,10 @@
|
||||
Contributors
|
||||
============
|
||||
|
||||
Jason Barbier
|
||||
Wiktor Beryt
|
||||
Lionel Caignec
|
||||
Ruben d'Arco
|
||||
Felix Deimel
|
||||
Holger Henke
|
||||
Tom Hiller
|
||||
@@ -9,6 +12,18 @@ Riley McArdle
|
||||
Apisitt Rattana
|
||||
Andreas Rehm
|
||||
David Vidmar
|
||||
David Sparer
|
||||
Hayato Iriumi
|
||||
Sean Kaim
|
||||
|
||||
|
||||
Translators
|
||||
===========
|
||||
|
||||
Eugenio "Ryo567" Mart<72>nez
|
||||
Mathieu Pape
|
||||
Emanuel Silva
|
||||
Robert Siwiec
|
||||
|
||||
|
||||
Included Source Code
|
||||
@@ -19,6 +34,19 @@ Copyright
|
||||
MIT License
|
||||
http://www.codeproject.com/KB/recipes/command_line.aspx
|
||||
|
||||
DotNetVer
|
||||
Copyright <20> 2010 David Grinberg
|
||||
Copyright <20> 2010-2011 Brandon Hansen
|
||||
http://nsis.sourceforge.net/DotNetVer
|
||||
|
||||
Hotkey Selection Control for .NET
|
||||
Copyright <20> 2006 Thomas Backman
|
||||
http://www.codeproject.com/Articles/15085/A-simple-hotkey-selection-control-for-NET
|
||||
|
||||
IP TextBox
|
||||
Copyright <20> 2005 mawnkay
|
||||
http://www.codeproject.com/Articles/11576/IP-TextBox
|
||||
|
||||
|
||||
Included Components
|
||||
===================
|
||||
@@ -38,10 +66,6 @@ Copyright
|
||||
MIT License
|
||||
http://sourceforge.net/projects/dockpanelsuite/
|
||||
|
||||
Emergent OnLine WTSCOM 2.0.6.0
|
||||
Copyright <20> 2001-2003 Emergent OnLine
|
||||
http://www.go-eol.com/
|
||||
|
||||
FilteredPropertyGrid 1.0.0.0
|
||||
Copyright <20> 2006 Azuria
|
||||
http://www.codeproject.com/KB/cs/FilteredPropertyGrid.aspx
|
||||
@@ -51,13 +75,8 @@ Copyright
|
||||
Mozilla Public License 1.1
|
||||
http://www.geckofx.org/
|
||||
|
||||
IPTextBox 1.1
|
||||
Copyright <20> 2006 Matthew Kleinwaks
|
||||
Copyright <20> 2008 Felix Deimel
|
||||
http://www.vbforums.com/showthread.php?t=430169
|
||||
|
||||
log4net 1.2.10.0
|
||||
Copyright <20> 2001-2006 The Apache Software Foundation
|
||||
log4net 1.2.15.0
|
||||
Copyright <20> 2001-2015 The Apache Software Foundation
|
||||
Apache License Version 2.0
|
||||
http://logging.apache.org/log4net/
|
||||
|
||||
@@ -75,12 +94,8 @@ MiniGeckoBrowser 1.0
|
||||
Copyright <20> 2008 Felix Deimel
|
||||
http://www.appjuice.org/
|
||||
|
||||
MiniTabControl 1.0
|
||||
Copyright <20> 2008 Felix Deimel
|
||||
http://www.appjuice.org/
|
||||
|
||||
PuTTY 0.60
|
||||
Copyright <20> 1997-2007 Simon Tatham
|
||||
PuTTY 0.67
|
||||
Copyright <20> 1997-2016 Simon Tatham
|
||||
MIT License
|
||||
http://www.chiark.greenend.org.uk/~sgtatham/putty/
|
||||
|
||||
@@ -95,11 +110,6 @@ Copyright
|
||||
Creative Commons Attribution 2.5 License
|
||||
http://www.famfamfam.com/
|
||||
|
||||
Vista TaskDialog Wrapper and Emulator 1.0
|
||||
Copyright <20> 2007-2009 Hedley Muscroft
|
||||
Code Project Open License (CPOL)
|
||||
http://www.codeproject.com/KB/vista/Vista_TaskDialog_Wrapper.aspx
|
||||
|
||||
VncSharp 1.0
|
||||
Copyright <20> 2004-2009 David Humphrey
|
||||
GNU General Public License (GPL) Version 2
|
||||
|
||||
32
Installer Projects/CustomActions/CustomAction.config
Normal file
@@ -0,0 +1,32 @@
|
||||
<?xml version="1.0" encoding="utf-8" ?>
|
||||
<configuration>
|
||||
<startup useLegacyV2RuntimeActivationPolicy="true">
|
||||
|
||||
<!--
|
||||
Use supportedRuntime tags to explicitly specify the version(s) of the .NET Framework runtime that
|
||||
the custom action should run on. If no versions are specified, the chosen version of the runtime
|
||||
will be the "best" match to what Microsoft.Deployment.WindowsInstaller.dll was built against.
|
||||
|
||||
WARNING: leaving the version unspecified is dangerous as it introduces a risk of compatibility
|
||||
problems with future versions of the .NET Framework runtime. It is highly recommended that you specify
|
||||
only the version(s) of the .NET Framework runtime that you have tested against.
|
||||
|
||||
Note for .NET Framework v3.0 and v3.5, the runtime version is still v2.0.
|
||||
|
||||
In order to enable .NET Framework version 2.0 runtime activation policy, which is to load all assemblies
|
||||
by using the latest supported runtime, @useLegacyV2RuntimeActivationPolicy="true".
|
||||
|
||||
For more information, see http://msdn.microsoft.com/en-us/library/bbx34a2h.aspx
|
||||
-->
|
||||
|
||||
<supportedRuntime version="v4.0" />
|
||||
<supportedRuntime version="v2.0.50727"/>
|
||||
|
||||
</startup>
|
||||
|
||||
<!--
|
||||
Add additional configuration settings here. For more information on application config files,
|
||||
see http://msdn.microsoft.com/en-us/library/kza1yk3a.aspx
|
||||
-->
|
||||
|
||||
</configuration>
|
||||
60
Installer Projects/CustomActions/CustomActions.cs
Normal file
@@ -0,0 +1,60 @@
|
||||
using Microsoft.Deployment.WindowsInstaller;
|
||||
|
||||
namespace CustomActions
|
||||
{
|
||||
public class CustomActions
|
||||
{
|
||||
[CustomAction]
|
||||
public static ActionResult IsKBInstalled(Session session)
|
||||
{
|
||||
session.Log("Begin IsKBInstalled");
|
||||
string kb = session["KB"];
|
||||
session.Log("Checking if '{0}' is installed", kb);
|
||||
InstalledWindowsUpdateGatherer updateGatherer = new InstalledWindowsUpdateGatherer();
|
||||
bool isUpdateInstalled = updateGatherer.IsUpdateInstalled(kb);
|
||||
session.Log("KB is installed = '{0}'", isUpdateInstalled);
|
||||
if (isUpdateInstalled)
|
||||
{
|
||||
session[kb] = "1";
|
||||
session.Log("Set property '{0}' to '1'", kb);
|
||||
}
|
||||
else
|
||||
{
|
||||
session[kb] = "0";
|
||||
session.Log("Set property '{0}' to '0'", kb);
|
||||
}
|
||||
|
||||
session.Log("End IsKBInstalled");
|
||||
return ActionResult.Success;
|
||||
}
|
||||
|
||||
[CustomAction]
|
||||
public static ActionResult IsLegacyVersionInstalled(Session session)
|
||||
{
|
||||
session.Log("Begin IsLegacyVersionInstalled");
|
||||
UninstallNSISVersions uninstaller = new UninstallNSISVersions();
|
||||
if (uninstaller.IsLegacymRemoteNGInstalled())
|
||||
{
|
||||
session["LEGACYVERSIONINSTALLED"] = "1";
|
||||
}
|
||||
else
|
||||
{
|
||||
session["LEGACYVERSIONINSTALLED"] = "0";
|
||||
}
|
||||
|
||||
session.Log("End IsLegacyVersionInstalled");
|
||||
return ActionResult.Success;
|
||||
}
|
||||
|
||||
[CustomAction]
|
||||
public static ActionResult UninstallLegacyVersion(Session session)
|
||||
{
|
||||
session.Log("Begin UninstallLegacyVersion");
|
||||
UninstallNSISVersions uninstaller = new UninstallNSISVersions();
|
||||
string uninstallString = uninstaller.GetLegacyUninstallString();
|
||||
uninstaller.UninstallLegacyVersion(true);
|
||||
session.Log("End UninstallLegacyVersion");
|
||||
return ActionResult.Success;
|
||||
}
|
||||
}
|
||||
}
|
||||
55
Installer Projects/CustomActions/CustomActions.csproj
Normal file
@@ -0,0 +1,55 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProductVersion>8.0.30703</ProductVersion>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<ProjectGuid>{5423D985-CB48-4344-B47F-E8C6D60C8B04}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>CustomActions</RootNamespace>
|
||||
<AssemblyName>CustomActions</AssemblyName>
|
||||
<TargetFrameworkVersion>v2.0</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<WixCATargetsPath Condition=" '$(WixCATargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.CA.targets</WixCATargetsPath>
|
||||
<TargetFrameworkProfile />
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<StartupObject>
|
||||
</StartupObject>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Management" />
|
||||
<Reference Include="Microsoft.Deployment.WindowsInstaller">
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CustomActions.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="InstalledWindowsUpdateGatherer.cs" />
|
||||
<Compile Include="UninstallNSISVersions.cs" />
|
||||
<Content Include="CustomAction.config" />
|
||||
</ItemGroup>
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<Import Project="$(WixCATargetsPath)" />
|
||||
</Project>
|
||||
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using System.Management;
|
||||
using System.Collections;
|
||||
|
||||
namespace CustomActions
|
||||
{
|
||||
public class InstalledWindowsUpdateGatherer
|
||||
{
|
||||
private ManagementScope _managementScope;
|
||||
private ManagementClass _managementClass;
|
||||
|
||||
public InstalledWindowsUpdateGatherer()
|
||||
{
|
||||
_managementScope = Connect();
|
||||
_managementClass = new ManagementClass("Win32_QuickFixEngineering");
|
||||
}
|
||||
|
||||
|
||||
public ManagementScope Connect()
|
||||
{
|
||||
try
|
||||
{
|
||||
return new ManagementScope(@"root\cimv2");
|
||||
}
|
||||
catch (ManagementException e)
|
||||
{
|
||||
Console.WriteLine("Failed to connect", e.Message);
|
||||
throw;
|
||||
}
|
||||
}
|
||||
|
||||
public ArrayList GetInstalledUpdates()
|
||||
{
|
||||
string query = "SELECT * FROM Win32_QuickFixEngineering";
|
||||
ArrayList installedUpdates = new ArrayList();
|
||||
ManagementObjectSearcher searcher = new ManagementObjectSearcher(_managementScope, new ObjectQuery(query));
|
||||
foreach(ManagementObject queryObj in searcher.Get())
|
||||
{
|
||||
installedUpdates.Add(queryObj["HotFixID"]);
|
||||
}
|
||||
return installedUpdates;
|
||||
}
|
||||
|
||||
public bool IsUpdateInstalled(string KB)
|
||||
{
|
||||
bool updateIsInstalled = false;
|
||||
string query = string.Format("SELECT HotFixID FROM Win32_QuickFixEngineering WHERE HotFixID='{0}'", KB);
|
||||
ManagementObjectSearcher searcher = new ManagementObjectSearcher(_managementScope, new ObjectQuery(query));
|
||||
if (searcher.Get().Count > 0)
|
||||
updateIsInstalled = true;
|
||||
return updateIsInstalled;
|
||||
}
|
||||
}
|
||||
}
|
||||
35
Installer Projects/CustomActions/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("HotfixInstalled")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("HotfixInstalled")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("5423d985-cb48-4344-b47f-e8c6d60c8b04")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
81
Installer Projects/CustomActions/UninstallNSISVersions.cs
Normal file
@@ -0,0 +1,81 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using Microsoft.Win32;
|
||||
using System.Diagnostics;
|
||||
using System.IO;
|
||||
|
||||
namespace CustomActions
|
||||
{
|
||||
public class UninstallNSISVersions
|
||||
{
|
||||
private const string REGISTRY_PATH = "Software\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\mRemoteNG";
|
||||
private const string REGISTRY_PATH_Wow6432 = "Software\\Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Uninstall\\mRemoteNG";
|
||||
private RegistryKey _activeRegistryPath;
|
||||
|
||||
|
||||
public UninstallNSISVersions()
|
||||
{
|
||||
GetLegacymRemoteNGRegistryKeyPath();
|
||||
}
|
||||
|
||||
public void UninstallLegacyVersion(bool Silent = false)
|
||||
{
|
||||
if (!IsLegacymRemoteNGInstalled())
|
||||
return;
|
||||
string uninstallString = GetLegacyUninstallString();
|
||||
string forceNonTempUninstaller = string.Format("_?={0}", uninstallString.Replace("Uninstall.exe", "").Replace(@"""", ""));
|
||||
string silentUninstall = "";
|
||||
if (Silent)
|
||||
{
|
||||
silentUninstall = "/S";
|
||||
}
|
||||
ProcessStartInfo processStartInfo = new ProcessStartInfo(uninstallString);
|
||||
processStartInfo.UseShellExecute = true;
|
||||
processStartInfo.Arguments = string.Format("{0} {1}", forceNonTempUninstaller, silentUninstall);
|
||||
Process uninstallProcess = Process.Start(processStartInfo);
|
||||
while (uninstallProcess.HasExited == false)
|
||||
{
|
||||
Debug.WriteLine("Waiting for uninstaller to exit");
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsLegacymRemoteNGInstalled()
|
||||
{
|
||||
return (_activeRegistryPath != null);
|
||||
}
|
||||
|
||||
public string GetLegacyUninstallString()
|
||||
{
|
||||
if (IsLegacymRemoteNGInstalled())
|
||||
return _activeRegistryPath.GetValue("UninstallString").ToString();
|
||||
return "";
|
||||
}
|
||||
|
||||
private void GetLegacymRemoteNGRegistryKeyPath()
|
||||
{
|
||||
GetUninstallKeyPath();
|
||||
GetUninstallKeyPath6432();
|
||||
}
|
||||
|
||||
private void GetUninstallKeyPath()
|
||||
{
|
||||
try
|
||||
{
|
||||
_activeRegistryPath = Registry.LocalMachine.OpenSubKey(REGISTRY_PATH);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{ }
|
||||
}
|
||||
|
||||
private void GetUninstallKeyPath6432()
|
||||
{
|
||||
try
|
||||
{
|
||||
_activeRegistryPath = Registry.LocalMachine.OpenSubKey(REGISTRY_PATH_Wow6432);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{ }
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,12 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<?include $(sys.CURRENTDIR)Includes\Config.wxi?>
|
||||
<Fragment>
|
||||
<CustomAction Id="SetRDP80KBValue" Return="check" Execute="immediate" Property="KB" Value="$(var.RDP80KB)" />
|
||||
<CustomAction Id="CheckIfRDP80Installed" Return="check" Execute="immediate" BinaryKey="CustomActions.CA.dll" DllEntry="IsKBInstalled" />
|
||||
</Fragment>
|
||||
<Fragment>
|
||||
<CustomAction Id="SetRDP81KBValue" Return="check" Execute="immediate" Property="KB" Value="$(var.RDP81KB)" />
|
||||
<CustomAction Id="CheckIfRDP81Installed" Return="check" Execute="immediate" BinaryKey="CustomActions.CA.dll" DllEntry="IsKBInstalled" />
|
||||
</Fragment>
|
||||
</Wix>
|
||||
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<?include $(sys.CURRENTDIR)Includes\Config.wxi?>
|
||||
<Fragment>
|
||||
<CustomAction Id="CheckIfLegacyVersionInstalled" Return="check" Execute="immediate" BinaryKey="CustomActions.CA.dll" DllEntry="IsLegacyVersionInstalled" />
|
||||
</Fragment>
|
||||
<Fragment>
|
||||
<CustomAction Id="UninstallLegacyVersion" Return="check" Execute="immediate" BinaryKey="CustomActions.CA.dll" DllEntry="UninstallLegacyVersion" />
|
||||
</Fragment>
|
||||
</Wix>
|
||||
BIN
Installer Projects/Installer/Dependencies/PuTTYNG.exe
Normal file
20
Installer Projects/Installer/Filters/Harvest_Filter.xslt
Normal file
@@ -0,0 +1,20 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<xsl:stylesheet version="1.0"
|
||||
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:wix="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<xsl:output method="xml" indent="yes" />
|
||||
<xsl:template match="@*|node()">
|
||||
<xsl:copy>
|
||||
<xsl:apply-templates select="@*|node()"/>
|
||||
</xsl:copy>
|
||||
</xsl:template>
|
||||
<xsl:key name="service-search" match="wix:Component[contains(wix:File/@Source, '.pdb')]" use="@Id" />
|
||||
<xsl:key name="service-search" match="wix:Component[contains(wix:File/@Source, '.xml')]" use="@Id" />
|
||||
<xsl:key name="service-search" match="wix:Component[contains(wix:File/@Source, 'app.config')]" use="@Id" />
|
||||
<xsl:key name="service-search" match="wix:Component[contains(wix:File/@Source, 'vshost')]" use="@Id" />
|
||||
<xsl:key name="service-search" match="wix:Component[contains(wix:File/@Source, 'manifest')]" use="@Id" />
|
||||
<xsl:key name="service-search" match="wix:Component[contains(wix:File/@Source, '.application')]" use="@Id" />
|
||||
<xsl:key name="service-search" match="wix:Component[wix:File/@Source = '$(var.HarvestPath)\mRemoteNG.exe']" use="@Id" />
|
||||
<xsl:template match="wix:Component[key('service-search', @Id)]" />
|
||||
<xsl:template match="wix:ComponentRef[key('service-search', @Id)]" />
|
||||
</xsl:stylesheet>
|
||||
@@ -0,0 +1,17 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<?include $(sys.CURRENTDIR)Includes\Config.wxi?>
|
||||
<Fragment>
|
||||
<Directory Id="TARGETDIR" Name="SourceDir">
|
||||
<Directory Id="$(var.PlatformProgramFilesFolder)">
|
||||
<Directory Id="APPLICATIONROOTDIRECTORY" Name="$(var.ProductName)" />
|
||||
</Directory>
|
||||
|
||||
<Directory Id="DesktopFolder" Name="!(loc.Folders_Desktop)" />
|
||||
|
||||
<Directory Id="ProgramMenuFolder">
|
||||
<Directory Id="ApplicationProgramsFolder" Name="$(var.ProductName)"/>
|
||||
</Directory>
|
||||
</Directory>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
@@ -0,0 +1,9 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<?include $(sys.CURRENTDIR)Includes\Config.wxi?>
|
||||
<Fragment>
|
||||
<Component Id="C.MainExe" Directory="APPLICATIONROOTDIRECTORY" Guid="*">
|
||||
<File Id="MainExeFile" Source="$(var.SolutionDir)mRemoteV1\bin\$(var.Configuration)\mRemoteNG.exe" />
|
||||
</Component>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
@@ -0,0 +1,19 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Fragment>
|
||||
<ComponentGroup Id="CG.ProjectInfoFiles" Directory="APPLICATIONROOTDIRECTORY">
|
||||
<Component Id="C.Changelog" Guid="*">
|
||||
<File Id="ChangelogFile" Name="Changelog.txt" Source="$(var.SolutionDir)CHANGELOG.TXT" KeyPath="yes" />
|
||||
</Component>
|
||||
<Component Id="C.Credits" Guid="*">
|
||||
<File Id="CreditsFile" Name="Credits.txt" Source="$(var.SolutionDir)CREDITS.TXT" KeyPath="yes" />
|
||||
</Component>
|
||||
<Component Id="C.License" Guid="*">
|
||||
<File Id="LicenseFile" Name="License.txt" Source="$(var.SolutionDir)COPYING.TXT" KeyPath="yes" />
|
||||
</Component>
|
||||
<Component Id="C.Readme" Guid="*">
|
||||
<File Id="ReadmeFile" Name="Readme.txt" Source="$(var.SolutionDir)README.TXT" KeyPath="yes" />
|
||||
</Component>
|
||||
</ComponentGroup>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
10
Installer Projects/Installer/Fragments/PuTTYNGFragment.wxs
Normal file
@@ -0,0 +1,10 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<Fragment>
|
||||
<DirectoryRef Id="APPLICATIONROOTDIRECTORY">
|
||||
<Component Id="C.PuttyNGFile" Guid="*">
|
||||
<File Id="PuttyNGFile" Name="PuTTYNG.exe" Source="Dependencies\PuTTYNG.exe" KeyPath="yes" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
</Fragment>
|
||||
</Wix>
|
||||
25
Installer Projects/Installer/Fragments/ShortcutFragment.wxs
Normal file
@@ -0,0 +1,25 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
|
||||
<?include $(sys.CURRENTDIR)Includes\Config.wxi?>
|
||||
<Fragment Id="Fr.Shortcuts">
|
||||
|
||||
<DirectoryRef Id="DesktopFolder">
|
||||
<Component Id="C.DesktopShortcut" Guid="F78E5A16-A2F7-4BD9-9250-CBF3016CCCDA">
|
||||
<Shortcut Id="DesktopShortcut" Name="$(var.ProductName)" Target="[APPLICATIONROOTDIRECTORY][MAINEXE]" WorkingDirectory="APPLICATIONROOTDIRECTORY" Icon="mRemoteNG.ico" />
|
||||
<RegistryValue Root="HKCU" Key="Software\$(var.ProductName)" Name="DesktopShortcut" Type="integer" Value="1" KeyPath="yes" />
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
<DirectoryRef Id="ApplicationProgramsFolder">
|
||||
<Component Id="C.ApplicationStartMenuShortcut" Guid="193B9E14-F40E-44F1-8514-BED253BCBF75">
|
||||
<Shortcut Id="ApplicationStartMenuShortcut" Name="$(var.ProductName)" Target="[APPLICATIONROOTDIRECTORY][MAINEXE]" WorkingDirectory="APPLICATIONROOTDIRECTORY" Icon="mRemoteNG.ico" />
|
||||
<Shortcut Id="CreditsShortcut" Name="Credits" Target="[APPLICATIONROOTDIRECTORY]Credits.txt" WorkingDirectory="APPLICATIONROOTDIRECTORY" />
|
||||
<Shortcut Id="LicenseShortcut" Name="License" Target="[APPLICATIONROOTDIRECTORY]License.txt" WorkingDirectory="APPLICATIONROOTDIRECTORY" />
|
||||
<Shortcut Id="ReadmeShortcut" Name="Readme" Target="[APPLICATIONROOTDIRECTORY]Readme.txt" WorkingDirectory="APPLICATIONROOTDIRECTORY" />
|
||||
<RemoveFolder Id="ApplicationProgramsFolder" On="uninstall"/>
|
||||
<RegistryValue Root="HKCU" Key="Software\$(var.ProductName)" Name="ApplicationStartMenuShortcut" Type="integer" Value="1" KeyPath="yes"/>
|
||||
</Component>
|
||||
</DirectoryRef>
|
||||
|
||||
</Fragment>
|
||||
</Wix>
|
||||
31
Installer Projects/Installer/Includes/Config.wxi
Normal file
@@ -0,0 +1,31 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Include>
|
||||
<?define ProductName = "mRemoteNG" ?>
|
||||
<?define Company = "Next Generation Software" ?>
|
||||
<?define UpgradeCode = "dd678a54-ca75-4791-8dfe-d818095684f8" ?>
|
||||
<?define ProductCode = "*" ?>
|
||||
<?define ProductVersion = "!(bind.FileVersion.MainExeFile)" ?>
|
||||
<?define MajorVersion = "!(bind.property.ProductVersion.Major)" ?>
|
||||
<?define MinorVersion = "!(bind.property.ProductVersion.Minor)" ?>
|
||||
<?define BuildVersion = "!(bind.property.ProductVersion.Build)" ?>
|
||||
<?define RevisionVersion = "!(bind.property.ProductVersion.Revision)" ?>
|
||||
<?define ProductLanguage = 1033 ?>
|
||||
<?define ExeProcessName = "$(var.ProductName).exe" ?>
|
||||
|
||||
<?define RequiredDotNetFrameworkMajorVersion = "4" ?>
|
||||
<?define RequiredDotNetFrameworkMinorVersion = "0" ?>
|
||||
<?define RequiredDotNetFrameworkServicePackLevel = "" ?>
|
||||
<?define RequiredDotNetFrameworkVersion = "$(var.RequiredDotNetFrameworkMajorVersion).$(var.RequiredDotNetFrameworkMinorVersion)" ?>
|
||||
<?define RDP80KB = "KB2592687" ?>
|
||||
<?define RDP81KB = "KB2923545" ?>
|
||||
|
||||
<?if $(var.Platform) = x64 ?>
|
||||
<?define ProductNameWithPlatform = "$(var.ProductName) (64 bit)" ?>
|
||||
<?define Win64 = "yes" ?>
|
||||
<?define PlatformProgramFilesFolder = "ProgramFiles64Folder" ?>
|
||||
<?else ?>
|
||||
<?define ProductNameWithPlatform = "$(var.ProductName)" ?>
|
||||
<?define Win64 = "no" ?>
|
||||
<?define PlatformProgramFilesFolder = "ProgramFilesFolder" ?>
|
||||
<?endif ?>
|
||||
</Include>
|
||||
119
Installer Projects/Installer/Installer.wixproj
Normal file
@@ -0,0 +1,119 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
|
||||
<ProductVersion>3.10</ProductVersion>
|
||||
<ProjectGuid>f0168b9f-6815-40df-ba53-46cee7683b68</ProjectGuid>
|
||||
<SchemaVersion>2.0</SchemaVersion>
|
||||
<OutputName>mRemoteNG-Installer</OutputName>
|
||||
<OutputType>Package</OutputType>
|
||||
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
|
||||
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
|
||||
<OutputPath>bin\$(Configuration)\</OutputPath>
|
||||
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug' ">
|
||||
<DefineConstants>HarvestPath=..\mRemoteV1\bin\Debug;</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release' ">
|
||||
<DefineConstants>HarvestPath=..\mRemoteV1\bin\Release;</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Debug Portable' ">
|
||||
<DefineConstants>HarvestPath=..\mRemoteV1\bin\Debug Portable;</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)' == 'Release Portable' ">
|
||||
<DefineConstants>HarvestPath=..\mRemoteV1\bin\Release Portable;</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Compile Include="CustomActions\CheckForInstalledWindowsUpdates.wxs" />
|
||||
<Compile Include="CustomActions\UninstallLegacyVersions.wxs" />
|
||||
<Compile Include="Fragments\FilesFragment.wxs" />
|
||||
<Compile Include="Fragments\DirectoriesFragment.wxs" />
|
||||
<Compile Include="Fragments\MainExeFragment.wxs" />
|
||||
<Compile Include="Fragments\MiscTextFilesFragment.wxs" />
|
||||
<Compile Include="Fragments\PuTTYNGFragment.wxs" />
|
||||
<Compile Include="Fragments\ShortcutFragment.wxs" />
|
||||
<Compile Include="mRemoteNGV1.wxs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Content Include="Dependencies\PuTTYNG.exe">
|
||||
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||
</Content>
|
||||
<Content Include="Filters\Harvest_Filter.xslt" />
|
||||
<Content Include="Includes\Config.wxi" />
|
||||
<Content Include="Resources\header.bmp" />
|
||||
<Content Include="Resources\License.rtf" />
|
||||
<Content Include="Resources\mRemoteNG.ico" />
|
||||
<Content Include="Resources\welcome.bmp" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<Folder Include="CustomActions" />
|
||||
<Folder Include="CustomDialogs" />
|
||||
<Folder Include="Fragments" />
|
||||
<Folder Include="Includes" />
|
||||
<Folder Include="Localizations" />
|
||||
<Folder Include="Filters" />
|
||||
<Folder Include="bin" />
|
||||
<Folder Include="Dependencies" />
|
||||
<Folder Include="Resources" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="Localizations\ru-RU.wxl" />
|
||||
<EmbeddedResource Include="Localizations\ja-JP.wxl" />
|
||||
<EmbeddedResource Include="Localizations\cs-CZ.wxl" />
|
||||
<EmbeddedResource Include="Localizations\de-DE.wxl" />
|
||||
<EmbeddedResource Include="Localizations\en-US.wxl" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<WixExtension Include="WixUIExtension">
|
||||
<HintPath>$(WixExtDir)\WixUIExtension.dll</HintPath>
|
||||
<Name>WixUIExtension</Name>
|
||||
</WixExtension>
|
||||
<WixExtension Include="WixNetFxExtension">
|
||||
<HintPath>$(WixExtDir)\WixNetFxExtension.dll</HintPath>
|
||||
<Name>WixNetFxExtension</Name>
|
||||
</WixExtension>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\..\mRemoteV1\mRemoteV1.csproj">
|
||||
<Name>mRemoteV1</Name>
|
||||
<Project>{4934a491-40bc-4e5b-9166-ea1169a220f6}</Project>
|
||||
<Private>True</Private>
|
||||
<DoNotHarvest>
|
||||
</DoNotHarvest>
|
||||
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
|
||||
<RefTargetDir>APPLICATIONROOTDIRECTORY</RefTargetDir>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<Import Project="$(WixTargetsPath)" />
|
||||
<!--
|
||||
To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Wix.targets.
|
||||
-->
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
|
||||
<LinkerAdditionalOptions>
|
||||
</LinkerAdditionalOptions>
|
||||
<DefineConstants>HarvestPath=$(SolutionDir)mRemoteV1\bin\Release;</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup>
|
||||
<PreBuildEvent>REM Harvest bin directory of the mRemoteV1 project
|
||||
call "$(WIX)bin\heat.exe" dir "$(SolutionDir)mRemoteV1\bin\$(Configuration)" -ag -dr APPLICATIONROOTDIRECTORY -var var.HarvestPath -srd -cg MandatoryComponents -template fragment -out "$(ProjectDir)Fragments\FilesFragment.wxs" -t "$(ProjectDir)Filters\Harvest_Filter.xslt" -v
|
||||
REM Convert the license file "COPYING.TXT" to "License.rtf" to be shown in the installer GUI
|
||||
call "$(ProjectDir)Resources\Pandoc\pandoc.exe" -s -t rtf -o "$(ProjectDir)\Resources\License.rtf" "$(SolutionDir)COPYING.TXT"</PreBuildEvent>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
|
||||
<Cultures>en-US</Cultures>
|
||||
<DefineConstants>HarvestPath=$(SolutionDir)mRemoteV1\bin\Debug;</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug Portable|x86' ">
|
||||
<DefineConstants>HarvestPath=$(SolutionDir)mRemoteV1\bin\Debug Portable;</DefineConstants>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release Portable|x86' ">
|
||||
<DefineConstants>HarvestPath=$(SolutionDir)mRemoteV1\bin\Release Portable;</DefineConstants>
|
||||
</PropertyGroup>
|
||||
</Project>
|
||||
26
Installer Projects/Installer/Localizations/cs-CZ.wxl
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<WixLocalization Culture="cs-CZ" Language="1029" xmlns="http://schemas.microsoft.com/wix/2006/localization">
|
||||
|
||||
<!-- Install Conditions -->
|
||||
<String Id="Upgrade_NewerVersionInstalled" Overridable="yes">A newer version of [ProductName] is already installed.</String>
|
||||
<String Id="Install_NeedToBeAdminToInstall">You need to be an administrator to install this product.</String>
|
||||
<String Id="Install_NeedDotNetFrameworkVersion">mRemoteNG requires Microsoft .NET Framework $(var.RequiredDotNetFrameworkVersion).</String>
|
||||
<String Id="Install_OSVersionRequirement">mRemoteNG requires Windows 7 SP1 or higher to run. Please update your operating system and try again.</String>
|
||||
<String Id="Install_RDP80Requirement">mRemoteNG requires RDP 8.0 or higher to run. Windows 7 users will need to install KB2592687</String>
|
||||
<String Id="Install_Win7RequiresSP1">For mRemoteNG to run on Windows 7, it requires Service Pack 1 to be installed. Please install Service Pack 1 and try again.</String>
|
||||
|
||||
<!-- Directories and File names -->
|
||||
<String Id="Folders_Desktop">Desktop</String>
|
||||
<String Id="File_Credits">Credits</String>
|
||||
<String Id="File_License">License</String>
|
||||
<String Id="File_VersionHistory">Version History</String>
|
||||
|
||||
<!-- Features and install options -->
|
||||
<String Id="Feature_Complete">Complete</String>
|
||||
<String Id="Feature_DesktopShortcut">Desktop Shortcut</String>
|
||||
<String Id="Feature_StartMenuShortcut">Start menu shortcut</String>
|
||||
|
||||
<!-- GUI Page Text -->
|
||||
<String Id="FinishPage_LaunchMremoteNow" Overridable="yes">Launch [ProductName] Now</String>
|
||||
|
||||
</WixLocalization>
|
||||
26
Installer Projects/Installer/Localizations/de-DE.wxl
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<WixLocalization Culture="de-DE" Language="1031" xmlns="http://schemas.microsoft.com/wix/2006/localization">
|
||||
|
||||
<!-- Install Conditions -->
|
||||
<String Id="Upgrade_NewerVersionInstalled" Overridable="yes">A newer version of [ProductName] is already installed.</String>
|
||||
<String Id="Install_NeedToBeAdminToInstall">You need to be an administrator to install this product.</String>
|
||||
<String Id="Install_NeedDotNetFrameworkVersion">mRemoteNG requires Microsoft .NET Framework $(var.RequiredDotNetFrameworkVersion).</String>
|
||||
<String Id="Install_OSVersionRequirement">mRemoteNG requires Windows 7 SP1 or higher to run. Please update your operating system and try again.</String>
|
||||
<String Id="Install_RDP80Requirement">mRemoteNG requires RDP 8.0 or higher to run. Windows 7 users will need to install KB2592687</String>
|
||||
<String Id="Install_Win7RequiresSP1">For mRemoteNG to run on Windows 7, it requires Service Pack 1 to be installed. Please install Service Pack 1 and try again.</String>
|
||||
|
||||
<!-- Directories and File names -->
|
||||
<String Id="Folders_Desktop">Desktop</String>
|
||||
<String Id="File_Credits">Credits</String>
|
||||
<String Id="File_License">License</String>
|
||||
<String Id="File_VersionHistory">Version History</String>
|
||||
|
||||
<!-- Features and install options -->
|
||||
<String Id="Feature_Complete">Complete</String>
|
||||
<String Id="Feature_DesktopShortcut">Desktop Shortcut</String>
|
||||
<String Id="Feature_StartMenuShortcut">Start menu shortcut</String>
|
||||
|
||||
<!-- GUI Page Text -->
|
||||
<String Id="FinishPage_LaunchMremoteNow" Overridable="yes">mRemoteNG jetzt Starten</String>
|
||||
|
||||
</WixLocalization>
|
||||
26
Installer Projects/Installer/Localizations/en-US.wxl
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<WixLocalization Culture="en-US" Language="1033" xmlns="http://schemas.microsoft.com/wix/2006/localization">
|
||||
|
||||
<!-- Install Conditions -->
|
||||
<String Id="Upgrade_NewerVersionInstalled" Overridable="yes">A newer version of [ProductName] is already installed.</String>
|
||||
<String Id="Install_NeedToBeAdminToInstall">You need to be an administrator to install this product.</String>
|
||||
<String Id="Install_NeedDotNetFrameworkVersion">mRemoteNG requires Microsoft .NET Framework [REQUIREDDOTNETFRAMEWORKVERSION] or higher.</String>
|
||||
<String Id="Install_OSVersionRequirement">mRemoteNG requires Windows 7 SP1 or higher to run. Please update your operating system and try again.</String>
|
||||
<String Id="Install_RDP80Requirement">mRemoteNG requires RDP 8.0 or higher to run. Windows 7 users will need to install KB2592687</String>
|
||||
<String Id="Install_Win7RequiresSP1">For mRemoteNG to run on Windows 7, it requires Service Pack 1 to be installed. Please install Service Pack 1 and try again.</String>
|
||||
|
||||
<!-- Directories and File names -->
|
||||
<String Id="Folders_Desktop">Desktop</String>
|
||||
<String Id="File_Credits">Credits</String>
|
||||
<String Id="File_License">License</String>
|
||||
<String Id="File_VersionHistory">Version History</String>
|
||||
|
||||
<!-- Features and install options -->
|
||||
<String Id="Feature_Complete">Complete</String>
|
||||
<String Id="Feature_DesktopShortcut">Desktop Shortcut</String>
|
||||
<String Id="Feature_StartMenuShortcut">Start menu shortcut</String>
|
||||
|
||||
<!-- GUI Page Text -->
|
||||
<String Id="FinishPage_LaunchMremoteNow" Overridable="yes">Launch [ProductName] Now</String>
|
||||
|
||||
</WixLocalization>
|
||||
26
Installer Projects/Installer/Localizations/ja-JP.wxl
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<WixLocalization Culture="ja-JP" Language="1041" xmlns="http://schemas.microsoft.com/wix/2006/localization">
|
||||
|
||||
<!-- Install Conditions -->
|
||||
<String Id="Upgrade_NewerVersionInstalled" Overridable="yes">A newer version of [ProductName] is already installed.</String>
|
||||
<String Id="Install_NeedToBeAdminToInstall">You need to be an administrator to install this product.</String>
|
||||
<String Id="Install_NeedDotNetFrameworkVersion">mRemoteNG requires Microsoft .NET Framework $(var.RequiredDotNetFrameworkVersion).</String>
|
||||
<String Id="Install_OSVersionRequirement">mRemoteNG requires Windows 7 SP1 or higher to run. Please update your operating system and try again.</String>
|
||||
<String Id="Install_RDP80Requirement">mRemoteNG requires RDP 8.0 or higher to run. Windows 7 users will need to install KB2592687</String>
|
||||
<String Id="Install_Win7RequiresSP1">For mRemoteNG to run on Windows 7, it requires Service Pack 1 to be installed. Please install Service Pack 1 and try again.</String>
|
||||
|
||||
<!-- Directories and File names -->
|
||||
<String Id="Folders_Desktop">Desktop</String>
|
||||
<String Id="File_Credits">Credits</String>
|
||||
<String Id="File_License">License</String>
|
||||
<String Id="File_VersionHistory">Version History</String>
|
||||
|
||||
<!-- Features and install options -->
|
||||
<String Id="Feature_Complete">Complete</String>
|
||||
<String Id="Feature_DesktopShortcut">Desktop Shortcut</String>
|
||||
<String Id="Feature_StartMenuShortcut">Start menu shortcut</String>
|
||||
|
||||
<!-- GUI Page Text -->
|
||||
<String Id="FinishPage_LaunchMremoteNow" Overridable="yes">Launch [ProductName] Now</String>
|
||||
|
||||
</WixLocalization>
|
||||
26
Installer Projects/Installer/Localizations/ru-RU.wxl
Normal file
@@ -0,0 +1,26 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<WixLocalization Culture="ru-RU" Language="1049" xmlns="http://schemas.microsoft.com/wix/2006/localization">
|
||||
|
||||
<!-- Install Conditions -->
|
||||
<String Id="Upgrade_NewerVersionInstalled" Overridable="yes">A newer version of [ProductName] is already installed.</String>
|
||||
<String Id="Install_NeedToBeAdminToInstall">You need to be an administrator to install this product.</String>
|
||||
<String Id="Install_NeedDotNetFrameworkVersion">mRemoteNG requires Microsoft .NET Framework $(var.RequiredDotNetFrameworkVersion).</String>
|
||||
<String Id="Install_OSVersionRequirement">mRemoteNG requires Windows 7 SP1 or higher to run. Please update your operating system and try again.</String>
|
||||
<String Id="Install_RDP80Requirement">mRemoteNG requires RDP 8.0 or higher to run. Windows 7 users will need to install KB2592687</String>
|
||||
<String Id="Install_Win7RequiresSP1">For mRemoteNG to run on Windows 7, it requires Service Pack 1 to be installed. Please install Service Pack 1 and try again.</String>
|
||||
|
||||
<!-- Directories and File names -->
|
||||
<String Id="Folders_Desktop">Desktop</String>
|
||||
<String Id="File_Credits">Credits</String>
|
||||
<String Id="File_License">License</String>
|
||||
<String Id="File_VersionHistory">Version History</String>
|
||||
|
||||
<!-- Features and install options -->
|
||||
<String Id="Feature_Complete">Complete</String>
|
||||
<String Id="Feature_DesktopShortcut">Desktop Shortcut</String>
|
||||
<String Id="Feature_StartMenuShortcut">Start menu shortcut</String>
|
||||
|
||||
<!-- GUI Page Text -->
|
||||
<String Id="FinishPage_LaunchMremoteNow" Overridable="yes">Launch [ProductName] Now</String>
|
||||
|
||||
</WixLocalization>
|
||||
85
Installer Projects/Installer/Resources/Pandoc/COPYING.rtf
Normal file
@@ -0,0 +1,85 @@
|
||||
{\rtf1\ansi\deff0{\fonttbl{\f0 \fswiss Helvetica;}{\f1 Courier;}}
|
||||
{\colortbl;\red255\green0\blue0;\red0\green0\blue255;}
|
||||
\widowctrl\hyphauto
|
||||
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs36 GNU GENERAL PUBLIC LICENSE\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 Version 2, June 1991\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 Copyright (C) 1989, 1991 Free Software Foundation, Inc.\line 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 Everyone is permitted to copy and distribute verbatim copies of this license document, but changing it is not allowed.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 Preamble\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 The licenses for most software are designed to take away your freedom to share and change it. By contrast, the GNU General Public License is intended to guarantee your freedom to share and change free software\u8211-to make sure the software is free for all its users. This General Public License applies to most of the Free Software Foundation\u8217's software and to any other program whose authors commit to using it. (Some other Free Software Foundation software is covered by the GNU Library General Public License instead.) You can apply it to your programs, too.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 When we speak of free software, we are referring to freedom, not price. Our General Public Licenses are designed to make sure that you have the freedom to distribute copies of free software (and charge for this service if you wish), that you receive source code or can get it if you want it, that you can change the software or use pieces of it in new free programs; and that you know you can do these things.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 To protect your rights, we need to make restrictions that forbid anyone to deny you these rights or to ask you to surrender the rights. These restrictions translate to certain responsibilities for you if you distribute copies of the software, or if you modify it.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 For example, if you distribute copies of such a program, whether gratis or for a fee, you must give the recipients all the rights that you have. You must make sure that they, too, receive or can get the source code. And you must show them these terms so they know their rights.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 We protect your rights with two steps: (1) copyright the software, and (2) offer you this license which gives you legal permission to copy, distribute and/or modify the software.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 Also, for each author\u8217's protection and ours, we want to make certain that everyone understands that there is no warranty for this free software. If the software is modified by someone else and passed on, we want its recipients to know that what they have is not the original, so that any problems introduced by others will not reflect on the original authors\u8217' reputations.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 Finally, any free program is threatened constantly by software patents. We wish to avoid the danger that redistributors of a free program will individually obtain patent licenses, in effect making the program proprietary. To prevent this, we have made it clear that any patent must be licensed for everyone\u8217's free use or not licensed at all.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 The precise terms and conditions for copying, distribution and modification follow.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 GNU GENERAL PUBLIC LICENSE\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 0.\tx360\tab This License applies to any program or other work which contains a notice placed by the copyright holder saying it may be distributed under the terms of this General Public License. The \u8220"Program\u8221", below, refers to any such program or work, and a \u8220"work based on the Program\u8221" means either the Program or any derivative work under copyright law: that is to say, a work containing the Program or a portion of it, either verbatim or with modifications and/or translated into another language. (Hereinafter, translation is included without limitation in the term \u8220"modification\u8221".) Each licensee is addressed as \u8220"you\u8221".\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi0 Activities other than copying, distribution and modification are not covered by this License; they are outside its scope. The act of running the Program is not restricted, and the output from the Program is covered only if its contents constitute a work based on the Program (independent of having been made by running the Program). Whether that is true depends on what the Program does.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 1.\tx360\tab You may copy and distribute verbatim copies of the Program\u8217's source code as you receive it, in any medium, provided that you conspicuously and appropriately publish on each copy an appropriate copyright notice and disclaimer of warranty; keep intact all the notices that refer to this License and to the absence of any warranty; and give any other recipients of the Program a copy of this License along with the Program.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi0 You may charge a fee for the physical act of transferring a copy, and you may at your option offer warranty protection in exchange for a fee.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 2.\tx360\tab You may modify your copy or copies of the Program or any portion of it, thus forming a work based on the Program, and copy and distribute such modifications or work under the terms of Section 1 above, provided that you also meet all of these conditions:\par}
|
||||
{\pard \ql \f0 \sa180 \li720 \fi-360 a)\tx360\tab You must cause the modified files to carry prominent notices stating that you changed the files and the date of any change.\par}
|
||||
{\pard \ql \f0 \sa180 \li720 \fi-360 b)\tx360\tab You must cause any work that you distribute or publish, that in whole or in part contains or is derived from the Program or any part thereof, to be licensed as a whole at no charge to all third parties under the terms of this License.\par}
|
||||
{\pard \ql \f0 \sa180 \li720 \fi-360 c)\tx360\tab If the modified program normally reads commands interactively when run, you must cause it, when started running for such interactive use in the most ordinary way, to print or display an announcement including an appropriate copyright notice and a notice that there is no warranty (or else, saying that you provide a warranty) and that users may redistribute the program under these conditions, and telling the user how to view a copy of this License. (Exception: if the Program itself is interactive but does not normally print such an announcement, your work based on the Program is not required to print an announcement.)\sa180\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi0 These requirements apply to the modified work as a whole. If identifiable sections of that work are not derived from the Program, and can be reasonably considered independent and separate works in themselves, then this License, and its terms, do not apply to those sections when you distribute them as separate works. But when you distribute the same sections as part of a whole which is a work based on the Program, the distribution of the whole must be on the terms of this License, whose permissions for other licensees extend to the entire whole, and thus to each and every part regardless of who wrote it.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi0 Thus, it is not the intent of this section to claim rights or contest your rights to work written entirely by you; rather, the intent is to exercise the right to control the distribution of derivative or collective works based on the Program.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi0 In addition, mere aggregation of another work not based on the Program with the Program (or with a work based on the Program) on a volume of a storage or distribution medium does not bring the other work under the scope of this License.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 3.\tx360\tab You may copy and distribute the Program (or a work based on it, under Section 2) in object code or executable form under the terms of Sections 1 and 2 above provided that you also do one of the following:\par}
|
||||
{\pard \ql \f0 \sa180 \li720 \fi-360 a)\tx360\tab Accompany it with the complete corresponding machine-readable source code, which must be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\par}
|
||||
{\pard \ql \f0 \sa180 \li720 \fi-360 b)\tx360\tab Accompany it with a written offer, valid for at least three years, to give any third party, for a charge no more than your cost of physically performing source distribution, a complete machine-readable copy of the corresponding source code, to be distributed under the terms of Sections 1 and 2 above on a medium customarily used for software interchange; or,\par}
|
||||
{\pard \ql \f0 \sa180 \li720 \fi-360 c)\tx360\tab Accompany it with the information you received as to the offer to distribute corresponding source code. (This alternative is allowed only for noncommercial distribution and only if you received the program in object code or executable form with such an offer, in accord with Subsection b above.)\sa180\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi0 The source code for a work means the preferred form of the work for making modifications to it. For an executable work, complete source code means all the source code for all modules it contains, plus any associated interface definition files, plus the scripts used to control compilation and installation of the executable. However, as a special exception, the source code distributed need not include anything that is normally distributed (in either source or binary form) with the major components (compiler, kernel, and so on) of the operating system on which the executable runs, unless that component itself accompanies the executable.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi0 If distribution of executable or object code is made by offering access to copy from a designated place, then offering equivalent access to copy the source code from the same place counts as distribution of the source code, even though third parties are not compelled to copy the source along with the object code.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 4.\tx360\tab You may not copy, modify, sublicense, or distribute the Program except as expressly provided under this License. Any attempt otherwise to copy, modify, sublicense or distribute the Program is void, and will automatically terminate your rights under this License. However, parties who have received copies, or rights, from you under this License will not have their licenses terminated so long as such parties remain in full compliance.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 5.\tx360\tab You are not required to accept this License, since you have not signed it. However, nothing else grants you permission to modify or distribute the Program or its derivative works. These actions are prohibited by law if you do not accept this License. Therefore, by modifying or distributing the Program (or any work based on the Program), you indicate your acceptance of this License to do so, and all its terms and conditions for copying, distributing or modifying the Program or works based on it.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 6.\tx360\tab Each time you redistribute the Program (or any work based on the Program), the recipient automatically receives a license from the original licensor to copy, distribute or modify the Program subject to these terms and conditions. You may not impose any further restrictions on the recipients\u8217' exercise of the rights granted herein. You are not responsible for enforcing compliance by third parties to this License.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 7.\tx360\tab If, as a consequence of a court judgment or allegation of patent infringement or for any other reason (not limited to patent issues), conditions are imposed on you (whether by court order, agreement or otherwise) that contradict the conditions of this License, they do not excuse you from the conditions of this License. If you cannot distribute so as to satisfy simultaneously your obligations under this License and any other pertinent obligations, then as a consequence you may not distribute the Program at all. For example, if a patent license would not permit royalty-free redistribution of the Program by all those who receive copies directly or indirectly through you, then the only way you could satisfy both it and this License would be to refrain entirely from distribution of the Program.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi0 If any portion of this section is held invalid or unenforceable under any particular circumstance, the balance of the section is intended to apply and the section as a whole is intended to apply in other circumstances.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi0 It is not the purpose of this section to induce you to infringe any patents or other property right claims or to contest validity of any such claims; this section has the sole purpose of protecting the integrity of the free software distribution system, which is implemented by public license practices. Many people have made generous contributions to the wide range of software distributed through that system in reliance on consistent application of that system; it is up to the author/donor to decide if he or she is willing to distribute software through any other system and a licensee cannot impose that choice.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi0 This section is intended to make thoroughly clear what is believed to be a consequence of the rest of this License.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 8.\tx360\tab If the distribution and/or use of the Program is restricted in certain countries either by patents or by copyrighted interfaces, the original copyright holder who places the Program under this License may add an explicit geographical distribution limitation excluding those countries, so that distribution is permitted only in or among countries not thus excluded. In such case, this License incorporates the limitation as if written in the body of this License.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 9.\tx360\tab The Free Software Foundation may publish revised and/or new versions of the General Public License from time to time. Such new versions will be similar in spirit to the present version, but may differ in detail to address new problems or concerns.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi0 Each version is given a distinguishing version number. If the Program specifies a version number of this License which applies to it and \u8220"any later version\u8221", you have the option of following the terms and conditions either of that version or of any later version published by the Free Software Foundation. If the Program does not specify a version number of this License, you may choose any version ever published by the Free Software Foundation.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 10.\tx360\tab If you wish to incorporate parts of the Program into other free programs whose distribution conditions are different, write to the author to ask for permission. For software which is copyrighted by the Free Software Foundation, write to the Free Software Foundation; we sometimes make exceptions for this. Our decision will be guided by the two goals of preserving the free status of all derivatives of our free software and of promoting the sharing and reuse of software generally.\sa180\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 NO WARRANTY\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 11.\tx360\tab BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM \u8220"AS IS\u8221" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.\par}
|
||||
{\pard \ql \f0 \sa180 \li360 \fi-360 12.\tx360\tab IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH DAMAGES.\sa180\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 END OF TERMS AND CONDITIONS\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 \b \fs32 How to Apply These Terms to Your New Programs\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 If you develop a new program, and you want it to be of the greatest possible use to the public, the best way to achieve this is to make it free software which everyone can redistribute and change under these terms.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 To do so, attach the following notices to the program. It is safest to attach them to the start of each source file to most effectively convey the exclusion of warranty; and each file should have at least the \u8220"copyright\u8221" line and a pointer to where the full notice is found.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 \f1 <one line to give the program's name and a brief idea of what it does.>\line
|
||||
Copyright (C) <year> <name of author>\line
|
||||
\line
|
||||
This program is free software; you can redistribute it and/or modify\line
|
||||
it under the terms of the GNU General Public License as published by\line
|
||||
the Free Software Foundation; either version 2 of the License, or\line
|
||||
(at your option) any later version.\line
|
||||
\line
|
||||
This program is distributed in the hope that it will be useful,\line
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of\line
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the\line
|
||||
GNU General Public License for more details.\line
|
||||
\line
|
||||
You should have received a copy of the GNU General Public License\line
|
||||
along with this program; if not, write to the Free Software\line
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 Also add information on how to contact you by electronic and paper mail.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 If the program is interactive, make it output a short notice like this when it starts in an interactive mode:\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 \f1 Gnomovision version 69, Copyright (C) year name of author\line
|
||||
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.\line
|
||||
This is free software, and you are welcome to redistribute it\line
|
||||
under certain conditions; type `show c' for details.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 The hypothetical commands {\f1 show w' and}show c\u8217' should show the appropriate parts of the General Public License. Of course, the commands you use may be called something other than {\f1 show w' and}show c\u8217'; they could even be mouse-clicks or menu items\u8211-whatever suits your program.\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 You should also get your employer (if you work as a programmer) or your school, if any, to sign a \u8220"copyright disclaimer\u8221" for the program, if necessary. Here is a sample; alter the names:\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 \f1 Yoyodyne, Inc., hereby disclaims all copyright interest in the program\line
|
||||
`Gnomovision' (which makes passes at compilers) written by James Hacker.\line
|
||||
\line
|
||||
<signature of Ty Coon>, 1 April 1989\line
|
||||
Ty Coon, President of Vice\par}
|
||||
{\pard \ql \f0 \sa180 \li0 \fi0 This General Public License does not permit incorporating your program into proprietary programs. If your program is a subroutine library, you may consider it more useful to permit linking proprietary applications with the library. If this is what you want to do, use the GNU Library General Public License instead of this License.\par}
|
||||
}
|
||||
108
Installer Projects/Installer/Resources/Pandoc/COPYRIGHT.txt
Normal file
@@ -0,0 +1,108 @@
|
||||
Pandoc
|
||||
Copyright (C) 2006-2016 John MacFarlane <jgm at berkeley dot edu>
|
||||
|
||||
This code is released under the [GPL], version 2 or later:
|
||||
|
||||
This program is free software; you can redistribute it and/or modify
|
||||
it under the terms of the GNU General Public License as published by
|
||||
the Free Software Foundation; either version 2 of the License, or
|
||||
(at your option) any later version.
|
||||
|
||||
This program is distributed in the hope that it will be useful,
|
||||
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
GNU General Public License for more details.
|
||||
|
||||
You should have received a copy of the GNU General Public License
|
||||
along with this program; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
|
||||
The GNU General Public License is available in the file COPYING in
|
||||
the source distribution. On Debian systems, the complete text of the
|
||||
GPL can be found in `/usr/share/common-licenses/GPL`.
|
||||
|
||||
[GPL]: http://www.gnu.org/copyleft/gpl.html
|
||||
|
||||
Pandoc's complete source code is available from the [Pandoc home page].
|
||||
|
||||
[Pandoc home page]: http://pandoc.org
|
||||
|
||||
Pandoc includes some code from other authors. The copyright and license
|
||||
statements for these sources are included below. All are GPL-compatible
|
||||
licenses.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
src/Text/Pandoc/Writers/Texinfo.hs
|
||||
Copyright (C) 2008-2015 John MacFarlane and Peter Wang
|
||||
|
||||
Released under the GNU General Public License version 2 or later.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
src/Text/Pandoc/Writers/OpenDocument.hs
|
||||
Copyright (C) 2008-2015 Andrea Rossato and John MacFarlane
|
||||
|
||||
Released under the GNU General Public License version 2 or later.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
src/Text/Pandoc/Writers/Org.hs
|
||||
Copyright (C) 2010-2015 Puneeth Chaganti and John MacFarlane
|
||||
|
||||
Released under the GNU General Public License version 2 or later.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
src/Text/Pandoc/Readers/Textile.hs
|
||||
Copyright (C) 2010-2015 Paul Rivier and John MacFarlane
|
||||
|
||||
Released under the GNU General Public License version 2 or later.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
src/Text/Pandoc/Readers/Org.hs
|
||||
tests/Tests/Readers/Org.hs
|
||||
Copyright (C) 2014-2015 Albert Krewinkel
|
||||
|
||||
Released under the GNU General Public License version 2 or later.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
data/LaTeXMathML.js
|
||||
Adapted by Jeff Knisely and Douglas Woodall from
|
||||
ASCIIMathML.js v. 1.4.7
|
||||
Copyright (C) 2005 Peter Jipsen
|
||||
|
||||
Released under the GNU General Public License version 2 or later.
|
||||
|
||||
----------------------------------------------------------------------
|
||||
data/MathMLinHTML.js
|
||||
Copyright (C) 2004 Peter Jipsen http://www.chapman.edu/~jipsen
|
||||
|
||||
Released under the GNU General Public License version 2 or later.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
The dzslides template contains javascript and CSS from Paul Rouget's
|
||||
dzslides template.
|
||||
http://github.com/paulrouget/dzslides
|
||||
|
||||
Released under the Do What the Fuck You Want To Public License.
|
||||
|
||||
------------------------------------------------------------------------
|
||||
Pandoc embeds a lua interpreter (via hslua).
|
||||
|
||||
Copyright © 1994–2015 Lua.org, PUC-Rio.
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of this software and associated documentation files (the
|
||||
"Software"), to deal in the Software without restriction, including
|
||||
without limitation the rights to use, copy, modify, merge, publish,
|
||||
distribute, sublicense, and/or sell copies of the Software, and to
|
||||
permit persons to whom the Software is furnished to do so, subject to
|
||||
the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be
|
||||
included in all copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
||||
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
|
||||
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
|
||||
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
|
||||
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
||||
BIN
Installer Projects/Installer/Resources/Pandoc/pandoc.exe
Normal file
|
Before Width: | Height: | Size: 83 KiB After Width: | Height: | Size: 83 KiB |
BIN
Installer Projects/Installer/Resources/mRemoteNG.ico
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
Installer Projects/Installer/Resources/welcome.bmp
Normal file
|
After Width: | Height: | Size: 451 KiB |
84
Installer Projects/Installer/mRemoteNGV1.wxs
Normal file
@@ -0,0 +1,84 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi" xmlns:netfx="http://schemas.microsoft.com/wix/NetFxExtension">
|
||||
<?include $(sys.CURRENTDIR)Includes\Config.wxi?>
|
||||
<Product Name="$(var.ProductNameWithPlatform)" Manufacturer="Next Generation Software"
|
||||
Version="$(var.ProductVersion)"
|
||||
Id="$(var.ProductCode)"
|
||||
UpgradeCode="$(var.UpgradeCode)"
|
||||
Language="1033">
|
||||
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
|
||||
<MajorUpgrade DowngradeErrorMessage="!(loc.Upgrade_NewerVersionInstalled)" Schedule="afterInstallExecute" />
|
||||
<MediaTemplate EmbedCab="yes" />
|
||||
<Binary Id="CustomActions.CA.dll" SourceFile="$(var.SolutionDir)Installer Projects\CustomActions\bin\$(var.Configuration)\CustomActions.CA.dll" />
|
||||
<Property Id="ARPPRODUCTICON" Value="mRemoteNG.ico" />
|
||||
<Property Id="ARPHELPLINK" Value="http://www.mremoteng.org" />
|
||||
<Property Id="MAINEXE" Value="$(var.ExeProcessName)" />
|
||||
<Property Id="APPLICATIONROOTDIRECTORY">
|
||||
<RegistrySearch Id='mRemoteNGRegistry' Type='raw' Root='HKLM' Key='Software\mRemoteNG' Name='InstallDir' />
|
||||
</Property>
|
||||
<Property Id='REQUIREDDOTNETFRAMEWORKVERSION' Value='$(var.RequiredDotNetFrameworkVersion)' />
|
||||
<Property Id='LEGACYVERSIONINSTALLED' Value='0' />
|
||||
<PropertyRef Id="NETFRAMEWORK40FULL" />
|
||||
<PropertyRef Id="WIX_IS_NETFRAMEWORK_40_OR_LATER_INSTALLED" />
|
||||
<Icon Id="mRemoteNG.ico" SourceFile="Resources\mRemoteNG.ico" />
|
||||
|
||||
<InstallUISequence>
|
||||
<Custom Action="SetRDP80KBValue" After="AppSearch" />
|
||||
<Custom Action="CheckIfRDP80Installed" After="SetRDP80KBValue">(NOT Installed) AND (VersionNT = 601 OR VersionNT64 = 601)</Custom>
|
||||
<LaunchConditions After="SetWIX_IS_NETFRAMEWORK_40_OR_LATER_INSTALLED" />
|
||||
<Custom Action="CheckIfLegacyVersionInstalled" After="LaunchConditions" />
|
||||
<Custom Action="UninstallLegacyVersion" After="CheckIfLegacyVersionInstalled">(NOT Installed) AND (LEGACYVERSIONINSTALLED = 1)</Custom>
|
||||
</InstallUISequence>
|
||||
|
||||
|
||||
<!-- Need to be admin to install -->
|
||||
<Condition Message="!(loc.Install_NeedToBeAdminToInstall)">
|
||||
Privileged
|
||||
</Condition>
|
||||
<!-- Windows 7 or higher required -->
|
||||
<Condition Message="!(loc.Install_OSVersionRequirement)">
|
||||
<![CDATA[Installed OR (VersionNT >= 601) OR (VersionNT64 >= 601)]]>
|
||||
</Condition>
|
||||
<!-- If Windows 7, SP 1 is required -->
|
||||
<Condition Message="!(loc.Install_Win7RequiresSP1)">
|
||||
<![CDATA[Installed OR (VersionNT >= 602 OR VersionNT64 >= 602) OR ((VersionNT = 601 OR VersionNT64 = 601) AND ServicePackLevel >= 1)]]>
|
||||
</Condition>
|
||||
<!-- .Net Framework Version Condition -->
|
||||
<Condition Message="!(loc.Install_NeedDotNetFrameworkVersion)">
|
||||
<![CDATA[Installed OR WIX_IS_NETFRAMEWORK_40_OR_LATER_INSTALLED = 1]]>
|
||||
</Condition>
|
||||
<!-- If Win7, require RDP 8.0 update (KB2592687) -->
|
||||
<Condition Message="!(loc.Install_RDP80Requirement)">
|
||||
<![CDATA[Installed OR (VersionNT >= 602 OR VersionNT64 >= 602) OR ((VersionNT = 601 OR VersionNT64 = 601) ]]>AND ($(var.RDP80KB) = 1 OR $(var.RDP81KB) = 1))
|
||||
</Condition>
|
||||
|
||||
|
||||
|
||||
<Feature Id="F.Complete" Title="!(loc.Feature_Complete)" Display="expand" AllowAdvertise="no" Level="1">
|
||||
<Feature Id="F.MinimalFeature" Title="$(var.ProductName)" Absent="disallow" ConfigurableDirectory="APPLICATIONROOTDIRECTORY" Level="1">
|
||||
<ComponentGroupRef Id="MandatoryComponents" Primary="yes" />
|
||||
<ComponentRef Id="C.MainExe" Primary="yes" />
|
||||
<ComponentGroupRef Id="CG.ProjectInfoFiles" Primary="yes" />
|
||||
</Feature>
|
||||
|
||||
<Feature Id="F.PuttyNG" Title="PuTTYNG" Absent="allow" AllowAdvertise="no" Level="1">
|
||||
<ComponentRef Id="C.PuttyNGFile" Primary="yes" />
|
||||
</Feature>
|
||||
|
||||
<Feature Id="F.DesktopShortcut" Title="!(loc.Feature_DesktopShortcut)" Absent="allow" AllowAdvertise="no" Level="1">
|
||||
<ComponentRef Id="C.DesktopShortcut" Primary="yes" />
|
||||
</Feature>
|
||||
|
||||
<Feature Id="F.ApplicationStartMenuShortcut" Title="!(loc.Feature_StartMenuShortcut)" Absent="allow" AllowAdvertise="no" Level="1">
|
||||
<ComponentRef Id="C.ApplicationStartMenuShortcut" Primary="yes" />
|
||||
|
||||
</Feature>
|
||||
</Feature>
|
||||
|
||||
|
||||
<UIRef Id="WixUI_FeatureTree"/>
|
||||
<WixVariable Id="WixUILicenseRtf" Value="Resources\License.rtf" />
|
||||
<WixVariable Id="WixUIDialogBmp" Value="Resources\welcome.bmp" />
|
||||
<WixVariable Id="WixUIBannerBmp" Value="Resources\header.bmp" />
|
||||
</Product>
|
||||
</Wix>
|
||||
@@ -1,30 +0,0 @@
|
||||
!define AppFile "$EXEDIR\..\mRemoteV1\bin\Release\mRemoteNG.exe"
|
||||
!define VersionCmdFile "$EXEDIR\Version.cmd"
|
||||
!define VersionNshFile "$EXEDIR\Version.nsh"
|
||||
|
||||
OutFile "..\Release\GetVersion.exe"
|
||||
SilentInstall silent
|
||||
RequestExecutionLevel user
|
||||
|
||||
Section
|
||||
## Get file version
|
||||
GetDllVersion "${AppFile}" $R0 $R1
|
||||
IntOp $R3 $R0 / 0x00010000
|
||||
IntOp $R4 $R0 & 0x0000FFFF
|
||||
IntOp $R5 $R1 / 0x00010000
|
||||
IntOp $R6 $R1 & 0x0000FFFF
|
||||
StrCpy $R1 "$R3.$R4.$R5.$R6"
|
||||
StrCpy $R2 "$R3.$R4"
|
||||
|
||||
FileOpen $R0 "${VersionCmdFile}" w
|
||||
FileWrite $R0 '@echo off$\r$\n'
|
||||
FileWrite $R0 'SET PRODUCT_VERSION_SHORT=$R2$\r$\n'
|
||||
FileClose $R0
|
||||
|
||||
FileOpen $R0 "${VersionNshFile}" w
|
||||
FileWrite $R0 '!define PRODUCT_VERSION "$R1"$\r$\n'
|
||||
FileWrite $R0 '!define PRODUCT_VERSION_SHORT "$R2"$\r$\n'
|
||||
FileWrite $R0 '!define PRODUCT_VERSION_MAJOR "$R3"$\r$\n'
|
||||
FileWrite $R0 '!define PRODUCT_VERSION_MINOR "$R4"$\r$\n'
|
||||
FileClose $R0
|
||||
SectionEnd
|
||||
@@ -1,16 +0,0 @@
|
||||
; Spanish installer translation
|
||||
|
||||
; Start mRemoteNG after installation
|
||||
LangString LaunchMremoteNow ${LANG_SPANISH} "mRemoteNG run SPANISH message"
|
||||
|
||||
; Installer Language
|
||||
LangString InstallerLanguage ${LANG_SPANISH} "Installer Language"
|
||||
|
||||
; Select installer Language
|
||||
LangString SelectInstallerLanguage ${LANG_SPANISH} "Please select the language of the installer"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_SPANISH} "mRemoteNG requires Microsoft .NET Framework 2.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_SPANISH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
44
Jenkinsfile
vendored
Normal file
@@ -0,0 +1,44 @@
|
||||
node('windows') {
|
||||
def jobDir = pwd()
|
||||
def vsToolsDir = "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\Tools"
|
||||
def vsExtensionsDir = "C:\\Program Files (x86)\\Microsoft Visual Studio 14.0\\Common7\\IDE\\CommonExtensions\\Microsoft\\TestWindow"
|
||||
|
||||
stage 'Checkout Branch'
|
||||
def gitUrl = "https://github.com/mRemoteNG/mRemoteNG.git"
|
||||
def branchName = GetBranchName()
|
||||
echo "BranchName: ${branchName}"
|
||||
git([url: gitUrl, branch: branchName])
|
||||
|
||||
stage 'Build mRemoteNG (Normal)'
|
||||
bat "\"${vsToolsDir}\\VsDevCmd.bat\" && msbuild.exe /nologo \"${jobDir}\\mRemoteV1.sln\""
|
||||
|
||||
stage 'Build mRemoteNG (Portable)'
|
||||
bat "\"${vsToolsDir}\\VsDevCmd.bat\" && msbuild.exe /nologo /p:Configuration=\"Debug Portable\" \"${jobDir}\\mRemoteV1.sln\""
|
||||
|
||||
stage 'Run Unit Tests'
|
||||
def nunitTestAdapterPath = "C:\\Users\\Administrator\\AppData\\Local\\Microsoft\\VisualStudio\\14.0\\Extensions"
|
||||
bat "\"${vsToolsDir}\\VsDevCmd.bat\" && VSTest.Console.exe /TestAdapterPath:${nunitTestAdapterPath} \"${jobDir}\\mRemoteNGTests\\bin\\debug\\mRemoteNGTests.dll\""
|
||||
}
|
||||
def GetBranchName() {
|
||||
def jobDir = pwd()
|
||||
echo "JobDir: ${jobDir}"
|
||||
def patternToUse = GetPatternToMatchBranchNameFromDirectory()
|
||||
echo "PatternToUse: ${patternToUse}"
|
||||
java.util.regex.Matcher matcher = jobDir =~ patternToUse
|
||||
echo "Ran the matcher"
|
||||
matcher ? matcher[0][1] : null
|
||||
}
|
||||
def GetPatternToMatchBranchNameFromDirectory() {
|
||||
def patternToUse = ""
|
||||
def folderSeparator = ""
|
||||
def branchNamePattern = "[a-zA-Z0-9\\-_]*"
|
||||
def jenkinsJobInfoTag = "@*[0-9]*"
|
||||
echo "isUnix: ${isUnix()}"
|
||||
if (isUnix()) {
|
||||
folderSeparator = "/"
|
||||
} else {
|
||||
folderSeparator = "\\\\"
|
||||
}
|
||||
patternToUse = "${folderSeparator}(${branchNamePattern})(${jenkinsJobInfoTag})\$"
|
||||
patternToUse
|
||||
}
|
||||
BIN
Old_Installer/Dependencies/PuTTYNG.exe
Normal file
296
Old_Installer/DotNetVer.nsh
Normal file
@@ -0,0 +1,296 @@
|
||||
; ---------------------
|
||||
; DotNetVer.nsh
|
||||
; Written by: David Grinberg
|
||||
; Homepage: http://ontheperiphery.veraida.com/
|
||||
; Updated By: Brandon Hansen (http://www.remotehams.com/)
|
||||
; ---------------------
|
||||
;
|
||||
; LogicLib extensions for checking Microsoft .NET Framework versions and service packs.
|
||||
;
|
||||
; Latests Updates by Brandon Hansen, KG6YPI (RemoteHams.com)
|
||||
; Dec 26, 2011 - .NET Framework 4.0 detection fixes - client profile not being found
|
||||
; Dec 07, 2010 - .NET Framework 4.0 detection added by Brandon Hansen (KG6YPI)
|
||||
;
|
||||
; Usage examples:
|
||||
;
|
||||
; ${If} ${HasDotNet4.0}
|
||||
; DetailPrint "Microsoft .NET Framework 4.0 installed."
|
||||
; ${If} ${DOTNETVER_4_0} AtLeastDotNetServicePack 1
|
||||
; DetailPrint "Microsoft .NET Framework 4.0 is at least SP1."
|
||||
; ${Else}
|
||||
; DetailPrint "Microsoft .NET Framework 4.0 SP1 not installed."
|
||||
; ${EndIf}
|
||||
; ${If} ${DOTNETVER_4_0} HasDotNetClientProfile 1
|
||||
; DetailPrint "Microsoft .NET Framework 4.0 (Client Profile) available."
|
||||
; ${EndIf}
|
||||
; ${If} ${DOTNETVER_4_0} HasDotNetFullProfile 1
|
||||
; DetailPrint "Microsoft .NET Framework 4.0 (Full Profile) available."
|
||||
; ${EndIf}
|
||||
; ${If} ${DOTNETVER_4_0} HasDotNetFullProfile 0
|
||||
; DetailPrint "Microsoft .NET Framework 4.0 (Full Profile) not available."
|
||||
; ${EndIf}
|
||||
; ${EndIf}
|
||||
|
||||
|
||||
!verbose push
|
||||
!verbose 3
|
||||
|
||||
!ifndef ___DOTNETVER__NSH___
|
||||
!define ___DOTNETVER__NSH___
|
||||
|
||||
!include LogicLib.nsh
|
||||
!include Util.nsh
|
||||
|
||||
# constants
|
||||
|
||||
!define DOTNETVER_1_0 "1.0"
|
||||
!define DOTNETVER_1_1 "1.1"
|
||||
!define DOTNETVER_2_0 "2.0"
|
||||
!define DOTNETVER_3_0 "3.0"
|
||||
!define DOTNETVER_3_5 "3.5"
|
||||
!define DOTNETVER_4_0 "4.0"
|
||||
|
||||
# variable declaration
|
||||
|
||||
Var /GLOBAL __DONTNET_FOUNDVER
|
||||
|
||||
!macro __DotNetVer_DeclareVars
|
||||
!ifndef __DOTNETVER_VARS_DECLARED
|
||||
!define __DOTNETVER_VARS_DECLARED
|
||||
Var /GLOBAL __DOTNET_1.0
|
||||
Var /GLOBAL __DOTNET_1.1
|
||||
Var /GLOBAL __DOTNET_2.0
|
||||
Var /GLOBAL __DOTNET_3.0
|
||||
Var /GLOBAL __DOTNET_3.5
|
||||
Var /GLOBAL __DOTNET_4.0
|
||||
|
||||
Var /GLOBAL __DOTNETVER_1.0_SP
|
||||
Var /GLOBAL __DOTNETVER_1.1_SP
|
||||
Var /GLOBAL __DOTNETVER_2.0_SP
|
||||
Var /GLOBAL __DOTNETVER_3.0_SP
|
||||
Var /GLOBAL __DOTNETVER_3.5_SP
|
||||
Var /GLOBAL __DOTNETVER_4.0_SP
|
||||
|
||||
Var /GLOBAL __DOTNET_1.0_CLIENT
|
||||
Var /GLOBAL __DOTNET_1.1_CLIENT
|
||||
Var /GLOBAL __DOTNET_2.0_CLIENT
|
||||
Var /GLOBAL __DOTNET_3.0_CLIENT
|
||||
Var /GLOBAL __DOTNET_3.5_CLIENT
|
||||
Var /GLOBAL __DOTNET_4.0_CLIENT
|
||||
|
||||
Var /GLOBAL __DOTNET_1.0_FULL
|
||||
Var /GLOBAL __DOTNET_1.1_FULL
|
||||
Var /GLOBAL __DOTNET_2.0_FULL
|
||||
Var /GLOBAL __DOTNET_3.0_FULL
|
||||
Var /GLOBAL __DOTNET_3.5_FULL
|
||||
Var /GLOBAL __DOTNET_4.0_FULL
|
||||
|
||||
StrCpy $__DOTNET_1.0 0
|
||||
StrCpy $__DOTNET_1.1 0
|
||||
StrCpy $__DOTNET_2.0 0
|
||||
StrCpy $__DOTNET_3.0 0
|
||||
StrCpy $__DOTNET_3.5 0
|
||||
StrCpy $__DOTNET_4.0 0
|
||||
|
||||
StrCpy $__DOTNETVER_1.0_SP 0
|
||||
StrCpy $__DOTNETVER_1.1_SP 0
|
||||
StrCpy $__DOTNETVER_2.0_SP 0
|
||||
StrCpy $__DOTNETVER_3.0_SP 0
|
||||
StrCpy $__DOTNETVER_3.5_SP 0
|
||||
StrCpy $__DOTNETVER_4.0_SP 0
|
||||
|
||||
StrCpy $__DOTNET_1.0_CLIENT 0
|
||||
StrCpy $__DOTNET_1.1_CLIENT 0
|
||||
StrCpy $__DOTNET_2.0_CLIENT 0
|
||||
StrCpy $__DOTNET_3.0_CLIENT 0
|
||||
StrCpy $__DOTNET_3.5_CLIENT 0
|
||||
StrCpy $__DOTNET_4.0_CLIENT 0
|
||||
|
||||
StrCpy $__DOTNET_1.0_FULL 0
|
||||
StrCpy $__DOTNET_1.1_FULL 0
|
||||
StrCpy $__DOTNET_2.0_FULL 0
|
||||
StrCpy $__DOTNET_3.0_FULL 0
|
||||
StrCpy $__DOTNET_3.5_FULL 0
|
||||
StrCpy $__DOTNET_4.0_FULL 0
|
||||
|
||||
!endif
|
||||
!macroend
|
||||
|
||||
|
||||
# lazy initialization macro
|
||||
|
||||
!macro __DotNetVer_InitVars
|
||||
# only calculate version once
|
||||
StrCmp $__DONTNET_FOUNDVER "" dotnetver.noveryet
|
||||
Return
|
||||
|
||||
dotnetver.noveryet:
|
||||
!insertmacro __DotNetVer_DeclareVars
|
||||
|
||||
Push $0 ;registry count
|
||||
Push $1 ;registry key
|
||||
Push $2 ;version number
|
||||
Push $3 ;installed
|
||||
Push $4 ;service pack number
|
||||
Push $8 ;strLen helper var
|
||||
|
||||
StrCpy $0 0
|
||||
|
||||
dotnetver.startenum:
|
||||
|
||||
EnumRegKey $1 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP" $0
|
||||
StrCmp $1 "" dotnetver.done
|
||||
|
||||
IntOp $0 $0 + 1
|
||||
|
||||
StrCpy $2 $1 1 0
|
||||
StrCmp $2 "v" +1 dotnetver.startenum
|
||||
StrCpy $2 $1 3 1
|
||||
|
||||
; Check for .NET 1.0 to 3.5
|
||||
ReadRegDWORD $3 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\$1" "Install"
|
||||
ReadRegDWORD $4 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\$1" "SP"
|
||||
IntCmp $3 1 dotnetcheck.skipalt
|
||||
; Alternate check for versions that don't set the Install key
|
||||
ReadRegDWORD $3 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\$1\Setup" "InstallSuccess"
|
||||
dotnetcheck.skipalt:
|
||||
; This is a sanity check that works on .NET 1.0 to 3.5
|
||||
; if it fails check for dotnet 4
|
||||
IntCmp $3 0 dotnetcheck.40
|
||||
StrCmp $2 ${DOTNETVER_1_0} dotnetver.10
|
||||
StrCmp $2 ${DOTNETVER_1_1} dotnetver.11
|
||||
StrCmp $2 ${DOTNETVER_2_0} dotnetver.20
|
||||
StrCmp $2 ${DOTNETVER_3_0} dotnetver.30
|
||||
StrCmp $2 ${DOTNETVER_3_5} dotnetver.35
|
||||
dotnetcheck.40:
|
||||
StrCmp $2 ${DOTNETVER_4_0} dotnetver.40
|
||||
StrCmp $2 "4" dotnetver.40
|
||||
|
||||
Goto dotnetver.startenum
|
||||
|
||||
dotnetver.10:
|
||||
StrCpy $__DOTNET_1.0 1
|
||||
StrCpy $__DOTNETVER_1.0_SP $4
|
||||
StrCpy $__DOTNET_1.0_FULL 1
|
||||
Goto dotnetver.startenum
|
||||
dotnetver.11:
|
||||
StrCpy $__DOTNET_1.1 1
|
||||
StrCpy $__DOTNETVER_1.1_SP $4
|
||||
StrCpy $__DOTNET_1.1_FULL 1
|
||||
Goto dotnetver.startenum
|
||||
dotnetver.20:
|
||||
StrCpy $__DOTNET_2.0 1
|
||||
StrCpy $__DOTNETVER_2.0_SP $4
|
||||
StrCpy $__DOTNET_2.0_FULL 1
|
||||
Goto dotnetver.startenum
|
||||
dotnetver.30:
|
||||
StrCpy $__DOTNET_3.0 1
|
||||
StrCpy $__DOTNETVER_3.0_SP $4
|
||||
StrCpy $__DOTNET_3.0_FULL 1
|
||||
Goto dotnetver.startenum
|
||||
dotnetver.35:
|
||||
StrCpy $__DOTNET_3.5 1
|
||||
StrCpy $__DOTNETVER_3.5_SP $4
|
||||
StrCpy $__DOTNET_3.5_FULL 1
|
||||
Goto dotnetver.startenum
|
||||
dotnetver.40:
|
||||
; Check for .NET 4.0 (Full Profile)
|
||||
ReadRegDWORD $3 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "Install"
|
||||
ReadRegDWORD $4 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Full" "SP"
|
||||
StrLen $8 $3
|
||||
IntCmp $8 0 dotnetcheck.40c
|
||||
IntCmp $3 0 dotnetcheck.40c
|
||||
StrCmp $2 ${DOTNETVER_4_0} dotnetver.40_Full
|
||||
StrCmp $2 "4" dotnetver.40_Full
|
||||
dotnetcheck.40c:
|
||||
; Check for .NET 4.0 (Client Profile)
|
||||
ReadRegDWORD $3 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client" "Install"
|
||||
ReadRegDWORD $4 HKLM "SOFTWARE\Microsoft\NET Framework Setup\NDP\v4\Client" "SP"
|
||||
StrLen $8 $3
|
||||
IntCmp $8 0 dotnetver.startenum
|
||||
IntCmp $3 0 dotnetver.startenum
|
||||
StrCmp $2 ${DOTNETVER_4_0} dotnetver.40_Client
|
||||
StrCmp $2 "4" dotnetver.40_Client
|
||||
Goto dotnetver.startenum
|
||||
dotnetver.40_Full:
|
||||
StrCpy $__DOTNET_4.0 1
|
||||
StrCpy $__DOTNETVER_4.0_SP $4
|
||||
StrCpy $__DOTNET_4.0_FULL 1
|
||||
Goto dotnetcheck.40c ; continue looking for other profiles
|
||||
dotnetver.40_Client:
|
||||
StrCpy $__DOTNET_4.0 1
|
||||
StrCpy $__DOTNETVER_4.0_SP $4
|
||||
StrCpy $__DOTNET_4.0_CLIENT 1
|
||||
Goto dotnetver.startenum
|
||||
|
||||
dotnetver.done:
|
||||
|
||||
StrCpy $__DONTNET_FOUNDVER "1"
|
||||
|
||||
Pop $8
|
||||
Pop $4
|
||||
Pop $3
|
||||
Pop $2
|
||||
Pop $1
|
||||
Pop $0
|
||||
!macroend
|
||||
|
||||
!macro _HasDotNet _a _b _t _f
|
||||
${CallArtificialFunction} __DotNetVer_InitVars
|
||||
|
||||
!insertmacro _= `$__DOTNET_${_b}` `1` `${_t}` `${_f}`
|
||||
!macroend
|
||||
|
||||
!macro __DotNetVer_DefineTest Ver
|
||||
!define HasDotNet${Ver} `"" HasDotNet ${Ver}`
|
||||
!macroend
|
||||
|
||||
!insertmacro __DotNetVer_DefineTest ${DOTNETVER_1_0}
|
||||
!insertmacro __DotNetVer_DefineTest ${DOTNETVER_1_1}
|
||||
!insertmacro __DotNetVer_DefineTest ${DOTNETVER_2_0}
|
||||
!insertmacro __DotNetVer_DefineTest ${DOTNETVER_3_0}
|
||||
!insertmacro __DotNetVer_DefineTest ${DOTNETVER_3_5}
|
||||
!insertmacro __DotNetVer_DefineTest ${DOTNETVER_4_0}
|
||||
|
||||
!macro _AtLeastDotNetServicePack _a _b _t _f
|
||||
${CallArtificialFunction} __DotNetVer_InitVars
|
||||
|
||||
!insertmacro _>= `$__DOTNETVER_${_a}_SP` `${_b}` `${_t}` `${_f}`
|
||||
!macroend
|
||||
!define AtLeastDotNetServicePack `AtLeastDotNetServicePack`
|
||||
|
||||
|
||||
!macro _AtMostDotNetServicePack _a _b _t _f
|
||||
${CallArtificialFunction} __DotNetVer_InitVars
|
||||
|
||||
!insertmacro _<= `$__DOTNETVER_${_a}_SP` `${_b}` `${_t}` `${_f}`
|
||||
!macroend
|
||||
!define AtMostDotNetServicePack `AtMostDotNetServicePack`
|
||||
|
||||
|
||||
!macro _IsDotNetServicePack _a _b _t _f
|
||||
${CallArtificialFunction} __DotNetVer_InitVars
|
||||
|
||||
!insertmacro _= `$__DOTNETVER_${_a}_SP` `${_b}` `${_t}` `${_f}`
|
||||
!macroend
|
||||
!define IsDotNetServicePack `IsDotNetServicePack`
|
||||
|
||||
!macro _HasDotNetClientProfile _a _b _t _f
|
||||
${CallArtificialFunction} __DotNetVer_InitVars
|
||||
|
||||
!insertmacro _= `$__DOTNET_${_a}_CLIENT` `${_b}` `${_t}` `${_f}`
|
||||
!macroend
|
||||
!define HasDotNetClientProfile `HasDotNetClientProfile`
|
||||
|
||||
!macro _HasDotNetFullProfile _a _b _t _f
|
||||
${CallArtificialFunction} __DotNetVer_InitVars
|
||||
|
||||
!insertmacro _= `$__DOTNET_${_a}_FULL` `${_b}` `${_t}` `${_f}`
|
||||
!macroend
|
||||
!define HasDotNetFullProfile `HasDotNetFullProfile`
|
||||
|
||||
# done
|
||||
|
||||
!endif # !___DOTNETVER__NSH___
|
||||
|
||||
!verbose pop
|
||||
@@ -10,7 +10,13 @@ LangString InstallerLanguage ${LANG_CZECH} "Installer Language"
|
||||
LangString SelectInstallerLanguage ${LANG_CZECH} "Please select the language of the installer"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_CZECH} "mRemoteNG requires Microsoft .NET Framework 2.0."
|
||||
LangString RequiresNetFramework ${LANG_CZECH} "mRemoteNG requires Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_CZECH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
LangString RequiresAdminUser ${LANG_CZECH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
|
||||
; Start Menu items
|
||||
LangString CreditsLinkName ${LANG_CZECH} "Credits"
|
||||
LangString CopyingLinkName ${LANG_CZECH} "License"
|
||||
LangString UninstallLinkName ${LANG_CZECH} "Uninstall"
|
||||
LangString ChangeLogLinkName ${LANG_CZECH} "Version History"
|
||||
@@ -10,7 +10,13 @@ LangString InstallerLanguage ${LANG_DUTCH} "Installer Language"
|
||||
LangString SelectInstallerLanguage ${LANG_DUTCH} "Please select the language of the installer"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_DUTCH} "mRemoteNG requires Microsoft .NET Framework 2.0."
|
||||
LangString RequiresNetFramework ${LANG_DUTCH} "mRemoteNG requires Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_DUTCH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
LangString RequiresAdminUser ${LANG_DUTCH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
|
||||
; Start Menu items
|
||||
LangString CreditsLinkName ${LANG_DUTCH} "Credits"
|
||||
LangString CopyingLinkName ${LANG_DUTCH} "License"
|
||||
LangString UninstallLinkName ${LANG_DUTCH} "Uninstall"
|
||||
LangString ChangeLogLinkName ${LANG_DUTCH} "Version History"
|
||||
@@ -10,7 +10,13 @@ LangString InstallerLanguage ${LANG_ENGLISH} "Installer Language"
|
||||
LangString SelectInstallerLanguage ${LANG_ENGLISH} "Please select the language of the installer"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_ENGLISH} "mRemoteNG requires Microsoft .NET Framework 2.0."
|
||||
LangString RequiresNetFramework ${LANG_ENGLISH} "mRemoteNG requires Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_ENGLISH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
LangString RequiresAdminUser ${LANG_ENGLISH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
|
||||
; Start Menu items
|
||||
LangString CreditsLinkName ${LANG_ENGLISH} "Credits"
|
||||
LangString CopyingLinkName ${LANG_ENGLISH} "License"
|
||||
LangString UninstallLinkName ${LANG_ENGLISH} "Uninstall"
|
||||
LangString ChangeLogLinkName ${LANG_ENGLISH} "Version History"
|
||||
@@ -10,7 +10,13 @@ LangString InstallerLanguage ${LANG_FRENCH} "Installer Language"
|
||||
LangString SelectInstallerLanguage ${LANG_FRENCH} "Please select the language of the installer"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_FRENCH} "mRemoteNG requires Microsoft .NET Framework 2.0."
|
||||
LangString RequiresNetFramework ${LANG_FRENCH} "mRemoteNG requires Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_FRENCH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
LangString RequiresAdminUser ${LANG_FRENCH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
|
||||
; Start Menu items
|
||||
LangString CreditsLinkName ${LANG_FRENCH} "Credits"
|
||||
LangString CopyingLinkName ${LANG_FRENCH} "License"
|
||||
LangString UninstallLinkName ${LANG_FRENCH} "Uninstall"
|
||||
LangString ChangeLogLinkName ${LANG_FRENCH} "Version History"
|
||||
@@ -10,7 +10,13 @@ LangString InstallerLanguage ${LANG_GERMAN} "Installationsprogamm Sprache"
|
||||
LangString SelectInstallerLanguage ${LANG_GERMAN} "Bitte wählen Sie die Sprache für das Installationsprogramm"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_GERMAN} "mRemoteNG benötigt das Microsoft .NET Framework 2.0."
|
||||
LangString RequiresNetFramework ${LANG_GERMAN} "mRemoteNG benötigt das Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_GERMAN} "Sie müssen Mitglied der Grupper 'Power Users' or 'Administratoren' sein, damit Sie mRemoteNG installieren können."
|
||||
LangString RequiresAdminUser ${LANG_GERMAN} "Sie müssen Mitglied der Grupper 'Power Users' or 'Administratoren' sein, damit Sie mRemoteNG installieren können."
|
||||
|
||||
; Start Menu items
|
||||
LangString CreditsLinkName ${LANG_GERMAN} "Credits"
|
||||
LangString CopyingLinkName ${LANG_GERMAN} "License"
|
||||
LangString UninstallLinkName ${LANG_GERMAN} "Uninstall"
|
||||
LangString ChangeLogLinkName ${LANG_GERMAN} "Version History"
|
||||
@@ -10,7 +10,13 @@ LangString InstallerLanguage ${LANG_POLISH} "Installer Language"
|
||||
LangString SelectInstallerLanguage ${LANG_POLISH} "Please select the language of the installer"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_POLISH} "mRemoteNG requires Microsoft .NET Framework 2.0."
|
||||
LangString RequiresNetFramework ${LANG_POLISH} "mRemoteNG requires Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_POLISH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
LangString RequiresAdminUser ${LANG_POLISH} "You must be a member of the 'Power Users' or 'Administrators' group to install mRemoteNG."
|
||||
|
||||
; Start Menu items
|
||||
LangString CreditsLinkName ${LANG_POLISH} "Credits"
|
||||
LangString CopyingLinkName ${LANG_POLISH} "License"
|
||||
LangString UninstallLinkName ${LANG_POLISH} "Uninstall"
|
||||
LangString ChangeLogLinkName ${LANG_POLISH} "Version History"
|
||||
22
Old_Installer/Language/spanish.nsi
Normal file
@@ -0,0 +1,22 @@
|
||||
; Spanish installer translation
|
||||
|
||||
; Start mRemoteNG after installation
|
||||
LangString LaunchMremoteNow ${LANG_SPANISH} "Iniciando de mRemoteNG"
|
||||
|
||||
; Installer Language
|
||||
LangString InstallerLanguage ${LANG_SPANISH} "Lenguaje de Instalación"
|
||||
|
||||
; Select installer Language
|
||||
LangString SelectInstallerLanguage ${LANG_SPANISH} "Seleccione el lenguaje de instalación"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_SPANISH} "mRemoteNG requiere Microsoft .NET Framework 3.0."
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_SPANISH} "Debe ser miembro del grupo 'Administradores' para poder instalar mRemoteNG."
|
||||
|
||||
; Start Menu items
|
||||
LangString CreditsLinkName ${LANG_SPANISH} "Créditos"
|
||||
LangString CopyingLinkName ${LANG_SPANISH} "Licencia"
|
||||
LangString UninstallLinkName ${LANG_SPANISH} "Desinstalar"
|
||||
LangString ChangeLogLinkName ${LANG_SPANISH} "Historial de Versiones"
|
||||
@@ -11,7 +11,13 @@ LangString InstallerLanguage ${LANG_THAI} "ภาษาสำหรับกา
|
||||
LangString SelectInstallerLanguage ${LANG_THAI} "กรุณาเลือกภาษาสำหรับการติดตั้ง"
|
||||
|
||||
; Requires .NET Framework
|
||||
LangString RequiresNetFramework ${LANG_THAI} "mRemoteNG มีความต้องการ Microsoft .NET Framework 2.0. เป็นพื้นฐาน"
|
||||
LangString RequiresNetFramework ${LANG_THAI} "mRemoteNG มีความต้องการ Microsoft .NET Framework 3.0. เป็นพื้นฐาน"
|
||||
|
||||
; User needs to be Admin
|
||||
LangString RequiresAdminUser ${LANG_THAI} "คุณต้องเป็นสมาชิกในกลุ่มของ 'Power Users' หรือ 'Administrators' เพื่อการติดตั้ง mRemoteNG"
|
||||
|
||||
; Start Menu items
|
||||
LangString CreditsLinkName ${LANG_THAI} "Credits"
|
||||
LangString CopyingLinkName ${LANG_THAI} "License"
|
||||
LangString UninstallLinkName ${LANG_THAI} "Uninstall"
|
||||
LangString ChangeLogLinkName ${LANG_THAI} "Version History"
|
||||
|
Before Width: | Height: | Size: 78 KiB After Width: | Height: | Size: 78 KiB |
|
Before Width: | Height: | Size: 79 KiB After Width: | Height: | Size: 79 KiB |
BIN
Old_Installer/header.bmp
Normal file
|
After Width: | Height: | Size: 83 KiB |
@@ -1,7 +1,8 @@
|
||||
!include "MUI.nsh"
|
||||
!include "MUI.nsh"
|
||||
!include "WordFunc.nsh"
|
||||
!insertmacro VersionCompare
|
||||
|
||||
!include "DotNetVer.nsh"
|
||||
!include "..\Release\Version.nsh"
|
||||
|
||||
; This will be passed in using the /D switch by BUILD.CMD
|
||||
@@ -13,9 +14,6 @@
|
||||
!define PRODUCT_VERSION_TAGGED "${PRODUCT_VERSION_SHORT}"
|
||||
!endif
|
||||
|
||||
; Global Variables
|
||||
Var InstallDotNET
|
||||
|
||||
; Basic Config
|
||||
Name "mRemoteNG ${PRODUCT_VERSION_FRIENDLY}"
|
||||
OutFile "..\Release\mRemoteNG-Installer-${PRODUCT_VERSION_TAGGED}.exe"
|
||||
@@ -26,9 +24,10 @@ RequestExecutionLevel admin
|
||||
|
||||
; Version Information
|
||||
VIProductVersion ${PRODUCT_VERSION}
|
||||
VIAddVersionKey "CompanyName" "Next Generation Software"
|
||||
VIAddVersionKey "ProductName" "mRemoteNG"
|
||||
VIAddVersionKey "ProductVersion" ${PRODUCT_VERSION}
|
||||
VIAddVersionKey "LegalCopyright" "Copyright © 2007-2009 Felix Deimel, 2010-2011 Riley McArdle"
|
||||
VIAddVersionKey "LegalCopyright" "Copyright © 2007-2009 Felix Deimel, 2010-2013 Riley McArdle"
|
||||
VIAddVersionKey "FileDescription" "mRemoteNG ${PRODUCT_VERSION_FRIENDLY} Installer"
|
||||
VIAddVersionKey "FileVersion" ${PRODUCT_VERSION}
|
||||
|
||||
@@ -95,7 +94,8 @@ Function .onInit
|
||||
Win9x:
|
||||
doit:
|
||||
# We can install
|
||||
Call SelectLanguage
|
||||
IfSilent +2
|
||||
Call SelectLanguage
|
||||
Goto end
|
||||
noop:
|
||||
MessageBox MB_OK "$(RequiresAdminUser)"
|
||||
@@ -131,22 +131,7 @@ Function SelectLanguage
|
||||
Abort
|
||||
|
||||
; Check .NET version
|
||||
StrCpy $InstallDotNET "No"
|
||||
Call GetDotNETVersion
|
||||
Pop $0
|
||||
|
||||
${If} $0 == "not found"
|
||||
StrCpy $InstallDotNET "Yes"
|
||||
${EndIf}
|
||||
|
||||
StrCpy $0 $0 "" 1 # skip "v"
|
||||
|
||||
${VersionCompare} $0 "2.0" $1
|
||||
${If} $1 == 2
|
||||
StrCpy $InstallDotNET "Yes"
|
||||
${EndIf}
|
||||
|
||||
${If} $InstallDotNET == "Yes"
|
||||
${IfNot} ${HasDotNet3.0}
|
||||
MessageBox MB_OK|MB_ICONEXCLAMATION "$(RequiresNetFramework)"
|
||||
Quit
|
||||
${EndIf}
|
||||
@@ -169,15 +154,18 @@ Section "" ; Install
|
||||
|
||||
; Start Menu
|
||||
CreateDirectory "$SMPROGRAMS\mRemoteNG"
|
||||
CreateShortCut "$SMPROGRAMS\mRemoteNG\$(CreditsLinkName).lnk" "$INSTDIR\CREDITS.TXT"
|
||||
CreateShortCut "$SMPROGRAMS\mRemoteNG\$(CopyingLinkName).lnk" "$INSTDIR\COPYING.TXT"
|
||||
CreateShortCut "$SMPROGRAMS\mRemoteNG\mRemoteNG.lnk" "$INSTDIR\mRemoteNG.exe"
|
||||
CreateShortCut "$SMPROGRAMS\mRemoteNG\Uninstall.lnk" "$INSTDIR\Uninstall.exe"
|
||||
CreateShortCut "$SMPROGRAMS\mRemoteNG\$(UninstallLinkName).lnk" "$INSTDIR\Uninstall.exe"
|
||||
CreateShortCut "$SMPROGRAMS\mRemoteNG\$(ChangeLogLinkName).lnk" "$INSTDIR\CHANGELOG.TXT"
|
||||
|
||||
; Registry
|
||||
WriteRegStr HKLM "Software\mRemoteNG" "InstallPath" $INSTDIR
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\mRemoteNG" "DisplayName" "mRemoteNG"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\mRemoteNG" "Publisher" "mRemoteNG"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\mRemoteNG" "Publisher" "Next Generation Software"
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\mRemoteNG" "DisplayIcon" "$INSTDIR\mRemoteNG.exe"
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\mRemoteNG" "EstimatedSize" 6464
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\mRemoteNG" "EstimatedSize" 7080
|
||||
|
||||
WriteRegStr HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\mRemoteNG" "DisplayVersion" ${PRODUCT_VERSION}
|
||||
WriteRegDWORD HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\mRemoteNG" "VersionMajor" ${PRODUCT_VERSION_MAJOR}
|
||||
@@ -197,13 +185,9 @@ Section "un.Uninstall"
|
||||
|
||||
; Start Menu
|
||||
SetShellVarContext all
|
||||
Delete "$SMPROGRAMS\mRemoteNG\mRemoteNG.lnk"
|
||||
Delete "$SMPROGRAMS\mRemoteNG\Uninstall.lnk"
|
||||
RMDir "$SMPROGRAMS\mRemoteNG"
|
||||
RMDir /r "$SMPROGRAMS\mRemoteNG"
|
||||
SetShellVarContext current
|
||||
Delete "$SMPROGRAMS\mRemoteNG\mRemoteNG.lnk"
|
||||
Delete "$SMPROGRAMS\mRemoteNG\Uninstall.lnk"
|
||||
RMDir "$SMPROGRAMS\mRemoteNG"
|
||||
RMDir /r "$SMPROGRAMS\mRemoteNG"
|
||||
|
||||
; Registry
|
||||
DeleteRegValue HKLM "Software\mRemoteNG" "InstallPath"
|
||||
@@ -211,15 +195,3 @@ Section "un.Uninstall"
|
||||
DeleteRegKey /ifempty HKCU "Software\mRemoteNG"
|
||||
DeleteRegKey HKLM "Software\Microsoft\Windows\CurrentVersion\Uninstall\mRemoteNG"
|
||||
SectionEnd
|
||||
|
||||
Function GetDotNETVersion
|
||||
Push $0
|
||||
Push $1
|
||||
|
||||
System::Call "mscoree::GetCORVersion(w .r0, i ${NSIS_MAX_STRLEN}, *i) i .r1"
|
||||
StrCmp $1 "error" 0 +2
|
||||
StrCpy $0 "not found"
|
||||
|
||||
Pop $1
|
||||
Exch $0
|
||||
FunctionEnd
|
||||
|
Before Width: | Height: | Size: 151 KiB After Width: | Height: | Size: 151 KiB |
26
Sort Language Files.cmd
Normal file
@@ -0,0 +1,26 @@
|
||||
@echo off
|
||||
|
||||
set TEMP_FOLDER="%TEMP%\Translations.tmp"
|
||||
set SORTRESX="%~dp0\Tools\SortRESX.exe"
|
||||
|
||||
echo.
|
||||
echo This script sorts the language files
|
||||
echo.
|
||||
|
||||
choice /m "Would you like to continue?"
|
||||
|
||||
echo.
|
||||
|
||||
rmdir /s /q %TEMP_FOLDER%
|
||||
mkdir %TEMP_FOLDER%
|
||||
copy "%~dp0\mRemoteV1\Language\*.resx" %TEMP_FOLDER%
|
||||
|
||||
pushd %TEMP_FOLDER%
|
||||
for %%f in (*) do %SORTRESX% %TEMP_FOLDER%\%%f "%~dp0\mRemoteV1\Language\%%f"
|
||||
popd
|
||||
|
||||
rmdir /s /q %TEMP_FOLDER%
|
||||
|
||||
echo Done.
|
||||
echo.
|
||||
pause
|
||||
BIN
Tools/SortRESX.exe
Normal file
1
UI_tests.playlist
Normal file
@@ -0,0 +1 @@
|
||||
<Playlist Version="1.0"><Add Test="mRemoteNGTests.UI.WindowListTests.TestMethod1" /><Add Test="mRemoteNGTests.UI.WindowListTests.AddWindowToList" /><Add Test="mRemoteNGTests.UI.WindowListTests.CountReturnsCorrectNumber" /></Playlist>
|
||||
55
Update Languages.cmd
Normal file
@@ -0,0 +1,55 @@
|
||||
@echo off
|
||||
|
||||
set ZIP_FILE="%~dp0\..\mremoteng.zip"
|
||||
set TEMP_FOLDER="%TEMP%\Translations.tmp"
|
||||
set SORTRESX="%~dp0\Tools\SortRESX.exe"
|
||||
set RAR="%ProgramFiles%\WinRAR\WinRAR.exe"
|
||||
|
||||
call :expand %ZIP_FILE%
|
||||
goto :skip
|
||||
:expand
|
||||
set ZIP_FILE="%~f1"
|
||||
exit /b
|
||||
:skip
|
||||
|
||||
echo.
|
||||
echo This script updates the language files with new translations from Crowdin
|
||||
echo.
|
||||
echo Download the latest translation file from Crowdin and place it here:
|
||||
echo.
|
||||
echo %ZIP_FILE%
|
||||
echo.
|
||||
|
||||
choice /m "Would you like to continue?"
|
||||
|
||||
echo.
|
||||
|
||||
mkdir %TEMP_FOLDER%
|
||||
%RAR% x -o+ %ZIP_FILE% *.* %TEMP_FOLDER%
|
||||
|
||||
%SORTRESX% %TEMP_FOLDER%\ar\Language.ar.resx "%~dp0\mRemoteV1\Language\Language.ar.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\bg\Language.bg.resx "%~dp0\mRemoteV1\Language\Language.bg.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\de\Language.de.resx "%~dp0\mRemoteV1\Language\Language.de.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\el\Language.el.resx "%~dp0\mRemoteV1\Language\Language.el.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\en-US\Language.en.resx "%~dp0\mRemoteV1\Language\Language.en-US.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\es-AR\Language.es.resx "%~dp0\mRemoteV1\Language\Language.es-AR.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\es-ES\Language.es.resx "%~dp0\mRemoteV1\Language\Language.es.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\fr\Language.fr.resx "%~dp0\mRemoteV1\Language\Language.fr.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\he\Language.he.resx "%~dp0\mRemoteV1\Language\Language.he.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\hu\Language.hu.resx "%~dp0\mRemoteV1\Language\Language.hu.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\it\Language.it.resx "%~dp0\mRemoteV1\Language\Language.it.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\nb\Language.nb.resx "%~dp0\mRemoteV1\Language\Language.nb-NO.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\nl\Language.nl.resx "%~dp0\mRemoteV1\Language\Language.nl.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\pl\Language.pl.resx "%~dp0\mRemoteV1\Language\Language.pl.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\pt-BR\Language.pt.resx "%~dp0\mRemoteV1\Language\Language.pt-BR.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\pt-PT\Language.pt.resx "%~dp0\mRemoteV1\Language\Language.pt.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\ru\Language.ru.resx "%~dp0\mRemoteV1\Language\Language.ru.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\uk\Language.uk.resx "%~dp0\mRemoteV1\Language\Language.uk.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\zh-CN\Language.zh.resx "%~dp0\mRemoteV1\Language\Language.zh-CN.resx"
|
||||
%SORTRESX% %TEMP_FOLDER%\zh-TW\Language.zh.resx "%~dp0\mRemoteV1\Language\Language.zh-TW.resx"
|
||||
|
||||
rmdir /s /q %TEMP_FOLDER%
|
||||
|
||||
echo Done.
|
||||
echo.
|
||||
pause
|
||||
25
mRemoteNGTests/App/LoggerTests.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using mRemoteNG.App;
|
||||
using log4net;
|
||||
|
||||
namespace mRemoteNGTests.App
|
||||
{
|
||||
[TestFixture]
|
||||
public class LoggerTests
|
||||
{
|
||||
[Test]
|
||||
public void GetSingletonInstanceReturnsAnILogObject()
|
||||
{
|
||||
Assert.That(Logger.Instance, Is.InstanceOf<ILog>());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SingletonOnlyEverReturnsTheSameInstance()
|
||||
{
|
||||
ILog log1 = Logger.Instance;
|
||||
ILog log2 = Logger.Instance;
|
||||
Assert.That(log1, Is.EqualTo(log2));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,27 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using mRemoteNG.Config;
|
||||
using mRemoteNG.Config.Connections;
|
||||
using NSubstitute;
|
||||
|
||||
namespace mRemoteNGTests.Config.Connections
|
||||
{
|
||||
[TestFixture]
|
||||
public class SqlConnectionUpdateCheckerTests
|
||||
{
|
||||
SqlConnectionsUpdateChecker _updateChecker;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_updateChecker = new SqlConnectionsUpdateChecker();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void Teardown()
|
||||
{
|
||||
_updateChecker.Dispose();
|
||||
_updateChecker = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using mRemoteNG.Config.Connections;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace mRemoteNGTests.Config.Connections
|
||||
{
|
||||
[TestFixture]
|
||||
public class SqlUpdateQueryBuilderTest
|
||||
{
|
||||
private SqlUpdateQueryBuilder _sqlUpdateQueryBuilder;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_sqlUpdateQueryBuilder = new SqlUpdateQueryBuilder();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void Teardown()
|
||||
{
|
||||
_sqlUpdateQueryBuilder = null;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SqlUpdateQueryBuilderReturnsSomeCommand()
|
||||
{
|
||||
SqlCommand command = _sqlUpdateQueryBuilder.BuildCommand();
|
||||
Assert.AreNotEqual(command.CommandText, "");
|
||||
}
|
||||
}
|
||||
}
|
||||
40
mRemoteNGTests/Config/Connections/SqlUpdateTimerTests.cs
Normal file
@@ -0,0 +1,40 @@
|
||||
using mRemoteNG.Config.Connections;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace mRemoteNGTests.Config.Connections
|
||||
{
|
||||
[TestFixture]
|
||||
public class SqlUpdateTimerTests
|
||||
{
|
||||
private SqlUpdateTimer sqlUpdateChecker;
|
||||
|
||||
[SetUp]
|
||||
public void SetupSqlUpdateChecker()
|
||||
{
|
||||
sqlUpdateChecker = new SqlUpdateTimer();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void TearDownSqlUpdateChecker()
|
||||
{
|
||||
sqlUpdateChecker.Dispose();
|
||||
sqlUpdateChecker = null;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void EnableSQLUpdating()
|
||||
{
|
||||
sqlUpdateChecker.Enable();
|
||||
Assert.AreEqual(true, sqlUpdateChecker.IsUpdateCheckingEnabled());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DisableSQLUpdating()
|
||||
{
|
||||
sqlUpdateChecker.Enable();
|
||||
Assert.AreEqual(true, sqlUpdateChecker.IsUpdateCheckingEnabled());
|
||||
sqlUpdateChecker.Disable();
|
||||
Assert.AreEqual(false, sqlUpdateChecker.IsUpdateCheckingEnabled());
|
||||
}
|
||||
}
|
||||
}
|
||||
107
mRemoteNGTests/Connection/ConnectionInfoInheritanceTests.cs
Normal file
@@ -0,0 +1,107 @@
|
||||
using mRemoteNG.Connection;
|
||||
using NUnit.Framework;
|
||||
using System.Reflection;
|
||||
using System.Collections;
|
||||
|
||||
namespace mRemoteNGTests.Connection
|
||||
{
|
||||
[TestFixture]
|
||||
public class ConnectionInfoInheritanceTests
|
||||
{
|
||||
private ConnectionInfo _connectionInfo;
|
||||
private ConnectionInfoInheritance _inheritance;
|
||||
private PropertyInfo[] _inheritanceProperties = typeof(ConnectionInfoInheritance).GetProperties();
|
||||
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_connectionInfo = new ConnectionInfo();
|
||||
_inheritance = new ConnectionInfoInheritance(_connectionInfo);
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void Teardown()
|
||||
{
|
||||
_connectionInfo = null;
|
||||
_inheritance = null;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TurnOffInheritanceCompletely()
|
||||
{
|
||||
_inheritance.Username = true;
|
||||
_inheritance.TurnOffInheritanceCompletely();
|
||||
Assert.That(AllInheritancePropertiesAreFalse(), Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TurnOnInheritanceCompletely()
|
||||
{
|
||||
_inheritance.TurnOnInheritanceCompletely();
|
||||
Assert.That(AllInheritancePropertiesAreTrue(), Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void DisableInheritanceTurnsOffAllInheritance()
|
||||
{
|
||||
_inheritance.Username = true;
|
||||
_inheritance.DisableInheritance();
|
||||
Assert.That(AllInheritancePropertiesAreFalse(), Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void EnableInheritanceRestoresPreviousInheritanceValues()
|
||||
{
|
||||
_inheritance.Username = true;
|
||||
_inheritance.DisableInheritance();
|
||||
_inheritance.EnableInheritance();
|
||||
Assert.That(_inheritance.Username, Is.True);
|
||||
}
|
||||
|
||||
|
||||
private bool AllInheritancePropertiesAreTrue()
|
||||
{
|
||||
bool allPropertiesTrue = true;
|
||||
foreach (var property in _inheritanceProperties)
|
||||
{
|
||||
if (PropertyIsBoolean(property) && PropertyIsChangedWhenSettingInheritAll(property) && BooleanPropertyIsSetToFalse(property))
|
||||
allPropertiesTrue = false;
|
||||
}
|
||||
return allPropertiesTrue;
|
||||
}
|
||||
|
||||
private bool AllInheritancePropertiesAreFalse()
|
||||
{
|
||||
bool allPropertiesFalse = true;
|
||||
foreach (var property in _inheritanceProperties)
|
||||
{
|
||||
if (PropertyIsBoolean(property) && PropertyIsChangedWhenSettingInheritAll(property) && BooleanPropertyIsSetToTrue(property))
|
||||
allPropertiesFalse = false;
|
||||
}
|
||||
return allPropertiesFalse;
|
||||
}
|
||||
|
||||
private bool PropertyIsChangedWhenSettingInheritAll(PropertyInfo property)
|
||||
{
|
||||
ArrayList propertiesIgnoredByInheritAll = new ArrayList();
|
||||
propertiesIgnoredByInheritAll.Add("IsDefault");
|
||||
return propertiesIgnoredByInheritAll.Contains(property);
|
||||
}
|
||||
|
||||
private bool PropertyIsBoolean(PropertyInfo property)
|
||||
{
|
||||
return (property.PropertyType.Name == typeof(bool).Name);
|
||||
}
|
||||
|
||||
private bool BooleanPropertyIsSetToFalse(PropertyInfo property)
|
||||
{
|
||||
return (bool)property.GetValue(_inheritance) == false;
|
||||
}
|
||||
|
||||
private bool BooleanPropertyIsSetToTrue(PropertyInfo property)
|
||||
{
|
||||
return (bool)property.GetValue(_inheritance) == true;
|
||||
}
|
||||
}
|
||||
}
|
||||
250
mRemoteNGTests/ListViewTester.cs
Normal file
@@ -0,0 +1,250 @@
|
||||
#region Copyright (c) 2003-2005, Luke T. Maxon
|
||||
|
||||
/********************************************************************************************************************
|
||||
'
|
||||
' Copyright (c) 2003-2005, Luke T. Maxon
|
||||
' All rights reserved.
|
||||
'
|
||||
' Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
' that the following conditions are met:
|
||||
'
|
||||
' * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
' following disclaimer.
|
||||
'
|
||||
' * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
' the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
'
|
||||
' * Neither the name of the author nor the names of its contributors may be used to endorse or
|
||||
' promote products derived from this software without specific prior written permission.
|
||||
'
|
||||
' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
' WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
' PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
' ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
' LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
' INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
' OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
' IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
'
|
||||
'*******************************************************************************************************************/
|
||||
|
||||
#endregion
|
||||
|
||||
//Contributed by: Ian Cooper
|
||||
|
||||
using System.Collections;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace NUnit.Extensions.Forms
|
||||
{
|
||||
/// <summary>
|
||||
/// A ControlTester for testing List Views.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// It includes helper methods for selecting items from the list
|
||||
/// and for clearing those selections.</remarks>
|
||||
public class ListViewTester : ControlTester
|
||||
{
|
||||
/// <summary>
|
||||
/// Creates a ControlTester from the control name and the form instance.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// It is best to use the overloaded Constructor that requires just the name
|
||||
/// parameter if possible.
|
||||
/// </remarks>
|
||||
/// <param name="name">The Control name.</param>
|
||||
/// <param name="form">The Form instance.</param>
|
||||
public ListViewTester(string name, Form form)
|
||||
: base(name, form)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a ControlTester from the control name and the form name.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// It is best to use the overloaded Constructor that requires just the name
|
||||
/// parameter if possible.
|
||||
/// </remarks>
|
||||
/// <param name="name">The Control name.</param>
|
||||
/// <param name="formName">The Form name..</param>
|
||||
public ListViewTester(string name, string formName)
|
||||
: base(name, formName)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a ControlTester from the control name.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This is the best constructor.</remarks>
|
||||
/// <param name="name">The Control name.</param>
|
||||
public ListViewTester(string name)
|
||||
: base(name)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Creates a ControlTester from a ControlTester and an index where the
|
||||
/// original tester's name is not unique.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// It is best to use the overloaded Constructor that requires just the name
|
||||
/// parameter if possible.
|
||||
/// </remarks>
|
||||
/// <param name="tester">The ControlTester.</param>
|
||||
/// <param name="index">The index to test.</param>
|
||||
public ListViewTester(ControlTester tester, int index)
|
||||
: base(tester, index)
|
||||
{
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Allows you to find a ListViewTester by index where the name is not unique.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// This was added to support the ability to find controls where their name is
|
||||
/// not unique. If all of your controls are uniquely named (I recommend this) then
|
||||
/// you will not need this.
|
||||
/// </remarks>
|
||||
/// <value>The ControlTester at the specified index.</value>
|
||||
/// <param name="index">The index of the ListViewTester.</param>
|
||||
public new ListViewTester this[int index]
|
||||
{
|
||||
get
|
||||
{
|
||||
return new ListViewTester(this, index);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Provides access to all of the Properties of the ListBox.
|
||||
/// </summary>
|
||||
/// <remarks>
|
||||
/// Allows typed access to all of the properties of the underlying control.
|
||||
/// </remarks>
|
||||
/// <value>The underlying control.</value>
|
||||
public ListView Properties
|
||||
{
|
||||
get
|
||||
{
|
||||
return (ListView)Control;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Helper method to return the List View's Items property
|
||||
/// </summary>
|
||||
public ListView.ListViewItemCollection Items
|
||||
{
|
||||
get
|
||||
{
|
||||
return Properties.Items;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Helper method to return the columns of the list view
|
||||
/// </summary>
|
||||
public ListView.ColumnHeaderCollection Columns
|
||||
{
|
||||
get
|
||||
{
|
||||
return Properties.Columns;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Clears the selections from the list box.
|
||||
/// </summary>
|
||||
public void ClearSelected()
|
||||
{
|
||||
foreach (ListViewItem item in Properties.Items)
|
||||
{
|
||||
item.Selected = false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Selects an item in the ListBox according to its index.
|
||||
/// </summary>
|
||||
/// <param name="i">the index to select.</param>
|
||||
public void Select(int i)
|
||||
{
|
||||
Properties.Items[i].Selected = true;
|
||||
FireEvent("ItemActivate");
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Selects an item in the list according to its string value.
|
||||
/// </summary>
|
||||
/// <param name="text">The item to select.</param>
|
||||
public void Select(string text)
|
||||
{
|
||||
int index = FindItemByString(text);
|
||||
|
||||
if (ItemFound(index))
|
||||
{
|
||||
Select(index);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Multiple selection of a range of items
|
||||
/// </summary>
|
||||
/// <param name="items"></param>
|
||||
public void SelectItems(string[] items)
|
||||
{
|
||||
foreach (string item in items)
|
||||
{
|
||||
Select(item);
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Test that only the indicated items are selected
|
||||
/// </summary>
|
||||
/// <param name="matchList"></param>
|
||||
public bool SelectedItemsMatch(string[] matches)
|
||||
{
|
||||
ArrayList matchList = new ArrayList(matches);
|
||||
|
||||
if (matchList.Count != Properties.SelectedItems.Count)
|
||||
{
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach (ListViewItem item in Properties.SelectedItems)
|
||||
{
|
||||
if (!matchList.Contains(item.Text))
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
#region Implementation
|
||||
|
||||
private bool ItemFound(int index)
|
||||
{
|
||||
return index != -1;
|
||||
}
|
||||
|
||||
private int FindItemByString(string text)
|
||||
{
|
||||
for (int i = 0; i < Properties.Items.Count; i++)
|
||||
{
|
||||
if (Properties.Items[i].Text == text)
|
||||
{
|
||||
return i;
|
||||
}
|
||||
}
|
||||
|
||||
return -1;
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
36
mRemoteNGTests/Properties/AssemblyInfo.cs
Normal file
@@ -0,0 +1,36 @@
|
||||
using System.Reflection;
|
||||
using System.Runtime.CompilerServices;
|
||||
using System.Runtime.InteropServices;
|
||||
|
||||
// General Information about an assembly is controlled through the following
|
||||
// set of attributes. Change these attribute values to modify the information
|
||||
// associated with an assembly.
|
||||
[assembly: AssemblyTitle("mRemoteNGTests")]
|
||||
[assembly: AssemblyDescription("")]
|
||||
[assembly: AssemblyConfiguration("")]
|
||||
[assembly: AssemblyCompany("")]
|
||||
[assembly: AssemblyProduct("mRemoteNGTests")]
|
||||
[assembly: AssemblyCopyright("Copyright © 2016")]
|
||||
[assembly: AssemblyTrademark("")]
|
||||
[assembly: AssemblyCulture("")]
|
||||
|
||||
// Setting ComVisible to false makes the types in this assembly not visible
|
||||
// to COM components. If you need to access a type in this assembly from
|
||||
// COM, set the ComVisible attribute to true on that type.
|
||||
[assembly: ComVisible(false)]
|
||||
|
||||
// The following GUID is for the ID of the typelib if this project is exposed to COM
|
||||
[assembly: Guid("4e9583d3-2b1b-419d-bda5-f06e70e03b50")]
|
||||
|
||||
// Version information for an assembly consists of the following four values:
|
||||
//
|
||||
// Major Version
|
||||
// Minor Version
|
||||
// Build Number
|
||||
// Revision
|
||||
//
|
||||
// You can specify all the values or you can default the Build and Revision Numbers
|
||||
// by using the '*' as shown below:
|
||||
// [assembly: AssemblyVersion("1.0.*")]
|
||||
[assembly: AssemblyVersion("1.0.0.0")]
|
||||
[assembly: AssemblyFileVersion("1.0.0.0")]
|
||||
33
mRemoteNGTests/UI/Controls/CustomListViewTests.cs
Normal file
@@ -0,0 +1,33 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using mRemoteNG.Controls;
|
||||
using NUnit.Framework;
|
||||
using NUnit.Extensions.Forms;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace mRemoteNGTests.UI.Controls
|
||||
{
|
||||
public class CustomListViewTests
|
||||
{
|
||||
mRemoteNG.Controls.ListView _listView;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_listView = new mRemoteNG.Controls.ListView();
|
||||
_listView.Name = "myTestListView";
|
||||
_listView.View = System.Windows.Forms.View.Tile;
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void Teardown()
|
||||
{
|
||||
_listView.Dispose();
|
||||
while (_listView.Disposing) ;
|
||||
_listView = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
48
mRemoteNGTests/UI/Controls/TestForm.Designer.cs
generated
Normal file
@@ -0,0 +1,48 @@
|
||||
namespace mRemoteNGTests.UI.Controls
|
||||
{
|
||||
partial class TestForm
|
||||
{
|
||||
/// <summary>
|
||||
/// Required designer variable.
|
||||
/// </summary>
|
||||
private System.ComponentModel.IContainer components = null;
|
||||
|
||||
/// <summary>
|
||||
/// Clean up any resources being used.
|
||||
/// </summary>
|
||||
/// <param name="disposing">true if managed resources should be disposed; otherwise, false.</param>
|
||||
protected override void Dispose(bool disposing)
|
||||
{
|
||||
if (disposing && (components != null))
|
||||
{
|
||||
components.Dispose();
|
||||
}
|
||||
base.Dispose(disposing);
|
||||
}
|
||||
|
||||
#region Windows Form Designer generated code
|
||||
|
||||
/// <summary>
|
||||
/// Required method for Designer support - do not modify
|
||||
/// the contents of this method with the code editor.
|
||||
/// </summary>
|
||||
private void InitializeComponent()
|
||||
{
|
||||
this.SuspendLayout();
|
||||
//
|
||||
// TestForm
|
||||
//
|
||||
this.AutoScaleDimensions = new System.Drawing.SizeF(6F, 13F);
|
||||
this.AutoScaleMode = System.Windows.Forms.AutoScaleMode.Font;
|
||||
this.ClientSize = new System.Drawing.Size(284, 262);
|
||||
this.Name = "TestForm";
|
||||
this.Text = "TestForm";
|
||||
this.ResumeLayout(false);
|
||||
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
}
|
||||
}
|
||||
25
mRemoteNGTests/UI/Controls/TestForm.cs
Normal file
@@ -0,0 +1,25 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Drawing;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Windows.Forms;
|
||||
|
||||
namespace mRemoteNGTests.UI.Controls
|
||||
{
|
||||
public partial class TestForm : Form
|
||||
{
|
||||
public TestForm()
|
||||
{
|
||||
InitializeComponent();
|
||||
}
|
||||
|
||||
private void listView1_SelectedIndexChanged(object sender, EventArgs e)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
120
mRemoteNGTests/UI/Controls/TestForm.resx
Normal file
@@ -0,0 +1,120 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<root>
|
||||
<!--
|
||||
Microsoft ResX Schema
|
||||
|
||||
Version 2.0
|
||||
|
||||
The primary goals of this format is to allow a simple XML format
|
||||
that is mostly human readable. The generation and parsing of the
|
||||
various data types are done through the TypeConverter classes
|
||||
associated with the data types.
|
||||
|
||||
Example:
|
||||
|
||||
... ado.net/XML headers & schema ...
|
||||
<resheader name="resmimetype">text/microsoft-resx</resheader>
|
||||
<resheader name="version">2.0</resheader>
|
||||
<resheader name="reader">System.Resources.ResXResourceReader, System.Windows.Forms, ...</resheader>
|
||||
<resheader name="writer">System.Resources.ResXResourceWriter, System.Windows.Forms, ...</resheader>
|
||||
<data name="Name1"><value>this is my long string</value><comment>this is a comment</comment></data>
|
||||
<data name="Color1" type="System.Drawing.Color, System.Drawing">Blue</data>
|
||||
<data name="Bitmap1" mimetype="application/x-microsoft.net.object.binary.base64">
|
||||
<value>[base64 mime encoded serialized .NET Framework object]</value>
|
||||
</data>
|
||||
<data name="Icon1" type="System.Drawing.Icon, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||
<value>[base64 mime encoded string representing a byte array form of the .NET Framework object]</value>
|
||||
<comment>This is a comment</comment>
|
||||
</data>
|
||||
|
||||
There are any number of "resheader" rows that contain simple
|
||||
name/value pairs.
|
||||
|
||||
Each data row contains a name, and value. The row also contains a
|
||||
type or mimetype. Type corresponds to a .NET class that support
|
||||
text/value conversion through the TypeConverter architecture.
|
||||
Classes that don't support this are serialized and stored with the
|
||||
mimetype set.
|
||||
|
||||
The mimetype is used for serialized objects, and tells the
|
||||
ResXResourceReader how to depersist the object. This is currently not
|
||||
extensible. For a given mimetype the value must be set accordingly:
|
||||
|
||||
Note - application/x-microsoft.net.object.binary.base64 is the format
|
||||
that the ResXResourceWriter will generate, however the reader can
|
||||
read any of the formats listed below.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.binary.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Binary.BinaryFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.soap.base64
|
||||
value : The object must be serialized with
|
||||
: System.Runtime.Serialization.Formatters.Soap.SoapFormatter
|
||||
: and then encoded with base64 encoding.
|
||||
|
||||
mimetype: application/x-microsoft.net.object.bytearray.base64
|
||||
value : The object must be serialized into a byte array
|
||||
: using a System.ComponentModel.TypeConverter
|
||||
: and then encoded with base64 encoding.
|
||||
-->
|
||||
<xsd:schema id="root" xmlns="" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:msdata="urn:schemas-microsoft-com:xml-msdata">
|
||||
<xsd:import namespace="http://www.w3.org/XML/1998/namespace" />
|
||||
<xsd:element name="root" msdata:IsDataSet="true">
|
||||
<xsd:complexType>
|
||||
<xsd:choice maxOccurs="unbounded">
|
||||
<xsd:element name="metadata">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" use="required" type="xsd:string" />
|
||||
<xsd:attribute name="type" type="xsd:string" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="assembly">
|
||||
<xsd:complexType>
|
||||
<xsd:attribute name="alias" type="xsd:string" />
|
||||
<xsd:attribute name="name" type="xsd:string" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="data">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
<xsd:element name="comment" type="xsd:string" minOccurs="0" msdata:Ordinal="2" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" msdata:Ordinal="1" />
|
||||
<xsd:attribute name="type" type="xsd:string" msdata:Ordinal="3" />
|
||||
<xsd:attribute name="mimetype" type="xsd:string" msdata:Ordinal="4" />
|
||||
<xsd:attribute ref="xml:space" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
<xsd:element name="resheader">
|
||||
<xsd:complexType>
|
||||
<xsd:sequence>
|
||||
<xsd:element name="value" type="xsd:string" minOccurs="0" msdata:Ordinal="1" />
|
||||
</xsd:sequence>
|
||||
<xsd:attribute name="name" type="xsd:string" use="required" />
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:choice>
|
||||
</xsd:complexType>
|
||||
</xsd:element>
|
||||
</xsd:schema>
|
||||
<resheader name="resmimetype">
|
||||
<value>text/microsoft-resx</value>
|
||||
</resheader>
|
||||
<resheader name="version">
|
||||
<value>2.0</value>
|
||||
</resheader>
|
||||
<resheader name="reader">
|
||||
<value>System.Resources.ResXResourceReader, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
<resheader name="writer">
|
||||
<value>System.Resources.ResXResourceWriter, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||
</resheader>
|
||||
</root>
|
||||
35
mRemoteNGTests/UI/Forms/OptionsFormSetupAndTeardown.cs
Normal file
@@ -0,0 +1,35 @@
|
||||
using mRemoteNG.App;
|
||||
using mRemoteNG.Messages;
|
||||
using mRemoteNG.UI.Window;
|
||||
using NUnit.Framework;
|
||||
using mRemoteNG.UI.Forms;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
|
||||
namespace mRemoteNGTests.UI.Forms
|
||||
{
|
||||
public class OptionsFormSetupAndTeardown
|
||||
{
|
||||
protected frmOptions _optionsForm;
|
||||
|
||||
[OneTimeSetUp]
|
||||
public void OnetimeSetup()
|
||||
{
|
||||
Runtime.MessageCollector = new MessageCollector(new ErrorAndInfoWindow(new DockContent()));
|
||||
}
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_optionsForm = new frmOptions();
|
||||
_optionsForm.Show();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void Teardown()
|
||||
{
|
||||
_optionsForm.Dispose();
|
||||
while (_optionsForm.Disposing) ;
|
||||
_optionsForm = null;
|
||||
}
|
||||
}
|
||||
}
|
||||
44
mRemoteNGTests/UI/Forms/OptionsFormTests.cs
Normal file
@@ -0,0 +1,44 @@
|
||||
using mRemoteNG.App;
|
||||
using mRemoteNG.Controls;
|
||||
using mRemoteNG.Forms;
|
||||
using mRemoteNG.Messages;
|
||||
using mRemoteNG.UI.Window;
|
||||
using NUnit.Extensions.Forms;
|
||||
using NUnit.Framework;
|
||||
using System;
|
||||
using System.Threading;
|
||||
using WeifenLuo.WinFormsUI.Docking;
|
||||
|
||||
namespace mRemoteNGTests.UI.Forms
|
||||
{
|
||||
[TestFixture]
|
||||
public class OptionsFormTests : OptionsFormSetupAndTeardown
|
||||
{
|
||||
[Test]
|
||||
public void ClickingCloseButtonClosesTheForm()
|
||||
{
|
||||
bool eventFired = false;
|
||||
_optionsForm.FormClosed += (o, e) => eventFired = true;
|
||||
ButtonTester cancelButton = new ButtonTester("CancelButtonControl", _optionsForm);
|
||||
cancelButton.Click();
|
||||
Assert.That(eventFired, Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ClickingOKButtonClosesTheForm()
|
||||
{
|
||||
bool eventFired = false;
|
||||
_optionsForm.FormClosed += (o, e) => eventFired = true;
|
||||
ButtonTester cancelButton = new ButtonTester("OkButton", _optionsForm);
|
||||
cancelButton.Click();
|
||||
Assert.That(eventFired, Is.True);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ListViewContainsOptionsPages()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items.Count, Is.EqualTo(8));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using mRemoteNGTests.UI.Forms;
|
||||
using NUnit.Extensions.Forms;
|
||||
|
||||
namespace mRemoteNGTests.UI.Forms.OptionsPages
|
||||
{
|
||||
[TestFixture]
|
||||
public class OptionsAdvancedPageTests : OptionsFormSetupAndTeardown
|
||||
{
|
||||
[Test]
|
||||
public void AdvancedPageLinkExistsInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[7].Text, Does.Match("Advanced"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void AdvancedIconShownInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[7].ImageList, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SelectingAdvancedPageLoadsSettings()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
listViewTester.Select("Advanced");
|
||||
CheckBoxTester checkboxTester = new CheckBoxTester("chkWriteLogFile", _optionsForm);
|
||||
Assert.That(checkboxTester.Text, Does.Match("Write log file"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using mRemoteNGTests.UI.Forms;
|
||||
using NUnit.Extensions.Forms;
|
||||
|
||||
namespace mRemoteNGTests.UI.Forms.OptionsPages
|
||||
{
|
||||
[TestFixture]
|
||||
public class OptionsAppearancePageTests : OptionsFormSetupAndTeardown
|
||||
{
|
||||
[Test]
|
||||
public void AppearancePageLinkExistsInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[1].Text, Does.Match("Appearance"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void IconShownInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[1].ImageList, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SelectingAppearancePageLoadsSettings()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
listViewTester.Select("Appearance");
|
||||
CheckBoxTester checkboxTester = new CheckBoxTester("chkShowSystemTrayIcon", _optionsForm);
|
||||
Assert.That(checkboxTester.Text, Does.Match("show notification area icon"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using mRemoteNGTests.UI.Forms;
|
||||
using NUnit.Extensions.Forms;
|
||||
|
||||
namespace mRemoteNGTests.UI.Forms.OptionsPages
|
||||
{
|
||||
[TestFixture]
|
||||
public class OptionsConnectionsPageTests : OptionsFormSetupAndTeardown
|
||||
{
|
||||
[Test]
|
||||
public void ConnectionsPageLinkExistsInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[3].Text, Does.Match("Connections"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ConnectionsIconShownInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[3].ImageList, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SelectingConnectionsPageLoadsSettings()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
listViewTester.Select("Connections");
|
||||
CheckBoxTester checkboxTester = new CheckBoxTester("chkSingleClickOnConnectionOpensIt", _optionsForm);
|
||||
Assert.That(checkboxTester.Text, Does.Match("Single click on connection"));
|
||||
}
|
||||
}
|
||||
}
|
||||
34
mRemoteNGTests/UI/Forms/OptionsPages/OptionsSQLPageTests.cs
Normal file
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using mRemoteNGTests.UI.Forms;
|
||||
using NUnit.Extensions.Forms;
|
||||
|
||||
namespace mRemoteNGTests.UI.Forms.OptionsPages
|
||||
{
|
||||
[TestFixture]
|
||||
public class OptionsSQLPageTests : OptionsFormSetupAndTeardown
|
||||
{
|
||||
[Test]
|
||||
public void SQLPageLinkExistsInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[4].Text, Does.Match("SQL Server"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SQLIconShownInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[4].ImageList, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SelectingSQLPageLoadsSettings()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
listViewTester.Select("SQL Server");
|
||||
CheckBoxTester checkboxTester = new CheckBoxTester("chkUseSQLServer", _optionsForm);
|
||||
Assert.That(checkboxTester.Text, Does.Match("Use SQL"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using mRemoteNGTests.UI.Forms;
|
||||
using NUnit.Extensions.Forms;
|
||||
|
||||
namespace mRemoteNGTests.UI.Forms.OptionsPages
|
||||
{
|
||||
[TestFixture]
|
||||
public class OptionsStartupExitPageTests : OptionsFormSetupAndTeardown
|
||||
{
|
||||
[Test]
|
||||
public void StartupExitPageLinkExistsInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[0].Text, Does.Match("Startup/Exit"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void IconShownInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[0].ImageList, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SelectingStartupExitPageLoadsSettings()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
listViewTester.Select("Startup/Exit");
|
||||
CheckBoxTester checkboxTester = new CheckBoxTester("chkSaveConsOnExit", _optionsForm);
|
||||
Assert.That(checkboxTester.Text, Does.Match("Save connections"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using NUnit.Extensions.Forms;
|
||||
using NUnit.Framework;
|
||||
|
||||
namespace mRemoteNGTests.UI.Forms.OptionsPages
|
||||
{
|
||||
[TestFixture]
|
||||
public class OptionsTabsPanelPageTests : OptionsFormSetupAndTeardown
|
||||
{
|
||||
[Test]
|
||||
public void TabsPanelPageLinkExistsInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[2].Text, Does.Match("Tabs & Panels"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void TabsPanelIconShownInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[2].ImageList, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SelectingTabsPanelPageLoadsSettings()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
listViewTester.Select("Tabs & Panels");
|
||||
CheckBoxTester checkboxTester = new CheckBoxTester("chkAlwaysShowPanelTabs", _optionsForm);
|
||||
Assert.That(checkboxTester.Text, Does.Match("Always show panel tabs"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,34 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using mRemoteNGTests.UI.Forms;
|
||||
using NUnit.Extensions.Forms;
|
||||
|
||||
namespace mRemoteNGTests.UI.Forms.OptionsPages
|
||||
{
|
||||
[TestFixture]
|
||||
public class OptionsThemePageTests : OptionsFormSetupAndTeardown
|
||||
{
|
||||
[Test]
|
||||
public void ThemePageLinkExistsInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[6].Text, Does.Match("Theme"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ThemeIconShownInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[6].ImageList, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SelectingThemePageLoadsSettings()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
listViewTester.Select("Theme");
|
||||
ButtonTester buttonTester = new ButtonTester("btnThemeNew", _optionsForm);
|
||||
Assert.That(buttonTester.Text, Does.Match("New"));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,32 @@
|
||||
using NUnit.Framework;
|
||||
using NUnit.Extensions.Forms;
|
||||
|
||||
namespace mRemoteNGTests.UI.Forms.OptionsPages
|
||||
{
|
||||
[TestFixture]
|
||||
public class OptionsUpdatesPageTests : OptionsFormSetupAndTeardown
|
||||
{
|
||||
[Test]
|
||||
public void UpdatesPageLinkExistsInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[5].Text, Does.Match("Updates"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void UpdatesIconShownInListView()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
Assert.That(listViewTester.Items[5].ImageList, Is.Not.Null);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void SelectingUpdatesPageLoadsSettings()
|
||||
{
|
||||
ListViewTester listViewTester = new ListViewTester("PageListView", _optionsForm);
|
||||
listViewTester.Select("Updates");
|
||||
CheckBoxTester checkboxTester = new CheckBoxTester("chkCheckForUpdatesOnStartup", _optionsForm);
|
||||
Assert.That(checkboxTester.Text, Does.Match("Check for updates"));
|
||||
}
|
||||
}
|
||||
}
|
||||
50
mRemoteNGTests/UI/Forms/PasswordFormTests.cs
Normal file
@@ -0,0 +1,50 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using NUnit.Framework;
|
||||
using NUnit.Extensions.Forms;
|
||||
using System.Threading.Tasks;
|
||||
using mRemoteNG.Forms;
|
||||
using mRemoteNG.UI.Forms;
|
||||
|
||||
namespace mRemoteNGTests.UI.Forms
|
||||
{
|
||||
[TestFixture]
|
||||
public class PasswordFormTests
|
||||
{
|
||||
PasswordForm _passwordForm;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_passwordForm = new PasswordForm();
|
||||
_passwordForm.Show();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void Teardown()
|
||||
{
|
||||
_passwordForm.Dispose();
|
||||
while (_passwordForm.Disposing) ;
|
||||
_passwordForm = null;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void PasswordFormText()
|
||||
{
|
||||
FormTester formTester = new FormTester("PasswordForm");
|
||||
Assert.That(formTester.Text, Does.Match("Password"));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ClickingCancelClosesPasswordForm()
|
||||
{
|
||||
bool eventFired = false;
|
||||
_passwordForm.FormClosed += (o, e) => eventFired = true;
|
||||
ButtonTester cancelButton = new ButtonTester("btnCancel", _passwordForm);
|
||||
cancelButton.Click();
|
||||
Assert.That(eventFired, Is.True);
|
||||
}
|
||||
}
|
||||
}
|
||||
138
mRemoteNGTests/UI/WindowListTests.cs
Normal file
@@ -0,0 +1,138 @@
|
||||
using System;
|
||||
using NUnit.Framework;
|
||||
using mRemoteNG.UI.Window;
|
||||
|
||||
namespace mRemoteNGTests.UI
|
||||
{
|
||||
[TestFixture]
|
||||
public class WindowListTests
|
||||
{
|
||||
private WindowList _windowList;
|
||||
|
||||
[SetUp]
|
||||
public void Setup()
|
||||
{
|
||||
_windowList = new WindowList();
|
||||
}
|
||||
|
||||
[TearDown]
|
||||
public void Teardown()
|
||||
{
|
||||
_windowList = null;
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void EmptyWhenInitialized()
|
||||
{
|
||||
Assert.That(_windowList, Is.Empty);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void WindowIsInListAfterBeingAdded()
|
||||
{
|
||||
BaseWindow window = new BaseWindow();
|
||||
_windowList.Add(window);
|
||||
Assert.That(_windowList, Has.Member(window));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void WindowsAreInListAfterCallingAddRange()
|
||||
{
|
||||
BaseWindow window1 = new BaseWindow();
|
||||
BaseWindow window2 = new BaseWindow();
|
||||
BaseWindow window3 = new BaseWindow();
|
||||
BaseWindow[] windowArray = new BaseWindow[] {window1, window2, window3};
|
||||
_windowList.AddRange(windowArray);
|
||||
Assert.That(_windowList, Contains.Item(window1));
|
||||
Assert.That(_windowList, Contains.Item(window2));
|
||||
Assert.That(_windowList, Contains.Item(window3));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CountReturnsCorrectNumberOfElements()
|
||||
{
|
||||
_windowList.Add(new BaseWindow());
|
||||
_windowList.Add(new BaseWindow());
|
||||
_windowList.Add(new BaseWindow());
|
||||
Assert.That(_windowList.Count, Is.EqualTo(3));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void IndexingByObjectReturnsTheCorrectObject()
|
||||
{
|
||||
BaseWindow window1 = new BaseWindow();
|
||||
BaseWindow window2 = new BaseWindow();
|
||||
_windowList.Add(window1);
|
||||
_windowList.Add(window2);
|
||||
Assert.That(_windowList[window1], Is.EqualTo(window1));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void IndexingByNumberReturnsTheCorrectObject()
|
||||
{
|
||||
BaseWindow window1 = new BaseWindow();
|
||||
BaseWindow window2 = new BaseWindow();
|
||||
_windowList.Add(window1);
|
||||
_windowList.Add(window2);
|
||||
Assert.That(_windowList[1], Is.EqualTo(window2));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ThrowsExceptionWhenIndexingByObjectFails()
|
||||
{
|
||||
BaseWindow window1 = new BaseWindow();
|
||||
Assert.That(() => _windowList[window1], Throws.TypeOf<ArgumentOutOfRangeException>());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ItemIsNotInListAfterBeingRemoved()
|
||||
{
|
||||
BaseWindow window1 = new BaseWindow();
|
||||
BaseWindow window2 = new BaseWindow();
|
||||
_windowList.Add(window1);
|
||||
_windowList.Add(window2);
|
||||
_windowList.Remove(window1);
|
||||
Assert.That(() => _windowList[window1], Throws.TypeOf<ArgumentOutOfRangeException>());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ThrowsExceptionWhenIndexingPastListBounds()
|
||||
{
|
||||
BaseWindow window1 = new BaseWindow();
|
||||
_windowList.Add(window1);
|
||||
Assert.That(() => _windowList[100], Throws.TypeOf<ArgumentOutOfRangeException>());
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void CountIsReducedAfterItemRemoved()
|
||||
{
|
||||
BaseWindow window1 = new BaseWindow();
|
||||
BaseWindow window2 = new BaseWindow();
|
||||
_windowList.Add(window1);
|
||||
_windowList.Add(window2);
|
||||
_windowList.Remove(window1);
|
||||
Assert.That(_windowList.Count, Is.EqualTo(1));
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void ListIsEmptyAfterLastItemRemoved()
|
||||
{
|
||||
BaseWindow window1 = new BaseWindow();
|
||||
_windowList.Add(window1);
|
||||
_windowList.Remove(window1);
|
||||
Assert.That(_windowList, Is.Empty);
|
||||
}
|
||||
|
||||
[Test]
|
||||
public void GetWindowFromStringReturnsCorrectObject()
|
||||
{
|
||||
BaseWindow window1 = new BaseWindow();
|
||||
window1.SetFormText("TheWindowWeWant");
|
||||
BaseWindow window2 = new BaseWindow();
|
||||
window2.SetFormText("WeDontWantThisWindow");
|
||||
_windowList.Add(window1);
|
||||
_windowList.Add(window2);
|
||||
Assert.That(_windowList.FromString("TheWindowWeWant"), Is.EqualTo(window1));
|
||||
}
|
||||
}
|
||||
}
|
||||
137
mRemoteNGTests/mRemoteNGTests.csproj
Normal file
@@ -0,0 +1,137 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<Project ToolsVersion="12.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||
<PropertyGroup>
|
||||
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
|
||||
<Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform>
|
||||
<ProjectGuid>{1453B37F-8621-499E-B0B2-6091F76DC0BB}</ProjectGuid>
|
||||
<OutputType>Library</OutputType>
|
||||
<AppDesignerFolder>Properties</AppDesignerFolder>
|
||||
<RootNamespace>mRemoteNGTests</RootNamespace>
|
||||
<AssemblyName>mRemoteNGTests</AssemblyName>
|
||||
<TargetFrameworkVersion>v4.5</TargetFrameworkVersion>
|
||||
<FileAlignment>512</FileAlignment>
|
||||
<ProjectTypeGuids>{3AC096D0-A1C2-E12C-1390-A8335801FDAB};{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}</ProjectTypeGuids>
|
||||
<VisualStudioVersion Condition="'$(VisualStudioVersion)' == ''">10.0</VisualStudioVersion>
|
||||
<VSToolsPath Condition="'$(VSToolsPath)' == ''">$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v$(VisualStudioVersion)</VSToolsPath>
|
||||
<ReferencePath>$(ProgramFiles)\Common Files\microsoft shared\VSTT\$(VisualStudioVersion)\UITestExtensionPackages</ReferencePath>
|
||||
<IsCodedUITest>False</IsCodedUITest>
|
||||
<TestProjectType>UnitTest</TestProjectType>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||
<DebugSymbols>true</DebugSymbols>
|
||||
<DebugType>full</DebugType>
|
||||
<Optimize>false</Optimize>
|
||||
<OutputPath>bin\Debug\</OutputPath>
|
||||
<DefineConstants>DEBUG;TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' ">
|
||||
<DebugType>pdbonly</DebugType>
|
||||
<Optimize>true</Optimize>
|
||||
<OutputPath>bin\Release\</OutputPath>
|
||||
<DefineConstants>TRACE</DefineConstants>
|
||||
<ErrorReport>prompt</ErrorReport>
|
||||
<WarningLevel>4</WarningLevel>
|
||||
<PlatformTarget>x86</PlatformTarget>
|
||||
</PropertyGroup>
|
||||
<ItemGroup>
|
||||
<Reference Include="log4net, Version=1.2.10.0, Culture=neutral, PublicKeyToken=1b44e1d426115821, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\mRemoteV1\References\log4net.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="NSubstitute, Version=1.10.0.0, Culture=neutral, PublicKeyToken=92dd2e9066daa5ca, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NSubstitute.1.10.0.0\lib\net45\NSubstitute.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="nunit.framework, Version=3.2.0.0, Culture=neutral, PublicKeyToken=2638cd05610744eb, processorArchitecture=MSIL">
|
||||
<HintPath>..\packages\NUnit.3.2.0\lib\net45\nunit.framework.dll</HintPath>
|
||||
<Private>True</Private>
|
||||
</Reference>
|
||||
<Reference Include="NUnitForms">
|
||||
<HintPath>nUnitForms\bin\NUnitForms.dll</HintPath>
|
||||
</Reference>
|
||||
<Reference Include="System" />
|
||||
<Reference Include="System.Data" />
|
||||
<Reference Include="System.Drawing" />
|
||||
<Reference Include="System.Windows.Forms" />
|
||||
<Reference Include="System.Xml" />
|
||||
<Reference Include="WeifenLuo.WinFormsUI.Docking, Version=2.5.0.15095, Culture=neutral, processorArchitecture=MSIL">
|
||||
<SpecificVersion>False</SpecificVersion>
|
||||
<HintPath>..\mRemoteV1\References\WeifenLuo.WinFormsUI.Docking.dll</HintPath>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
<Choose>
|
||||
<When Condition="('$(VisualStudioVersion)' == '10.0' or '$(VisualStudioVersion)' == '') and '$(TargetFrameworkVersion)' == 'v3.5'">
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework, Version=10.1.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL" />
|
||||
</ItemGroup>
|
||||
</When>
|
||||
<Otherwise>
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.VisualStudio.QualityTools.UnitTestFramework" />
|
||||
</ItemGroup>
|
||||
</Otherwise>
|
||||
</Choose>
|
||||
<ItemGroup>
|
||||
<Compile Include="App\LoggerTests.cs" />
|
||||
<Compile Include="Connection\ConnectionInfoInheritanceTests.cs" />
|
||||
<Compile Include="ListViewTester.cs" />
|
||||
<Compile Include="Config\Connections\SqlConnectionUpdateCheckerTests.cs" />
|
||||
<Compile Include="Config\Connections\SqlUpdateQueryBuilderTest.cs" />
|
||||
<Compile Include="Config\Connections\SqlUpdateTimerTests.cs" />
|
||||
<Compile Include="Properties\AssemblyInfo.cs" />
|
||||
<Compile Include="UI\Controls\CustomListViewTests.cs" />
|
||||
<Compile Include="UI\Controls\TestForm.cs">
|
||||
<SubType>Form</SubType>
|
||||
</Compile>
|
||||
<Compile Include="UI\Controls\TestForm.Designer.cs">
|
||||
<DependentUpon>TestForm.cs</DependentUpon>
|
||||
</Compile>
|
||||
<Compile Include="UI\Forms\OptionsFormSetupAndTeardown.cs" />
|
||||
<Compile Include="UI\Forms\PasswordFormTests.cs" />
|
||||
<Compile Include="UI\WindowListTests.cs" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<None Include="packages.config" />
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<ProjectReference Include="..\mRemoteV1\mRemoteV1.csproj">
|
||||
<Project>{4934a491-40bc-4e5b-9166-ea1169a220f6}</Project>
|
||||
<Name>mRemoteV1</Name>
|
||||
</ProjectReference>
|
||||
</ItemGroup>
|
||||
<ItemGroup>
|
||||
<EmbeddedResource Include="UI\Controls\TestForm.resx">
|
||||
<DependentUpon>TestForm.cs</DependentUpon>
|
||||
</EmbeddedResource>
|
||||
</ItemGroup>
|
||||
<Choose>
|
||||
<When Condition="'$(VisualStudioVersion)' == '10.0' And '$(IsCodedUITest)' == 'True'">
|
||||
<ItemGroup>
|
||||
<Reference Include="Microsoft.VisualStudio.QualityTools.CodedUITestFramework, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.VisualStudio.TestTools.UITest.Common, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.VisualStudio.TestTools.UITest.Extension, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
<Reference Include="Microsoft.VisualStudio.TestTools.UITesting, Version=10.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||
<Private>False</Private>
|
||||
</Reference>
|
||||
</ItemGroup>
|
||||
</When>
|
||||
</Choose>
|
||||
<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
|
||||
<Import Project="$(MSBuildToolsPath)\Microsoft.CSharp.targets" />
|
||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||
Other similar extension points exist, see Microsoft.Common.targets.
|
||||
<Target Name="BeforeBuild">
|
||||
</Target>
|
||||
<Target Name="AfterBuild">
|
||||
</Target>
|
||||
-->
|
||||
</Project>
|
||||
75
mRemoteNGTests/nUnitForms/bin/Coverage.xsl
Normal file
@@ -0,0 +1,75 @@
|
||||
<!DOCTYPE internal [
|
||||
<!ENTITY nbsp " ">
|
||||
]>
|
||||
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
|
||||
xmlns:msxsl="urn:schemas-microsoft-com:xslt">
|
||||
|
||||
<xsl:template match="coverage">
|
||||
<html>
|
||||
<head>
|
||||
<title>Code Coverage Report</title>
|
||||
<style>BODY { font-family: Trebuchet MS; font-size: 10pt; }
|
||||
TD { font-family: Trebuchet MS; font-size: 10pt; }
|
||||
.title { font-size: 20pt; font-weight: bold; }
|
||||
.assembly { font-size: 14pt; }
|
||||
.module { color: navy; font-size: 8pt; }
|
||||
.method { color: maroon; font-size: 12pt; font-weight: bold; }
|
||||
.subtitle { color: black; font-size: 12pt; font-weight: bold; }
|
||||
.hdrcell { background-color: #DDEEFF; }
|
||||
.datacell { background-color: #FFFFEE; text-align: right; }
|
||||
.gooddatacell {background-color: #CCFFCC; text-align: right; }
|
||||
.hldatacell { background-color: #FFCCCC; text-align: right; }
|
||||
</style>
|
||||
</head>
|
||||
<body>
|
||||
<div class="title">Code Coverage Report</div>
|
||||
<p></p>
|
||||
<xsl:apply-templates select="module" />
|
||||
</body>
|
||||
</html>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="module">
|
||||
<div class="assembly"><xsl:value-of select="@assembly"/></div>
|
||||
<div class="module"><xsl:value-of select="@name"/></div>
|
||||
<p></p>
|
||||
<xsl:apply-templates select="method"/>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="method">
|
||||
<div class="method"><xsl:value-of select="@class"/>.<xsl:value-of select="@name"/></div>
|
||||
<table border="1" cellpadding="3" cellspacing="0" bordercolor="black">
|
||||
<tr>
|
||||
<td class="hdrcell">Visit Count</td>
|
||||
<td class="hdrcell">Line</td>
|
||||
<td class="hdrcell">Column</td>
|
||||
<td class="hdrcell">End Line</td>
|
||||
<td class="hdrcell">End Column</td>
|
||||
<td class="hdrcell">Document</td>
|
||||
</tr>
|
||||
<xsl:apply-templates select="seqpnt"/>
|
||||
</table>
|
||||
<p></p>
|
||||
</xsl:template>
|
||||
|
||||
<xsl:template match="seqpnt">
|
||||
<tr>
|
||||
<td class="datacell">
|
||||
<xsl:attribute name="class">
|
||||
<xsl:choose>
|
||||
<xsl:when test="@visitcount = 0">hldatacell</xsl:when>
|
||||
<xsl:when test="@visitcount != 0">gooddatacell</xsl:when>
|
||||
<xsl:otherwise>datacell</xsl:otherwise>
|
||||
</xsl:choose>
|
||||
</xsl:attribute>
|
||||
<xsl:value-of select="@visitcount"/>
|
||||
</td>
|
||||
<td class="datacell"><xsl:value-of select="@line"/></td>
|
||||
<td class="datacell"><xsl:value-of select="@column"/></td>
|
||||
<td class="datacell"><xsl:value-of select="@endline"/></td>
|
||||
<td class="datacell"><xsl:value-of select="@endcolumn"/></td>
|
||||
<td class="datacell"><xsl:value-of select="@document"/></td>
|
||||
</tr>
|
||||
</xsl:template>
|
||||
|
||||
</xsl:stylesheet>
|
||||
BIN
mRemoteNGTests/nUnitForms/bin/NUnitForms.Example.exe
Normal file
BIN
mRemoteNGTests/nUnitForms/bin/NUnitForms.Recorder.dll
Normal file
BIN
mRemoteNGTests/nUnitForms/bin/NUnitForms.Recorder.exe
Normal file
BIN
mRemoteNGTests/nUnitForms/bin/NUnitForms.Test.dll
Normal file
BIN
mRemoteNGTests/nUnitForms/bin/NUnitForms.dll
Normal file
2320
mRemoteNGTests/nUnitForms/bin/NUnitForms.xml
Normal file
463
mRemoteNGTests/nUnitForms/bin/TestResult.xml
Normal file
@@ -0,0 +1,463 @@
|
||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
||||
<!--This file represents the results of running a test suite-->
|
||||
<test-results name="C:\Documents and Settings\Maxon Family\Desktop\nf\NUnitForms-v1.3.1-src\build\bin\Project1.nunit" total="180" failures="0" not-run="3" date="11/6/2004" time="4:12 PM">
|
||||
<test-suite name="C:\Documents and Settings\Maxon Family\Desktop\nf\NUnitForms-v1.3.1-src\build\bin\Project1.nunit" success="True" time="6.234375" asserts="0">
|
||||
<results>
|
||||
<test-suite name="C:\Documents and Settings\Maxon Family\Desktop\nf\NUnitForms-v1.3.1-src\build\bin\NUnitForms.Test.dll" success="True" time="5.90625" asserts="0">
|
||||
<results>
|
||||
<test-suite name="NUnit" success="True" time="5.875" asserts="0">
|
||||
<results>
|
||||
<test-suite name="Extensions" success="True" time="5.859375" asserts="0">
|
||||
<results>
|
||||
<test-suite name="Forms" success="True" time="5.8125" asserts="0">
|
||||
<results>
|
||||
<test-suite name="Test" success="True" time="5.046875" asserts="0">
|
||||
<results>
|
||||
<test-suite name="FactoryTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FactoryTest.New" executed="True" success="True" time="0.016" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FactoryTest.NewException" executed="True" success="True" time="0.000" asserts="0" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="SupportsAssertExtensionTest" success="True" time="0.03125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportsAssertExtensionTest.BaseClassIsTrue" executed="True" success="True" time="0.016" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportsAssertExtensionTest.BaseClassIsFalse" executed="True" success="True" time="0.000" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportsAssertExtensionTest.BaseClassAreEqual" executed="True" success="True" time="0.016" asserts="10" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportsAssertExtensionTest.BaseClassAreSame" executed="True" success="True" time="0.000" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportsAssertExtensionTest.BaseClassAssertFail" executed="True" success="True" time="0.000" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportsAssertExtensionTest.BaseClassAssertFailMessage" executed="True" success="True" time="0.000" asserts="0" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="SupportsAssertionExtensionTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportsAssertionExtensionTest.BaseClassAssert" executed="True" success="True" time="0.000" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportsAssertionExtensionTest.BaseClassAssertEquals" executed="True" success="True" time="0.000" asserts="8" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportsAssertionExtensionTest.BaseClassAssertSame" executed="True" success="True" time="0.016" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportsAssertionExtensionTest.BaseClassAssertFail" executed="True" success="True" time="0.000" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportsAssertionExtensionTest.BaseClassAssertFailMessage" executed="True" success="True" time="0.000" asserts="0" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="SupportCurrentFormPropertyTest" success="True" time="0.046875" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportCurrentFormPropertyTest.ButtonClick" executed="True" success="True" time="0.047" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="SupportFormSpecificationTest" success="True" time="0" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportFormSpecificationTest.ButtonClick" executed="True" success="True" time="0.000" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="SupportFormTypeTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SupportFormTypeTest.ButtonClick" executed="True" success="True" time="0.016" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ButtonTest" success="True" time="0.03125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ButtonTest.ButtonClick" executed="True" success="True" time="0.000" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ButtonTest.ButtonText" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ButtonTest.FireEvent" executed="True" success="True" time="0.000" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ButtonTest.FireEventWithArg" executed="True" success="True" time="0.016" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="CheckBoxTest" success="True" time="0.03125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.CheckBoxTest.Check" executed="True" success="True" time="0.016" asserts="3" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.CheckBoxTest.UnCheck" executed="True" success="True" time="0.000" asserts="3" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.CheckBoxTest.UnCheck2" executed="True" success="True" time="0.016" asserts="3" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.CheckBoxTest.ToggleWithValue" executed="True" success="True" time="0.000" asserts="3" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ComboBoxTest" success="True" time="0.0625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ComboBoxTest.TextBox" executed="True" success="True" time="0.016" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ComboBoxTest.Select" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ComboBoxTest.SelectByText" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ComboBoxTest.SelectByBadText" executed="True" success="True" time="0.000" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ComboBoxTest.MethodInvokeOnControlTester" executed="True" success="True" time="0.016" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ContextMenuTest" success="True" time="0.078125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ContextMenuTest.ContextMenuClick" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ContextMenuTest.GeneratedTest" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ContextMenuTest.NoSuchControlFinder" executed="True" success="True" time="0.000" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ContextMenuTest.AmbiguousNameBecauseWeUseTextNotNameForMenuItems" executed="True" success="True" time="0.016" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ContextMenuTest.AmbiguousNameBecauseInSubMenusButNotQualified" executed="True" success="True" time="0.000" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ContextMenuTest.NotAmbiguousNameBecauseInSubMenus" executed="True" success="True" time="0.016" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ContextMenuTest.AmbiguousNameBecauseInTwoMenus" executed="True" success="True" time="0.000" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ContextMenuTest.NotAmbiguousNameBecauseInTwoMenusButQualified" executed="True" success="True" time="0.016" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ContextMenuTest.DontNeedToSpecifyWhichForm" executed="True" success="True" time="0.000" asserts="0" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ControlCollectionTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ControlCollectionTest.Count" executed="True" success="True" time="0.000" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ControlCollectionTest.GetEnumerator" executed="True" success="True" time="0.000" asserts="7" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ControlCollectionTest.AddCollection" executed="True" success="True" time="0.000" asserts="7" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ControlCollectionTest.Indexer" executed="True" success="True" time="0.000" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ControlTest" success="True" time="0.03125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ControlTest.ControlText" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ControlTest.ControlClick" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ControlTest.Property" executed="True" success="True" time="0.016" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ControlNameTest" success="True" time="0.03125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ControlNameTest.AmbiguousName" executed="True" success="True" time="0.000" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ControlNameTest.NoSuchName" executed="True" success="True" time="0.016" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ControlNameTest.FindNestedControl" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ControlNameTest.UseAUserControlCustomTester" executed="True" success="True" time="0.000" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="DatabindingTest" success="True" time="0.1875" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.DatabindingTest.CheckBoxDataSetBinding" executed="True" success="True" time="0.125" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.DatabindingTest.TextBoxDataSetBinding" executed="True" success="True" time="0.047" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.DatabindingTest.DataSetBindingWithGenericPropertySetter" executed="True" success="True" time="0.016" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="DynamicControlsTest" success="True" time="0.0625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.DynamicControlsTest.DynamicButtonClick" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.DynamicControlsTest.DynamicControlsWithDuplicateNameIsAmbiguous" executed="True" success="True" time="0.016" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.DynamicControlsTest.DynamicControlsWithDuplicateNameCount" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.DynamicControlsTest.DynamicControlsWithDuplicateNameEnumerator" executed="True" success="True" time="0.016" asserts="3" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.DynamicControlsTest.DynamicControlsWithDuplicateNameWorksByIndex" executed="True" success="True" time="0.016" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.DynamicControlsTest.DynamicControlsWithDuplicateNameNotFound" executed="True" success="True" time="0.000" asserts="0" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="FormCollectionTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FormCollectionTest.Contains" executed="True" success="True" time="0.000" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FormCollectionTest.Count" executed="True" success="True" time="0.000" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FormCollectionTest.GetEnumerator" executed="True" success="True" time="0.000" asserts="7" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FormCollectionTest.AddCollection" executed="True" success="True" time="0.000" asserts="7" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FormCollectionTest.Indexer" executed="True" success="True" time="0.000" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="FormFinderTest" success="True" time="0.046875" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FormFinderTest.FindOneForm" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FormFinderTest.FindOneFormOutOfTwo" executed="True" success="True" time="0.000" asserts="3" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FormFinderTest.FindAll" executed="True" success="True" time="0.016" asserts="4" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FormFinderTest.FindOneFormWhenThereAreTwo" executed="True" success="True" time="0.016" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FormFinderTest.FindOneFormWhenThereAreNone" executed="True" success="True" time="0.000" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FormFinderTest.FindTwoFormsWhenThereAreTwo" executed="True" success="True" time="0.000" asserts="3" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="FormTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.FormTest.Close" executed="True" success="True" time="0.016" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="LabelTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.LabelTest.LabelText" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.LabelTest.LabelClick" executed="True" success="True" time="0.000" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="LinkLabelTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.LinkLabelTest.LinkLabelClick" executed="True" success="True" time="0.016" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ListBoxTest" success="True" time="0.0625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ListBoxTest.ListBoxPropertyAsserts" executed="True" success="True" time="0.016" asserts="3" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ListBoxTest.ListBoxSelection" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ListBoxTest.ListBoxMultiSelection" executed="True" success="True" time="0.016" asserts="5" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ListBoxTest.SelectDoesNotExist" executed="True" success="True" time="0.016" asserts="0" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="MainMenuTest" success="True" time="0.09375" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MainMenuTest.PlainMenu" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MainMenuTest.QualifiedMenu" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MainMenuTest.SubMenuItem" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MainMenuTest.PartiallyQualifiedSubMenuItem" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MainMenuTest.FullyQualifiedMenuItem" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MainMenuTest.FormQualifiedMenuItem" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MainMenuTest.ItemWithAltKey" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MainMenuTest.ItemWithDot" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MainMenuTest.CantUseAmpsInName" executed="True" success="True" time="0.016" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MainMenuTest.CantUseDotInName" executed="True" success="True" time="0.000" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MainMenuTest.MenuPopup" executed="True" success="True" time="0.016" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="MenuItemCollectionTest" success="True" time="0" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MenuItemCollectionTest.Count" executed="True" success="True" time="0.000" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MenuItemCollectionTest.GetEnumerator" executed="True" success="True" time="0.000" asserts="7" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MenuItemCollectionTest.AddCollection" executed="True" success="True" time="0.000" asserts="7" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MenuItemCollectionTest.Indexer" executed="True" success="True" time="0.000" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ModalDialogsTest" success="True" time="0.0625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ModalDialogsTest.TestMessageBoxOK" executed="True" success="True" time="0.016" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ModalDialogsTest.TestMessageBoxCancel" executed="True" success="True" time="0.016" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ModalDialogsTest.TestSimpleMessageBox" executed="True" success="True" time="0.000" asserts="3" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ModalDialogsTest.TestOKCancelMessageBox" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ModalDialogsTest.UnexpectedModalIsClosedAndFails" executed="True" success="True" time="0.000" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ModalDialogsTest.UnexpectedModalIsClosedAndFailsNoTitle" executed="True" success="True" time="0.016" asserts="0" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ModalFormsTest" success="True" time="0.046875" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ModalFormsTest.TestModalForm" executed="True" success="True" time="0.031" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ModalFormsTest.TestModalFormByString" executed="True" success="True" time="0.016" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.ModalFormsTest.ModalFormDoesntShow" executed="True" success="True" time="0.000" asserts="0" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="MouseControllerTest" success="True" time="3.375" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.PositioningUnits" executed="True" success="True" time="0.109" asserts="12" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.PositioningUnitsWorld" executed="True" success="True" time="0.047" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.PositioningInForm" executed="True" success="True" time="0.047" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.PositioningInControl" executed="True" success="True" time="0.047" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.MissingControl" executed="True" success="True" time="0.047" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.PositioningEvents" executed="True" success="True" time="0.047" asserts="9" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.Hovering" executed="True" success="True" time="2.453" asserts="6" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.Disposing" executed="True" success="True" time="0.063" asserts="3" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.Buttons" executed="True" success="True" time="0.047" asserts="6" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.ButtonEvents" executed="True" success="True" time="0.047" asserts="4" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.XButtons" executed="False">
|
||||
<reason>
|
||||
<message><![CDATA[Unsure of the issue here. Investigate]]></message>
|
||||
</reason>
|
||||
</test-case>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.XButtonEvents" executed="False">
|
||||
<reason>
|
||||
<message><![CDATA[Unsure of the issue here. Investigate]]></message>
|
||||
</reason>
|
||||
</test-case>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.Clicking" executed="True" success="True" time="0.063" asserts="3" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.DoubleClicking" executed="True" success="True" time="0.047" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.Dragging" executed="True" success="True" time="0.047" asserts="14" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.DragNull" executed="True" success="True" time="0.031" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.DragOdd" executed="True" success="True" time="0.047" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.DragEmpty" executed="True" success="True" time="0.047" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.Modifiers" executed="False">
|
||||
<reason>
|
||||
<message><![CDATA[Unsure of the issue here. Investigate]]></message>
|
||||
</reason>
|
||||
</test-case>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.ModifiersInvalid1" executed="True" success="True" time="0.047" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MouseControllerTest.ModifiersInvalid2" executed="True" success="True" time="0.047" asserts="0" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="MultipleFormsTest" success="True" time="0.109375" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MultipleFormsTest.TestMultipleForms" executed="True" success="True" time="0.047" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MultipleFormsTest.TestMultipleFormsShouldNotFindLastButton" executed="True" success="True" time="0.031" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MultipleFormsTest.DontNeedToSpecifyForm" executed="True" success="True" time="0.016" asserts="4" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.MultipleFormsTest.AmbiguousNameWithMultipleForms" executed="True" success="True" time="0.016" asserts="0" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="RadioButtonTest" success="True" time="0.03125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.RadioButtonTest.SelectOption" executed="True" success="True" time="0.031" asserts="10" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="SimpleAPIKeyboardTest" success="True" time="0.140625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SimpleAPIKeyboardTest.PressEnterClicksButton" executed="True" success="True" time="0.047" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SimpleAPIKeyboardTest.TextBox" executed="True" success="True" time="0.047" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SimpleAPIKeyboardTest.ElaborateInputTest" executed="True" success="True" time="0.047" asserts="0" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="SimpleAPIMouseTest" success="True" time="0.203125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SimpleAPIMouseTest.CorrectMouseClicking" executed="True" success="True" time="0.047" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SimpleAPIMouseTest.CanClickMultipleControls" executed="True" success="True" time="0.047" asserts="4" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SimpleAPIMouseTest.IncorrectMouseClicking" executed="True" success="True" time="0.047" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.SimpleAPIMouseTest.IncorrectMouseClickingSimplifiedAPI" executed="True" success="True" time="0.063" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="TabControlTest" success="True" time="0.03125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.TabControlTest.TabControl" executed="True" success="True" time="0.000" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.TabControlTest.ClickNonVisibleButton" executed="True" success="True" time="0.016" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.TabControlTest.ClickVisibleButton" executed="True" success="True" time="0.016" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="TextBoxTest" success="True" time="0.0625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.TextBoxTest.TextBox" executed="True" success="True" time="0.000" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.TextBoxTest.DataSetBinding" executed="True" success="True" time="0.031" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.TextBoxTest.DataSetBindingWithGenericPropertySetter" executed="True" success="True" time="0.031" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="TreeViewTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Test.TreeViewTest.AfterSelectNode" executed="True" success="True" time="0.016" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Test.TreeViewTest.AfterSelectNodeSubNodes" executed="True" success="True" time="0.000" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="Recorder" success="True" time="0.71875" asserts="0">
|
||||
<results>
|
||||
<test-suite name="Test" success="True" time="0.703125" asserts="0">
|
||||
<results>
|
||||
<test-suite name="CheckBoxRecorderTest" success="True" time="0.140625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.CheckBoxRecorderTest.CheckUnCheck" executed="True" success="True" time="0.141" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ComboBoxRecorderTest" success="True" time="0.078125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.ComboBoxRecorderTest.ComboBoxEnter" executed="True" success="True" time="0.031" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.ComboBoxRecorderTest.ComboBoxSelect" executed="True" success="True" time="0.016" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.ComboBoxRecorderTest.ComboBoxEnterAndSelect" executed="True" success="True" time="0.031" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="DynamicControlsRecorderTest" success="True" time="0.03125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.DynamicControlsRecorderTest.DynamicControlRecorded" executed="True" success="True" time="0.031" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="EnterTextCollapsingProcessorTest" success="True" time="0" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.EnterTextCollapsingProcessorTest.CanCollapse" executed="True" success="True" time="0.000" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.EnterTextCollapsingProcessorTest.DontCollapseDifferentControls" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.EnterTextCollapsingProcessorTest.DontCollapseDifferentMethods" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.EnterTextCollapsingProcessorTest.CanCollapseMoreComplex" executed="True" success="True" time="0.000" asserts="5" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="LinkButtonRecorderTest" success="True" time="0.03125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.LinkButtonRecorderTest.Click" executed="True" success="True" time="0.016" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ListBoxRecorderTest" success="True" time="0.078125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.ListBoxRecorderTest.SelectItem" executed="True" success="True" time="0.016" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.ListBoxRecorderTest.MutlipleSelection" executed="True" success="True" time="0.031" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.ListBoxRecorderTest.SingleSelectBox" executed="True" success="True" time="0.031" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ListenerTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.ListenerTest.Listen" executed="True" success="True" time="0.016" asserts="4" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="MenuItemRecorderTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.MenuItemRecorderTest.MenuItemClick" executed="True" success="True" time="0.016" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="MultipleFormsTest" success="True" time="0.109375" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.MultipleFormsTest.FormClose" executed="True" success="True" time="0.031" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.MultipleFormsTest.EventCausesAnother" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.MultipleFormsTest.MultipleForms" executed="True" success="True" time="0.031" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.MultipleFormsTest.NamesShouldAdapt" executed="True" success="True" time="0.031" asserts="4" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="NameResolverTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.NameResolverTest.AmbiguousButton" executed="True" success="True" time="0.016" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="RadioButtonRecorderTest" success="True" time="0.03125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.RadioButtonRecorderTest.Click" executed="True" success="True" time="0.031" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="TabControlRecorderTest" success="True" time="0.03125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.TabControlRecorderTest.TabControlSelectIndex" executed="True" success="True" time="0.031" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="TestWriterTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.TestWriterTest.SimpleButton" executed="True" success="True" time="0.016" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="TextBoxRecorderTest" success="True" time="0.0625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.TextBoxRecorderTest.TextBoxEnter" executed="True" success="True" time="0.031" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.TextBoxRecorderTest.ProgrammaticallyChangeTextIsNotRecorded" executed="True" success="True" time="0.016" asserts="2" />
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.TextBoxRecorderTest.ProgrammaticallyChangeTextIsNotRecordedTwoBoxes" executed="True" success="True" time="0.016" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="TreeViewRecorderTest" success="True" time="0.015625" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.Recorder.Test.TreeViewRecorderTest.TreeViewAfterSelect" executed="True" success="True" time="0.016" asserts="2" />
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="C:\Documents and Settings\Maxon Family\Desktop\nf\NUnitForms-v1.3.1-src\build\bin\NUnitForms.Example.exe" success="True" time="0.3125" asserts="0">
|
||||
<results>
|
||||
<test-suite name="NUnit" success="True" time="0.3125" asserts="0">
|
||||
<results>
|
||||
<test-suite name="Extensions" success="True" time="0.3125" asserts="0">
|
||||
<results>
|
||||
<test-suite name="Forms" success="True" time="0.296875" asserts="0">
|
||||
<results>
|
||||
<test-suite name="ExampleApplication" success="True" time="0.296875" asserts="0">
|
||||
<results>
|
||||
<test-suite name="Test" success="True" time="0.296875" asserts="0">
|
||||
<results>
|
||||
<test-suite name="AppTest" success="True" time="0.046875" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.AppTest.ButtonLabelShouldDefaultToZero" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.AppTest.ButtonLabelShouldBeOneAfterClicked" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.AppTest.ButtonLabelShouldBeTwoAfterClickedTwice" executed="True" success="True" time="0.016" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.AppTest.ShowModalButtonShouldShowModalDialog" executed="True" success="True" time="0.016" asserts="0" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ControllerTest" success="True" time="0.03125" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.ControllerTest.ShowModal" executed="True" success="True" time="0.016" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.ControllerTest.Count" executed="True" success="True" time="0.000" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.ControllerTest.Data" executed="True" success="True" time="0.000" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="FormTest" success="True" time="0.21875" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.FormTest.ButtonLabelShouldBeControllerValue" executed="True" success="True" time="0.047" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.FormTest.CountButtonShouldInvokeControllerCount" executed="True" success="True" time="0.047" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.FormTest.ShowModalButtonShouldInvokeControllerShowModal" executed="True" success="True" time="0.063" asserts="0" />
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.FormTest.ButtonLabelShouldUpdateAfterClick" executed="True" success="True" time="0.063" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
<test-suite name="ModelTest" success="True" time="0" asserts="0">
|
||||
<results>
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.ModelTest.DefaultValue" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.ModelTest.BusinessLogic" executed="True" success="True" time="0.000" asserts="1" />
|
||||
<test-case name="NUnit.Extensions.Forms.ExampleApplication.Test.ModelTest.MultipleBusinessLogic" executed="True" success="True" time="0.000" asserts="1" />
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
</results>
|
||||
</test-suite>
|
||||
</test-results>
|
||||
BIN
mRemoteNGTests/nUnitForms/bin/nmock.dll
Normal file
BIN
mRemoteNGTests/nUnitForms/bin/nunit.core.dll
Normal file
BIN
mRemoteNGTests/nUnitForms/bin/nunit.framework.dll
Normal file
27
mRemoteNGTests/nUnitForms/license.txt
Normal file
@@ -0,0 +1,27 @@
|
||||
/********************************************************************************************************************
|
||||
'
|
||||
' Copyright (c) 2003-2004, Luke T. Maxon
|
||||
' All rights reserved.
|
||||
'
|
||||
' Redistribution and use in source and binary forms, with or without modification, are permitted provided
|
||||
' that the following conditions are met:
|
||||
'
|
||||
' * Redistributions of source code must retain the above copyright notice, this list of conditions and the
|
||||
' following disclaimer.
|
||||
'
|
||||
' * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and
|
||||
' the following disclaimer in the documentation and/or other materials provided with the distribution.
|
||||
'
|
||||
' * Neither the name of the author nor the names of its contributors may be used to endorse or
|
||||
' promote products derived from this software without specific prior written permission.
|
||||
'
|
||||
' THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED
|
||||
' WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
|
||||
' PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR
|
||||
' ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
' LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
|
||||
' INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
|
||||
' OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN
|
||||
' IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
||||
'
|
||||
'*******************************************************************************************************************/
|
||||
5
mRemoteNGTests/packages.config
Normal file
@@ -0,0 +1,5 @@
|
||||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<packages>
|
||||
<package id="NSubstitute" version="1.10.0.0" targetFramework="net45" />
|
||||
<package id="NUnit" version="3.2.0" targetFramework="net45" />
|
||||
</packages>
|
||||
@@ -1,26 +1,100 @@
|
||||
|
||||
Microsoft Visual Studio Solution File, Format Version 10.00
|
||||
# Visual Studio 2008
|
||||
Project("{F184B08F-C81C-45F6-A57F-5ABD9991F28F}") = "mRemoteV1", "mRemoteV1\mRemoteV1.vbproj", "{4934A491-40BC-4E5B-9166-EA1169A220F6}"
|
||||
Microsoft Visual Studio Solution File, Format Version 12.00
|
||||
# Visual Studio 14
|
||||
VisualStudioVersion = 14.0.25123.0
|
||||
MinimumVisualStudioVersion = 10.0.40219.1
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mRemoteV1", "mRemoteV1\mRemoteV1.csproj", "{4934A491-40BC-4E5B-9166-EA1169A220F6}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "mRemoteNGTests", "mRemoteNGTests\mRemoteNGTests.csproj", "{1453B37F-8621-499E-B0B2-6091F76DC0BB}"
|
||||
EndProject
|
||||
Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Installer Projects", "Installer Projects", "{4FE795BE-646E-4F1B-BAD0-A68EA26394DD}"
|
||||
EndProject
|
||||
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "CustomActions", "Installer Projects\CustomActions\CustomActions.csproj", "{5423D985-CB48-4344-B47F-E8C6D60C8B04}"
|
||||
EndProject
|
||||
Project("{930C7802-8A8C-48F9-8165-68863BCCD9DD}") = "Installer", "Installer Projects\Installer\Installer.wixproj", "{F0168B9F-6815-40DF-BA53-46CEE7683B68}"
|
||||
ProjectSection(ProjectDependencies) = postProject
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04} = {5423D985-CB48-4344-B47F-E8C6D60C8B04}
|
||||
EndProjectSection
|
||||
EndProject
|
||||
Global
|
||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||
Debug Portable|Any CPU = Debug Portable|Any CPU
|
||||
Debug Portable|x86 = Debug Portable|x86
|
||||
Debug|Any CPU = Debug|Any CPU
|
||||
Debug|x86 = Debug|x86
|
||||
Release Portable|Any CPU = Release Portable|Any CPU
|
||||
Release Portable|x86 = Release Portable|x86
|
||||
Release|Any CPU = Release|Any CPU
|
||||
Release|x86 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug Portable|Any CPU.ActiveCfg = Debug Portable|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug Portable|Any CPU.Build.0 = Debug Portable|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug Portable|x86.ActiveCfg = Debug Portable|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug Portable|x86.Build.0 = Debug Portable|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Portable|Any CPU.ActiveCfg = Release Portable|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Portable|Any CPU.Build.0 = Release Portable|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Portable|x86.ActiveCfg = Release Portable|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release Portable|x86.Build.0 = Release Portable|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{4934A491-40BC-4E5B-9166-EA1169A220F6}.Release|x86.Build.0 = Release|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug Portable|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug Portable|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug Portable|x86.ActiveCfg = Debug|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug Portable|x86.Build.0 = Debug|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug|x86.ActiveCfg = Debug|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Debug|x86.Build.0 = Debug|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Portable|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Portable|Any CPU.Build.0 = Release|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Portable|x86.ActiveCfg = Release|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release Portable|x86.Build.0 = Release|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release|x86.ActiveCfg = Release|Any CPU
|
||||
{1453B37F-8621-499E-B0B2-6091F76DC0BB}.Release|x86.Build.0 = Release|Any CPU
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug Portable|Any CPU.ActiveCfg = Debug|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug Portable|Any CPU.Build.0 = Debug|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug Portable|x86.ActiveCfg = Debug|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug Portable|x86.Build.0 = Debug|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug|Any CPU.Build.0 = Debug|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Debug|x86.Build.0 = Debug|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release Portable|Any CPU.ActiveCfg = Release|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release Portable|Any CPU.Build.0 = Release|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release Portable|x86.ActiveCfg = Release|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release Portable|x86.Build.0 = Release|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release|Any CPU.ActiveCfg = Release|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release|Any CPU.Build.0 = Release|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release|x86.ActiveCfg = Release|x86
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04}.Release|x86.Build.0 = Release|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug Portable|Any CPU.ActiveCfg = Debug Portable|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug Portable|x86.ActiveCfg = Debug Portable|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug Portable|x86.Build.0 = Debug Portable|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug|Any CPU.ActiveCfg = Debug|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug|x86.ActiveCfg = Debug|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Debug|x86.Build.0 = Debug|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release Portable|Any CPU.ActiveCfg = Release Portable|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release Portable|x86.ActiveCfg = Release Portable|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release Portable|x86.Build.0 = Release Portable|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release|Any CPU.ActiveCfg = Release|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release|Any CPU.Build.0 = Release|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release|x86.ActiveCfg = Release|x86
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68}.Release|x86.Build.0 = Release|x86
|
||||
EndGlobalSection
|
||||
GlobalSection(SolutionProperties) = preSolution
|
||||
HideSolutionNode = FALSE
|
||||
EndGlobalSection
|
||||
GlobalSection(NestedProjects) = preSolution
|
||||
{5423D985-CB48-4344-B47F-E8C6D60C8B04} = {4FE795BE-646E-4F1B-BAD0-A68EA26394DD}
|
||||
{F0168B9F-6815-40DF-BA53-46CEE7683B68} = {4FE795BE-646E-4F1B-BAD0-A68EA26394DD}
|
||||
EndGlobalSection
|
||||
EndGlobal
|
||||
|
||||
@@ -1,148 +0,0 @@
|
||||
Imports System.Net
|
||||
Imports mRemoteNG.App.Runtime
|
||||
|
||||
Namespace App
|
||||
Public Class Announcement
|
||||
#Region "Private Properties"
|
||||
Private wCl As WebClient
|
||||
Private wPr As WebProxy
|
||||
#End Region
|
||||
|
||||
Private _curAI As Info
|
||||
Public ReadOnly Property curAI() As Info
|
||||
Get
|
||||
Return _curAI
|
||||
End Get
|
||||
End Property
|
||||
|
||||
Public Function IsAnnouncementAvailable() As Boolean
|
||||
Try
|
||||
Dim aI As Info = GetAnnouncementInfo()
|
||||
|
||||
If aI.InfoOk = False Then
|
||||
Return False
|
||||
End If
|
||||
|
||||
If aI.Name <> My.Settings.LastAnnouncement Then
|
||||
Return True
|
||||
Else
|
||||
Return False
|
||||
End If
|
||||
Catch ex As Exception
|
||||
mC.AddMessage(Messages.MessageClass.WarningMsg, "IsAnnouncementAvailable failed" & vbNewLine & ex.Message, True)
|
||||
Return False
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Public Function GetAnnouncementInfo() As Info
|
||||
Try
|
||||
Dim strAnnouncement As String = GetAnnouncementFile()
|
||||
|
||||
CreateWebClient()
|
||||
|
||||
Dim aI As New Info()
|
||||
|
||||
If strAnnouncement <> "" Then
|
||||
aI.InfoOk = True
|
||||
|
||||
Try
|
||||
'get Name
|
||||
Dim strName As String = strAnnouncement.Substring(strAnnouncement.IndexOf("Name: ") + 6, strAnnouncement.IndexOf(vbNewLine) - 6)
|
||||
aI.Name = strName
|
||||
|
||||
strAnnouncement = strAnnouncement.Remove(0, strAnnouncement.IndexOf(vbNewLine) + 2)
|
||||
|
||||
'get Download URL
|
||||
Dim strU As String = ""
|
||||
|
||||
strU = strAnnouncement.Substring(strAnnouncement.IndexOf("URL: ") + 5, strAnnouncement.IndexOf(vbNewLine) - 5)
|
||||
|
||||
aI.URL = strU
|
||||
Catch ex As Exception
|
||||
aI.InfoOk = False
|
||||
End Try
|
||||
Else
|
||||
aI.InfoOk = False
|
||||
End If
|
||||
|
||||
_curAI = aI
|
||||
Return aI
|
||||
Catch ex As Exception
|
||||
mC.AddMessage(Messages.MessageClass.WarningMsg, "Getting Announcement info failed" & vbNewLine & ex.Message, True)
|
||||
Return Nothing
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Function GetAnnouncementFile() As String
|
||||
Try
|
||||
CreateWebClient()
|
||||
|
||||
Dim strTemp As String
|
||||
|
||||
Try
|
||||
strTemp = wCl.DownloadString(App.Info.General.URLAnnouncement)
|
||||
Catch ex As Exception
|
||||
strTemp = ""
|
||||
End Try
|
||||
|
||||
Return strTemp
|
||||
Catch ex As Exception
|
||||
mC.AddMessage(Messages.MessageClass.WarningMsg, "GetAnnouncementFile failed" & vbNewLine & ex.Message, True)
|
||||
Return ""
|
||||
End Try
|
||||
End Function
|
||||
|
||||
Private Sub CreateWebClient()
|
||||
wCl = New WebClient()
|
||||
|
||||
If My.Settings.UpdateUseProxy Then
|
||||
wPr = New WebProxy(My.Settings.UpdateProxyAddress, My.Settings.UpdateProxyPort)
|
||||
|
||||
If My.Settings.UpdateProxyUseAuthentication Then
|
||||
Dim cred As ICredentials
|
||||
cred = New NetworkCredential(My.Settings.UpdateProxyAuthUser, Security.Crypt.Decrypt(My.Settings.UpdateProxyAuthPass, App.Info.General.EncryptionKey))
|
||||
|
||||
wPr.Credentials = cred
|
||||
End If
|
||||
|
||||
wCl.Proxy = wPr
|
||||
End If
|
||||
End Sub
|
||||
|
||||
|
||||
|
||||
|
||||
Public Class Info
|
||||
Private _Name As String
|
||||
Public Property Name() As String
|
||||
Get
|
||||
Return _Name
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
_Name = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
Private _URL As String
|
||||
Public Property URL() As String
|
||||
Get
|
||||
Return _URL
|
||||
End Get
|
||||
Set(ByVal value As String)
|
||||
_URL = value
|
||||
End Set
|
||||
End Property
|
||||
|
||||
|
||||
Private _InfoOk As Boolean
|
||||
Public Property InfoOk() As Boolean
|
||||
Get
|
||||
Return _InfoOk
|
||||
End Get
|
||||
Set(ByVal value As Boolean)
|
||||
_InfoOk = value
|
||||
End Set
|
||||
End Property
|
||||
End Class
|
||||
End Class
|
||||
End Namespace
|
||||
@@ -1,8 +0,0 @@
|
||||
Namespace App
|
||||
Namespace Editions
|
||||
Public Class Spanlink
|
||||
Public Shared Enabled As Boolean = True
|
||||
|
||||
End Class
|
||||
End Namespace
|
||||
End Namespace
|
||||
@@ -1,49 +0,0 @@
|
||||
Imports System.Environment
|
||||
|
||||
Namespace App
|
||||
Namespace Info
|
||||
Public Class General
|
||||
Public Shared ReadOnly URLHome As String = "http://www.mremoteng.org/"
|
||||
Public Shared ReadOnly URLDonate As String = "http://donate.mremoteng.org/"
|
||||
Public Shared ReadOnly URLForum As String = "http://forum.mremoteng.org/"
|
||||
Public Shared ReadOnly URLBugs As String = "http://bugs.mremoteng.org/"
|
||||
Public Shared ReadOnly URLAnnouncement As String = "http://update.mremoteng.org/announcement.txt"
|
||||
Public Shared ReadOnly HomePath As String = My.Application.Info.DirectoryPath
|
||||
Public Shared EncryptionKey As String = "mR3m"
|
||||
Public Shared ReportingFilePath As String = ""
|
||||
End Class
|
||||
|
||||
Public Class Settings
|
||||
#If Not PORTABLE Then
|
||||
Public Shared ReadOnly SettingsPath As String = GetFolderPath(SpecialFolder.ApplicationData) & "\" & My.Application.Info.ProductName
|
||||
#Else
|
||||
Public Shared ReadOnly SettingsPath As String = My.Application.Info.DirectoryPath
|
||||
#End If
|
||||
Public Shared ReadOnly LayoutFileName As String = "pnlLayout.xml"
|
||||
Public Shared ReadOnly ExtAppsFilesName As String = "extApps.xml"
|
||||
End Class
|
||||
|
||||
Public Class Update
|
||||
Public Shared ReadOnly URL As String = "http://update.mremoteng.org/"
|
||||
#If DEBUG Then
|
||||
Public Shared ReadOnly File As String = "update-debug.txt"
|
||||
#Else
|
||||
Public Shared ReadOnly File As String = "update.txt"
|
||||
#End If
|
||||
End Class
|
||||
|
||||
Public Class Connections
|
||||
Public Shared ReadOnly DefaultConnectionsPath As String = App.Info.Settings.SettingsPath
|
||||
Public Shared ReadOnly DefaultConnectionsFile As String = "confCons.xml"
|
||||
Public Shared ReadOnly DefaultConnectionsFileNew As String = "confConsNew.xml"
|
||||
Public Shared ReadOnly ConnectionFileVersion As Double = 2.3
|
||||
End Class
|
||||
|
||||
Public Class Credentials
|
||||
Public Shared ReadOnly CredentialsPath As String = App.Info.Settings.SettingsPath
|
||||
Public Shared ReadOnly CredentialsFile As String = "confCreds.xml"
|
||||
Public Shared ReadOnly CredentialsFileNew As String = "confCredsNew.xml"
|
||||
Public Shared ReadOnly CredentialsFileVersion As Double = 1.0
|
||||
End Class
|
||||
End Namespace
|
||||
End Namespace
|
||||
@@ -1,149 +0,0 @@
|
||||
Imports System.Runtime.InteropServices
|
||||
|
||||
Namespace App
|
||||
Public Class Native
|
||||
#Region "Dll Imports"
|
||||
<DllImport("user32.dll", EntryPoint:="GetWindowThreadProcessId", SetLastError:=True, CharSet:=CharSet.Unicode, ExactSpelling:=True, CallingConvention:=CallingConvention.StdCall)> _
|
||||
Public Shared Function GetWindowThreadProcessId(ByVal hWnd As Long, ByVal lpdwProcessId As Long) As Long
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll", SetLastError:=True)> _
|
||||
Public Shared Function FindWindow(ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll", SetLastError:=True)> _
|
||||
Public Shared Function SetParent(ByVal hWndChild As IntPtr, ByVal hWndNewParent As IntPtr) As Long
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll", EntryPoint:="GetWindowLongA", SetLastError:=True)> _
|
||||
Public Shared Function GetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer) As Long
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll")> _
|
||||
Public Shared Function SetWindowLong(ByVal hWnd As IntPtr, ByVal nIndex As Integer, ByVal dwNewLong As Long) As Integer
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll", SetLastError:=True)> _
|
||||
Public Shared Function SetWindowPos(ByVal hWnd As IntPtr, ByVal hWndInsertAfter As Long, ByVal x As Long, ByVal y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long) As Long
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll", SetLastError:=True)> _
|
||||
Public Shared Function MoveWindow(ByVal hWnd As IntPtr, ByVal x As Integer, ByVal y As Integer, ByVal cx As Integer, ByVal cy As Integer, ByVal repaint As Boolean) As Boolean
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll", EntryPoint:="PostMessageA", SetLastError:=True)> _
|
||||
Public Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal Msg As UInteger, ByVal wParam As Integer, ByVal lParam As Integer) As Boolean
|
||||
End Function
|
||||
|
||||
<DllImport("user32")> _
|
||||
Public Shared Function ShowWindow(ByVal hWnd As IntPtr, ByVal nCmdShow As Integer) As Integer
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll")> _
|
||||
Public Shared Function BringWindowToTop(ByVal hWnd As IntPtr) As Boolean
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll")> _
|
||||
Public Shared Function SetForegroundWindow(ByVal hWnd As IntPtr) As Boolean
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll")> _
|
||||
Public Shared Function GetForegroundWindow() As IntPtr
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll", EntryPoint:="GetWindowTextLengthA")> _
|
||||
Public Shared Function GetWindowTextLength(ByVal hWnd As IntPtr) As Long
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll")> _
|
||||
Public Shared Function IsIconic(ByVal hWnd As IntPtr) As Integer
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll")> _
|
||||
Public Shared Function GetSystemMenu(ByVal hWnd As IntPtr, ByVal bRevert As Boolean) As IntPtr
|
||||
End Function
|
||||
|
||||
<DllImport("user32.dll")> _
|
||||
Public Shared Function AppendMenu(ByVal hMenu As IntPtr, ByVal uFlags As Int32, ByVal uIDNewItem As IntPtr, ByVal lpNewItem As String) As Boolean
|
||||
End Function
|
||||
|
||||
<DllImport("user32")> _
|
||||
Public Shared Function InsertMenu(ByVal hMenu As IntPtr, ByVal uPosition As Integer, ByVal uFlags As Integer, ByVal uIDNewItem As IntPtr, ByVal lpNewItem As String) As Boolean
|
||||
End Function
|
||||
|
||||
<DllImport("user32")> _
|
||||
Public Shared Function SetMenuItemBitmaps(ByVal hMenu As IntPtr, ByVal uPosition As Integer, ByVal uFlags As Integer, ByVal hBitmapUnchecked As IntPtr, ByVal hBitmapChecked As IntPtr) As Boolean
|
||||
End Function
|
||||
|
||||
<DllImport("user32")> _
|
||||
Public Shared Function CreatePopupMenu() As IntPtr
|
||||
End Function
|
||||
|
||||
<DllImport("user32")> _
|
||||
Public Shared Function SendMessage(ByVal hWnd As IntPtr, ByVal msg As Integer, ByVal wparam As Integer, ByVal lparam As Integer) As Integer
|
||||
End Function
|
||||
|
||||
<DllImport("user32")> _
|
||||
Public Shared Function MapVirtualKey(ByVal wCode As Integer, ByVal wMapType As Integer) As Integer
|
||||
End Function
|
||||
|
||||
<DllImport("User32")> _
|
||||
Public Shared Function SetClipboardViewer(ByVal hWndNewViewer As IntPtr) As IntPtr
|
||||
End Function
|
||||
|
||||
<DllImport("User32")> _
|
||||
Public Shared Function SendMessage(ByVal Handle As IntPtr, ByVal msg As Integer, ByVal wParam As IntPtr, ByVal lParam As IntPtr) As IntPtr
|
||||
End Function
|
||||
|
||||
<DllImport("user32")> _
|
||||
Public Shared Function PostMessage(ByVal hWnd As IntPtr, ByVal wMsg As Integer, ByVal wParam As Integer, ByVal lParam As Integer) As Long
|
||||
End Function
|
||||
#End Region
|
||||
|
||||
#Region "Constants"
|
||||
Public Const SWP_NOOWNERZORDER As Integer = 512
|
||||
Public Const SWP_NOREDRAW As Integer = 8
|
||||
Public Const SWP_NOZORDER As Integer = 4
|
||||
Public Const SWP_SHOWWINDOW As Integer = 64
|
||||
Public Const WS_EX_MDICHILD As Integer = 64
|
||||
Public Const SWP_FRAMECHANGED As Integer = 32
|
||||
Public Const SWP_NOACTIVATE As Integer = 16
|
||||
Public Const SWP_ASYNCWINDOWPOS As Integer = 16384
|
||||
Public Const SWP_NOMOVE As Integer = 2
|
||||
Public Const SWP_NOSIZE As Integer = 1
|
||||
Public Const GWL_STYLE As Integer = (-16)
|
||||
Public Const WS_VISIBLE As Integer = 268435456
|
||||
Public Const WM_CLOSE As Integer = 16
|
||||
Public Const WS_CHILD As Integer = 1073741824
|
||||
Public Const WS_MAXIMIZE As Integer = 16777216
|
||||
Public Const SW_SHOWMAXIMIZED As Integer = 3
|
||||
Public Const SW_RESTORE As Integer = 9
|
||||
|
||||
Public Const MF_STRING As Integer = &H0
|
||||
Public Const MF_SEPARATOR As Integer = &H800&
|
||||
Public Const MF_BYCOMMAND As Integer = &H0
|
||||
Public Const MF_BYPOSITION As Integer = &H400
|
||||
Public Const MF_POPUP As Integer = &H10
|
||||
|
||||
Public Const WM_GETTEXT As Integer = &HD
|
||||
Public Const WM_ACTIVATEAPP As Integer = &H1C
|
||||
Public Const WM_WINDOWPOSCHANGED As Integer = &H47
|
||||
|
||||
Public Const WM_SYSCOMMAND As Integer = &H112
|
||||
|
||||
Public Const WM_LBUTTONDOWN As Integer = &H201
|
||||
Public Const WM_LBUTTONUP As Integer = &H202
|
||||
Public Const WM_RBUTTONDOWN As Integer = &H204
|
||||
Public Const WM_RBUTTONUP As Integer = &H205
|
||||
|
||||
Public Const WM_KEYDOWN As Integer = &H100
|
||||
Public Const WM_KEYUP As Integer = &H101
|
||||
|
||||
Public Const VK_CONTROL As Integer = &H11
|
||||
Public Const VK_C As Integer = &H67
|
||||
|
||||
Public Const WM_DRAWCLIPBOARD As Integer = 776
|
||||
Public Const WM_CHANGECBCHAIN As Integer = 781
|
||||
#End Region
|
||||
End Class
|
||||
End Namespace
|
||||