summaryrefslogtreecommitdiff
path: root/contrib
diff options
context:
space:
mode:
Diffstat (limited to 'contrib')
-rwxr-xr-xcontrib/bbadmin/accounts.cgi580
-rw-r--r--contrib/bbadmin/apache.conf14
-rw-r--r--contrib/bbadmin/bb.css70
-rw-r--r--contrib/bbreporter/LICENSE674
-rwxr-xr-xcontrib/bbreporter/bbreporter.py538
-rw-r--r--contrib/debian/bbackupd.in63
-rw-r--r--contrib/debian/bbstored.in57
-rw-r--r--contrib/mac_osx/org.boxbackup.bbackupd.plist.in20
-rw-r--r--contrib/mac_osx/org.boxbackup.bbstored.plist.in21
-rw-r--r--contrib/redhat/bbackupd.in8
-rw-r--r--contrib/redhat/bbstored.in8
-rw-r--r--contrib/rpm/boxbackup.spec20
-rwxr-xr-xcontrib/solaris/bbackupd-smf-method.in2
-rwxr-xr-xcontrib/solaris/bbstored-smf-method.in2
-rw-r--r--contrib/suse/bbackupd.in4
-rw-r--r--contrib/suse/bbstored.in4
-rwxr-xr-xcontrib/windows/installer/boxbackup.mpi.in3392
-rwxr-xr-xcontrib/windows/installer/tools/InstallService.bat3
-rwxr-xr-xcontrib/windows/installer/tools/KillBackupProcess.bat3
-rwxr-xr-xcontrib/windows/installer/tools/QueryOutputAll.bat5
-rwxr-xr-xcontrib/windows/installer/tools/QueryOutputCurrent.bat5
-rwxr-xr-xcontrib/windows/installer/tools/ReloadConfig.bat3
-rwxr-xr-xcontrib/windows/installer/tools/RemoteControl.exebin0 -> 156536 bytes
-rwxr-xr-xcontrib/windows/installer/tools/RemoveService.bat3
-rwxr-xr-xcontrib/windows/installer/tools/RestartService.bat5
-rwxr-xr-xcontrib/windows/installer/tools/ShowUsage.bat3
-rwxr-xr-xcontrib/windows/installer/tools/StartService.bat3
-rwxr-xr-xcontrib/windows/installer/tools/StopService.bat3
-rwxr-xr-xcontrib/windows/installer/tools/Sync.bat3
29 files changed, 5450 insertions, 66 deletions
diff --git a/contrib/bbadmin/accounts.cgi b/contrib/bbadmin/accounts.cgi
new file mode 100755
index 00000000..d68b82c6
--- /dev/null
+++ b/contrib/bbadmin/accounts.cgi
@@ -0,0 +1,580 @@
+#!/usr/bin/perl
+
+# Box Backup web management interface (c) Chris Wilson, 2008
+#
+# LICENSE: The Box Backup license applies to this code, with the following
+# additional conditions:
+#
+# If you make any changes to this code, except for changes to existing
+# variables in the Configuration section below, you must publish the changes
+# under the same license, whether or not you distribute copies of the
+# changed version.
+#
+# If you use any of this code in a derivative work, you must publish the
+# source code of the derivative work under the same or compatible license,
+# whether or not you distribute copies of the derivative work.
+#
+# The terms of the Box Backup license may be viewed here:
+# https://www.boxbackup.org/license.html
+#
+# If you require access to the code under a different license, this may
+# be negotiated with the copyright holder.
+
+use strict;
+use warnings;
+
+# Variables which you may need to change to match your installation
+# Changes to existing variables are NOT required to be published.
+
+my $box_dir = "/etc/box";
+my $bbstored_dir = "$box_dir/bbstored";
+my $ca_dir = "/mnt/backup/boxbackup/ca";
+
+# You should not need to change these unless you have a non-standard installation
+
+my $bbstored_conf_file = "$box_dir/bbstored.conf";
+my $bbstoreaccounts = "/usr/local/sbin/bbstoreaccounts";
+my $accounts_db_file = undef;
+# my $accounts_db_file = "/etc/box/bbstored/accounts.txt";
+my $raidfile_conf_file = undef;
+# my $raidfile_conf_file = "/etc/box/raidfile.conf";
+my $sign_period = '5000';
+
+# install Perl module with:
+# perl -MCPAN -e 'install Config::Scoped'
+# perl -MCPAN -e 'force install P/PT/PTHOMSEN/BoxBackup/BBConfig-0.03.tar.gz'
+# perl -MCPAN -e 'install Convert::ASN1'
+# download http://search.cpan.org/CPAN/authors/id/L/LE/LEO/Convert-X509-0.1.tar.gz,
+# unpack, and move the Convert folder to /usr/lib/perl5/site_perl/X.X.X
+
+# Check that SSL is being used.
+# DO NOT DISABLE THIS unless you really know what you're doing!
+die "This script requires an SSL web server" unless $ENV{HTTPS};
+
+# Check that the script is protected by basic authentication.
+# DO NOT DISABLE THIS unless you really know what you're doing!
+die "This script requires HTTP Authentication" unless $ENV{REMOTE_USER};
+
+# You should not need to change anything below this line.
+# If you do, you must publish your changes to comply with the license.
+
+use BoxBackup::Config::Accounts;
+use BoxBackup::Config::DiskSets;
+use CGI::Carp qw(fatalsToBrowser);
+use CGI::Pretty;
+use Config::Scoped;
+use Convert::X509::Request;
+use English;
+use Fcntl;
+use File::Temp;
+use URI;
+use URI::QueryParam;
+
+sub check_access($$)
+{
+ my ($file,$desc) = @_;
+ unless (-r $file)
+ {
+ open FILE, "< $file" and die "should have failed";
+ die "Failed to access $desc ($file): $!";
+ }
+}
+
+sub check_executable($$)
+{
+ my ($file,$desc) = @_;
+ unless (-x $file)
+ {
+ open FILE, "< $file" and die "should have failed";
+ die "$desc is not executable ($file): $!";
+ }
+}
+
+
+my $cgi = new CGI;
+
+if (my $download = $cgi->param("download"))
+{
+ my ($filename, $acct_no);
+
+ if ($download eq "cert")
+ {
+ $acct_no = $cgi->param("account");
+ $acct_no =~ tr/0-9a-fA-F//cd;
+ $filename = "$acct_no-cert.pem";
+ }
+ elsif ($download eq "cacert")
+ {
+ $filename = "serverCA.pem";
+ }
+ else
+ {
+ die "No such download method $download";
+ }
+
+ print $cgi->header(-type => "text/plain",
+ -"content-disposition" => "attachment; filename=$filename");
+
+ my $send_file;
+
+ if ($download eq "cert")
+ {
+ $send_file = "$ca_dir/clients/$filename";
+ }
+ elsif ($download eq "cacert")
+ {
+ $send_file = "$ca_dir/roots/serverCA.pem";
+ }
+
+ die "File does not exist: $send_file"
+ unless -f $send_file;
+ die "File is not readable by user " . getpwuid($UID) .
+ ": $send_file" unless -r $send_file;
+
+ open SENDFILE, "< $send_file" or die "Failed to open file " .
+ "$send_file: $!";
+ while (my $line = <SENDFILE>)
+ {
+ print $line;
+ }
+ close SENDFILE;
+ exit 0;
+}
+
+print $cgi->header(), $cgi->start_html(-title=>"Box Backup Certificates",
+ -style=>'bb.css');
+print $cgi->h1("Box Backup Certificates");
+
+check_access($bbstored_conf_file, "BBStoreD configuration file");
+
+my $bbstored_conf = Config::Scoped->new(file => $bbstored_conf_file)->parse();
+
+$accounts_db_file ||= $bbstored_conf->{'Server'}{'AccountDatabase'};
+die "Missing AccountDatabase in $bbstored_conf_file" unless $accounts_db_file;
+check_access($accounts_db_file, "Accounts Database");
+
+$raidfile_conf_file ||= $bbstored_conf->{'Server'}{'RaidFileConf'};
+die "Missing RaidFileConf in $bbstored_conf_file" unless $raidfile_conf_file;
+check_access($raidfile_conf_file, "RaidFile configuration file");
+
+my $accounts_db = BoxBackup::Config::Accounts->new($accounts_db_file);
+
+check_executable($bbstoreaccounts, "bbstoreaccounts program");
+
+sub error($)
+{
+ my ($message) = @_;
+ unless ($message =~ /^</)
+ {
+ $message = $cgi->p($message);
+ }
+ print $cgi->div({-class=>"error"}, $message);
+ return 0;
+}
+
+sub url
+{
+ my $cgi = shift @_;
+ my %params = @_;
+ my $uri = URI->new($cgi->url(-absolute=>1));
+ foreach my $param (keys %params)
+ {
+ $uri->query_param($param, $params{$param});
+ }
+ return $uri;
+}
+
+sub create_account($)
+{
+ my ($cgi) = @_;
+
+ my $upload = $cgi->upload('req');
+ unless ($upload)
+ {
+ return error("Please attach a certificate request file.");
+ }
+
+ my $tempfile = File::Temp->new("bbaccount-certreq-XXXXXX.pem");
+ my $csr_data = "";
+
+ while (my $line = <$upload>)
+ {
+ print $tempfile $line;
+ $csr_data .= $line;
+ }
+
+ my @accounts = $accounts_db->getAccountIDs();
+ my $new_acc_no = $cgi->param('account');
+ if (not $new_acc_no)
+ {
+ return error("Please enter an account number.");
+ }
+
+ foreach my $account_no (@accounts)
+ {
+ if ($account_no == $new_acc_no)
+ {
+ return error("The account number $new_acc_no " .
+ "already exists, please use one which " .
+ "does not.");
+ }
+ }
+
+ my $req = Convert::X509::Request->new($csr_data);
+ my $cn;
+ foreach my $part ($req->subject)
+ {
+ if ($part =~ /^cn=(.*)/i)
+ {
+ $cn = $1;
+ last;
+ }
+ }
+
+ unless ($cn)
+ {
+ return error("The certificate request does not include a " .
+ "common name, which should be BACKUP-$new_acc_no.");
+ }
+
+ unless ($cn eq "BACKUP-$new_acc_no")
+ {
+ return error("The certificate request includes the wrong " .
+ "common name. Expected " .
+ "<tt>BACKUP-$new_acc_no</tt> but found " .
+ "<tt>$cn</tt>.");
+ }
+
+ my $out_cert_dir = "$ca_dir/clients";
+ unless (-w $out_cert_dir)
+ {
+ return error("Cannot write to certificate directory " .
+ "<tt>$out_cert_dir</tt> as user " .
+ "<tt>" . getpwuid($UID) . "</tt>.");
+ }
+
+ my $out_cert = "$out_cert_dir/$new_acc_no-cert.pem";
+ if (-f $out_cert and not -w $out_cert)
+ {
+ return error("The certificate file <tt>$out_cert</tt> " .
+ "exists and is not writable as user " .
+ "<tt>$out_cert_dir</tt> as user " .
+ "<tt>" . getpwuid($UID) . "</tt>.");
+ }
+
+ my $client_ca_cert_file = "$ca_dir/roots/clientCA.pem";
+ unless (-r $client_ca_cert_file)
+ {
+ return error("The client CA certificate file " .
+ "<tt>$client_ca_cert_file</tt> " .
+ "is not readable by user " .
+ "<tt>" . getpwuid($UID) . "</tt>.");
+ }
+
+ my $client_ca_key_file = "$ca_dir/keys/clientRootKey.pem";
+ unless (-r $client_ca_key_file)
+ {
+ return error("The client CA key file " .
+ "<tt>$client_ca_key_file</tt> " .
+ "is not readable by user " .
+ "<tt>" . getpwuid($UID) . "</tt>.");
+ }
+
+ my $serial_file = "$ca_dir/roots/clientCA.srl";
+ unless (-w $serial_file)
+ {
+ return error("The certificate serial number file " .
+ "<tt>$serial_file</tt> " .
+ "is not writable by user " .
+ "<tt>" . getpwuid($UID) . "</tt>.");
+ }
+
+ my $outputfile = File::Temp->new("bbaccounts-openssl-output-XXXXXX");
+
+ if (system("openssl x509 -req -in $tempfile -sha1 " .
+ "-extensions usr_crt " .
+ "-CA $client_ca_cert_file " .
+ "-CAkey $client_ca_key_file " .
+ "-out $out_cert -days $sign_period " .
+ ">$outputfile 2>&1") != 0)
+ {
+ open ERR, "< $outputfile" or die "$outputfile: $!";
+ my $errors = join("", <ERR>);
+ close ERR;
+ return error($cgi->p("Failed to sign certificate:") .
+ $cgi->pre($errors));
+ }
+
+ my $cert_uri = url($cgi, download => "cert", account => $new_acc_no);
+ my $ca_uri = url($cgi, download => "cacert");
+
+ print $cgi->div({-class=>"success"},
+ $cgi->p("Account created. Please download the following " .
+ "files:") .
+ $cgi->ul(
+ $cgi->li($cgi->a({href=>$cert_uri},
+ "Client Certificate")),
+ $cgi->li($cgi->a({href=>$ca_uri},
+ "CA Certificate"))
+ )
+ );
+
+ return 1;
+}
+
+if ($cgi->param("create"))
+{
+ print $cgi->h2("Account Creation");
+ create_account($cgi);
+}
+
+print $cgi->h2("Accounts");
+print $cgi->start_table({-border=>0, -class=>"numbers"});
+
+print $cgi->Tr(
+ $cgi->th("Account"),
+ $cgi->th('Used'), $cgi->th('%'),
+ $cgi->th('Old files'), $cgi->th('%'),
+ $cgi->th('Deleted files'), $cgi->th('%'),
+ $cgi->th('Directories'), $cgi->th('%'),
+ $cgi->th('Soft limit'), $cgi->th('%'),
+ $cgi->th('Hard limit'),
+ $cgi->th('Actions')
+ );
+
+sub human_format($)
+{
+ my ($kb) = @_;
+ die "bad format in value: expected number followed by kB, " .
+ "found '$kb'" unless $kb =~ /^(\d+) (kB)$/;
+
+ my $value = $1;
+ my $units = $2;
+
+ if ($value > 1024)
+ {
+ $value /= 1024;
+ $units = "MB";
+ }
+
+ if ($value > 1024)
+ {
+ $value /= 1024;
+ $units = "GB";
+ }
+
+ $value = sprintf("%.1f", $value);
+ return "$value $units";
+}
+
+sub bbstoreaccounts_format($)
+{
+ my ($kb) = @_;
+ die unless $kb =~ /^(\d+) (kB)$/;
+
+ my $value = $1;
+ my $units = "K";
+
+ unless ($value % 1024)
+ {
+ $value /= 1024;
+ $units = "M";
+ }
+
+ unless ($value % 1024)
+ {
+ $value /= 1024;
+ $units = "G";
+ }
+
+ return "$value$units";
+}
+
+sub get_account_info($)
+{
+ my ($account) = @_;
+
+ open BBSA, "$bbstoreaccounts -c $bbstored_conf_file -m info $account |"
+ or die "Failed to get account info for $account: $!";
+
+ my $account_info = {};
+
+ while (my $line = <BBSA>)
+ {
+ unless ($line =~ m/([^:]*): (.*)/)
+ {
+ die "Bad format in bbstoreaccounts info output " .
+ "for account $account: '$line'";
+ }
+
+ my $name = $1;
+ my $value = $2;
+
+ if ($value =~ /(.*), (.*)/)
+ {
+ $account_info->{$name} = [$1, $2];
+ }
+ else
+ {
+ $account_info->{$name} = $value;
+ }
+ }
+
+ return $account_info;
+}
+
+sub format_account_info($)
+{
+ my ($values) = @_;
+ my $kb = $values->[0];
+ my $pc = $values->[1];
+ return $cgi->td(human_format($kb)), $cgi->td($values->[1]);
+}
+
+my %account_numbers;
+
+my @accounts = $accounts_db->getAccountIDs();
+foreach my $i (@accounts)
+{
+ die "Duplicate account number $i" if $account_numbers{hex($i)};
+ $account_numbers{hex($i)} = 1;
+
+ # Find out what account is on what diskset.
+ my $disk = $accounts_db->getDisk($i);
+
+ # store limits
+ my $account_info = get_account_info($i);
+
+ print $cgi->Tr(
+ $cgi->td($i),
+ format_account_info($account_info->{'Used'}),
+ format_account_info($account_info->{'Old files'}),
+ format_account_info($account_info->{'Deleted files'}),
+ format_account_info($account_info->{'Directories'}),
+ format_account_info($account_info->{'Soft limit'}),
+ $cgi->td(human_format($account_info->{'Hard limit'}[0])),
+ $cgi->td($cgi->a({-href=>url($cgi, account=>$i)},
+ "Edit"))
+ );
+}
+
+print $cgi->end_table();
+
+my $account_no = $cgi->param("account");
+$account_no =~ tr/0-9a-fA-F//cd;
+
+if (not $cgi->param("showcreate"))
+{
+ print $cgi->start_form,
+ $cgi->submit(-name=>"showcreate",
+ -value=>"Create Account"),
+ $cgi->end_form();
+}
+
+if ($account_no)
+{
+ print $cgi->h2("Edit Account");
+ my $account_info = get_account_info($account_no);
+ $cgi->param("account", $account_no);
+ $cgi->param("soft_limit",
+ bbstoreaccounts_format($account_info->{'Soft limit'}[0]));
+ $cgi->param("hard_limit",
+ bbstoreaccounts_format($account_info->{'Hard limit'}[0]));
+}
+elsif ($cgi->param("showcreate"))
+{
+ print $cgi->h2("Create Account");
+}
+
+if ($account_no or $cgi->param("showcreate"))
+{
+ my $new_account_no = 1;
+ while ($account_numbers{$new_account_no})
+ {
+ $new_account_no++;
+ }
+
+ my $disksets_conf = BoxBackup::Config::DiskSets->new($raidfile_conf_file);
+ my @disk_names = $disksets_conf->getListofDisks();
+ my @disk_numbers;
+ my %disk_labels;
+
+ foreach my $name (@disk_names)
+ {
+ my $num = $disksets_conf->getParamVal($name, "SetNumber");
+ push @disk_numbers, $num;
+ $disk_labels{$num} = $name;
+ }
+
+ print $cgi->start_multipart_form(),
+ $cgi->start_table();
+
+ if ($account_no)
+ {
+ print $cgi->Tr(
+ $cgi->th("Account Number"),
+ $cgi->td($account_no .
+ $cgi->hidden("account", $account_no))
+ );
+ }
+ else
+ {
+ print $cgi->Tr(
+ $cgi->th("Account Number"),
+ $account_no ? $account_no :
+ $cgi->td($cgi->textfield(-name => "account",
+ -default => sprintf("%x", $new_account_no))),
+ );
+ }
+
+ if (not $account_no)
+ {
+ print $cgi->Tr(
+ $cgi->th("Disk Set"),
+ $cgi->td($cgi->popup_menu(-name => "disk_set",
+ -values => \@disk_numbers,
+ -labels => \%disk_labels))
+ );
+ }
+
+ print $cgi->Tr(
+ $cgi->th("Soft Limit"),
+ $cgi->td($cgi->textfield(-name => "soft_limit",
+ -default => "10G"))
+ ),
+ $cgi->Tr(
+ $cgi->th("Hard Limit"),
+ $cgi->td($cgi->textfield(-name => "hard_limit",
+ -default => "20G"))
+ ),
+ $cgi->Tr(
+ $cgi->th("Certificate Request"),
+ $cgi->td($cgi->filefield({
+ -name => "req",
+ -default => "*.crt"
+ }))
+ );
+
+ if ($account_no)
+ {
+ print $cgi->Tr(
+ $cgi->th(),
+ $cgi->td($cgi->submit(-name => "update",
+ -value => "Update Account"))
+ );
+ }
+ else
+ {
+ print $cgi->Tr(
+ $cgi->th(),
+ $cgi->td($cgi->submit(-name => "create",
+ -value => "Create Account"))
+ );
+ }
+
+ print $cgi->end_table(), $cgi->end_form();
+}
+
+print $cgi->end_html;
+
+exit 0;
diff --git a/contrib/bbadmin/apache.conf b/contrib/bbadmin/apache.conf
new file mode 100644
index 00000000..e22668ab
--- /dev/null
+++ b/contrib/bbadmin/apache.conf
@@ -0,0 +1,14 @@
+Alias /bbadmin /var/www/localhost/bbadmin
+
+<Directory /var/www/localhost/bbadmin>
+ AuthType basic
+ AuthName "Box Backup Web Management Interface"
+ AuthUserFile /etc/apache2/bbadmin.cgi.htpasswd
+ Require valid-user
+
+ Allow from all
+
+ Options ExecCGI
+ AddHandler cgi-script .cgi
+ DirectoryIndex accounts.cgi
+</Directory>
diff --git a/contrib/bbadmin/bb.css b/contrib/bbadmin/bb.css
new file mode 100644
index 00000000..76d48e93
--- /dev/null
+++ b/contrib/bbadmin/bb.css
@@ -0,0 +1,70 @@
+body
+{
+ background: #edeef3;
+}
+
+table
+{
+ border-spacing: 0px;
+}
+
+h1, th
+{
+ background: #e4e6ed;
+}
+
+h1
+{
+ border-top: 1px solid #c4c4d5;
+ border-bottom: 1px solid #fff;
+}
+
+td, th
+{
+ border-top: 1px solid #fff;
+ border-bottom: 1px solid #c4c4d5;
+ margin: 0px;
+ padding: 0.2em 0.5em;
+}
+
+th
+{
+ text-align: left;
+}
+
+table.numbers td
+{
+ text-align: right;
+}
+
+div.error, div.success
+{
+ margin: 1em;
+}
+
+div.error>*, div.success>*
+{
+ margin: 0.5em;
+}
+
+div.error
+{
+ background: #fdd;
+ border: 2px solid #c00;
+}
+
+div.success
+{
+ background: #dfd;
+ border: 2px solid #0c0;
+}
+
+h2, table, p
+{
+ margin: 0.5em;
+}
+
+form
+{
+ margin: 0.5em 0;
+}
diff --git a/contrib/bbreporter/LICENSE b/contrib/bbreporter/LICENSE
new file mode 100644
index 00000000..94a9ed02
--- /dev/null
+++ b/contrib/bbreporter/LICENSE
@@ -0,0 +1,674 @@
+ GNU GENERAL PUBLIC LICENSE
+ Version 3, 29 June 2007
+
+ Copyright (C) 2007 Free Software Foundation, Inc. <http://fsf.org/>
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+ Preamble
+
+ The GNU General Public License is a free, copyleft license for
+software and other kinds of works.
+
+ The licenses for most software and other practical works are designed
+to take away your freedom to share and change the works. By contrast,
+the GNU General Public License is intended to guarantee your freedom to
+share and change all versions of a program--to make sure it remains free
+software for all its users. We, the Free Software Foundation, use the
+GNU General Public License for most of our software; it applies also to
+any other work released this way by its authors. You can apply it to
+your programs, too.
+
+ 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
+them 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.
+
+ To protect your rights, we need to prevent others from denying you
+these rights or asking you to surrender the rights. Therefore, you have
+certain responsibilities if you distribute copies of the software, or if
+you modify it: responsibilities to respect the freedom of others.
+
+ For example, if you distribute copies of such a program, whether
+gratis or for a fee, you must pass on to the recipients the same
+freedoms that you received. 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.
+
+ Developers that use the GNU GPL protect your rights with two steps:
+(1) assert copyright on the software, and (2) offer you this License
+giving you legal permission to copy, distribute and/or modify it.
+
+ For the developers' and authors' protection, the GPL clearly explains
+that there is no warranty for this free software. For both users' and
+authors' sake, the GPL requires that modified versions be marked as
+changed, so that their problems will not be attributed erroneously to
+authors of previous versions.
+
+ Some devices are designed to deny users access to install or run
+modified versions of the software inside them, although the manufacturer
+can do so. This is fundamentally incompatible with the aim of
+protecting users' freedom to change the software. The systematic
+pattern of such abuse occurs in the area of products for individuals to
+use, which is precisely where it is most unacceptable. Therefore, we
+have designed this version of the GPL to prohibit the practice for those
+products. If such problems arise substantially in other domains, we
+stand ready to extend this provision to those domains in future versions
+of the GPL, as needed to protect the freedom of users.
+
+ Finally, every program is threatened constantly by software patents.
+States should not allow patents to restrict development and use of
+software on general-purpose computers, but in those that do, we wish to
+avoid the special danger that patents applied to a free program could
+make it effectively proprietary. To prevent this, the GPL assures that
+patents cannot be used to render the program non-free.
+
+ The precise terms and conditions for copying, distribution and
+modification follow.
+
+ TERMS AND CONDITIONS
+
+ 0. Definitions.
+
+ "This License" refers to version 3 of the GNU General Public License.
+
+ "Copyright" also means copyright-like laws that apply to other kinds of
+works, such as semiconductor masks.
+
+ "The Program" refers to any copyrightable work licensed under this
+License. Each licensee is addressed as "you". "Licensees" and
+"recipients" may be individuals or organizations.
+
+ To "modify" a work means to copy from or adapt all or part of the work
+in a fashion requiring copyright permission, other than the making of an
+exact copy. The resulting work is called a "modified version" of the
+earlier work or a work "based on" the earlier work.
+
+ A "covered work" means either the unmodified Program or a work based
+on the Program.
+
+ To "propagate" a work means to do anything with it that, without
+permission, would make you directly or secondarily liable for
+infringement under applicable copyright law, except executing it on a
+computer or modifying a private copy. Propagation includes copying,
+distribution (with or without modification), making available to the
+public, and in some countries other activities as well.
+
+ To "convey" a work means any kind of propagation that enables other
+parties to make or receive copies. Mere interaction with a user through
+a computer network, with no transfer of a copy, is not conveying.
+
+ An interactive user interface displays "Appropriate Legal Notices"
+to the extent that it includes a convenient and prominently visible
+feature that (1) displays an appropriate copyright notice, and (2)
+tells the user that there is no warranty for the work (except to the
+extent that warranties are provided), that licensees may convey the
+work under this License, and how to view a copy of this License. If
+the interface presents a list of user commands or options, such as a
+menu, a prominent item in the list meets this criterion.
+
+ 1. Source Code.
+
+ The "source code" for a work means the preferred form of the work
+for making modifications to it. "Object code" means any non-source
+form of a work.
+
+ A "Standard Interface" means an interface that either is an official
+standard defined by a recognized standards body, or, in the case of
+interfaces specified for a particular programming language, one that
+is widely used among developers working in that language.
+
+ The "System Libraries" of an executable work include anything, other
+than the work as a whole, that (a) is included in the normal form of
+packaging a Major Component, but which is not part of that Major
+Component, and (b) serves only to enable use of the work with that
+Major Component, or to implement a Standard Interface for which an
+implementation is available to the public in source code form. A
+"Major Component", in this context, means a major essential component
+(kernel, window system, and so on) of the specific operating system
+(if any) on which the executable work runs, or a compiler used to
+produce the work, or an object code interpreter used to run it.
+
+ The "Corresponding Source" for a work in object code form means all
+the source code needed to generate, install, and (for an executable
+work) run the object code and to modify the work, including scripts to
+control those activities. However, it does not include the work's
+System Libraries, or general-purpose tools or generally available free
+programs which are used unmodified in performing those activities but
+which are not part of the work. For example, Corresponding Source
+includes interface definition files associated with source files for
+the work, and the source code for shared libraries and dynamically
+linked subprograms that the work is specifically designed to require,
+such as by intimate data communication or control flow between those
+subprograms and other parts of the work.
+
+ The Corresponding Source need not include anything that users
+can regenerate automatically from other parts of the Corresponding
+Source.
+
+ The Corresponding Source for a work in source code form is that
+same work.
+
+ 2. Basic Permissions.
+
+ All rights granted under this License are granted for the term of
+copyright on the Program, and are irrevocable provided the stated
+conditions are met. This License explicitly affirms your unlimited
+permission to run the unmodified Program. The output from running a
+covered work is covered by this License only if the output, given its
+content, constitutes a covered work. This License acknowledges your
+rights of fair use or other equivalent, as provided by copyright law.
+
+ You may make, run and propagate covered works that you do not
+convey, without conditions so long as your license otherwise remains
+in force. You may convey covered works to others for the sole purpose
+of having them make modifications exclusively for you, or provide you
+with facilities for running those works, provided that you comply with
+the terms of this License in conveying all material for which you do
+not control copyright. Those thus making or running the covered works
+for you must do so exclusively on your behalf, under your direction
+and control, on terms that prohibit them from making any copies of
+your copyrighted material outside their relationship with you.
+
+ Conveying under any other circumstances is permitted solely under
+the conditions stated below. Sublicensing is not allowed; section 10
+makes it unnecessary.
+
+ 3. Protecting Users' Legal Rights From Anti-Circumvention Law.
+
+ No covered work shall be deemed part of an effective technological
+measure under any applicable law fulfilling obligations under article
+11 of the WIPO copyright treaty adopted on 20 December 1996, or
+similar laws prohibiting or restricting circumvention of such
+measures.
+
+ When you convey a covered work, you waive any legal power to forbid
+circumvention of technological measures to the extent such circumvention
+is effected by exercising rights under this License with respect to
+the covered work, and you disclaim any intention to limit operation or
+modification of the work as a means of enforcing, against the work's
+users, your or third parties' legal rights to forbid circumvention of
+technological measures.
+
+ 4. Conveying Verbatim Copies.
+
+ You may convey verbatim copies of the Program's source code as you
+receive it, in any medium, provided that you conspicuously and
+appropriately publish on each copy an appropriate copyright notice;
+keep intact all notices stating that this License and any
+non-permissive terms added in accord with section 7 apply to the code;
+keep intact all notices of the absence of any warranty; and give all
+recipients a copy of this License along with the Program.
+
+ You may charge any price or no price for each copy that you convey,
+and you may offer support or warranty protection for a fee.
+
+ 5. Conveying Modified Source Versions.
+
+ You may convey a work based on the Program, or the modifications to
+produce it from the Program, in the form of source code under the
+terms of section 4, provided that you also meet all of these conditions:
+
+ a) The work must carry prominent notices stating that you modified
+ it, and giving a relevant date.
+
+ b) The work must carry prominent notices stating that it is
+ released under this License and any conditions added under section
+ 7. This requirement modifies the requirement in section 4 to
+ "keep intact all notices".
+
+ c) You must license the entire work, as a whole, under this
+ License to anyone who comes into possession of a copy. This
+ License will therefore apply, along with any applicable section 7
+ additional terms, to the whole of the work, and all its parts,
+ regardless of how they are packaged. This License gives no
+ permission to license the work in any other way, but it does not
+ invalidate such permission if you have separately received it.
+
+ d) If the work has interactive user interfaces, each must display
+ Appropriate Legal Notices; however, if the Program has interactive
+ interfaces that do not display Appropriate Legal Notices, your
+ work need not make them do so.
+
+ A compilation of a covered work with other separate and independent
+works, which are not by their nature extensions of the covered work,
+and which are not combined with it such as to form a larger program,
+in or on a volume of a storage or distribution medium, is called an
+"aggregate" if the compilation and its resulting copyright are not
+used to limit the access or legal rights of the compilation's users
+beyond what the individual works permit. Inclusion of a covered work
+in an aggregate does not cause this License to apply to the other
+parts of the aggregate.
+
+ 6. Conveying Non-Source Forms.
+
+ You may convey a covered work in object code form under the terms
+of sections 4 and 5, provided that you also convey the
+machine-readable Corresponding Source under the terms of this License,
+in one of these ways:
+
+ a) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by the
+ Corresponding Source fixed on a durable physical medium
+ customarily used for software interchange.
+
+ b) Convey the object code in, or embodied in, a physical product
+ (including a physical distribution medium), accompanied by a
+ written offer, valid for at least three years and valid for as
+ long as you offer spare parts or customer support for that product
+ model, to give anyone who possesses the object code either (1) a
+ copy of the Corresponding Source for all the software in the
+ product that is covered by this License, on a durable physical
+ medium customarily used for software interchange, for a price no
+ more than your reasonable cost of physically performing this
+ conveying of source, or (2) access to copy the
+ Corresponding Source from a network server at no charge.
+
+ c) Convey individual copies of the object code with a copy of the
+ written offer to provide the Corresponding Source. This
+ alternative is allowed only occasionally and noncommercially, and
+ only if you received the object code with such an offer, in accord
+ with subsection 6b.
+
+ d) Convey the object code by offering access from a designated
+ place (gratis or for a charge), and offer equivalent access to the
+ Corresponding Source in the same way through the same place at no
+ further charge. You need not require recipients to copy the
+ Corresponding Source along with the object code. If the place to
+ copy the object code is a network server, the Corresponding Source
+ may be on a different server (operated by you or a third party)
+ that supports equivalent copying facilities, provided you maintain
+ clear directions next to the object code saying where to find the
+ Corresponding Source. Regardless of what server hosts the
+ Corresponding Source, you remain obligated to ensure that it is
+ available for as long as needed to satisfy these requirements.
+
+ e) Convey the object code using peer-to-peer transmission, provided
+ you inform other peers where the object code and Corresponding
+ Source of the work are being offered to the general public at no
+ charge under subsection 6d.
+
+ A separable portion of the object code, whose source code is excluded
+from the Corresponding Source as a System Library, need not be
+included in conveying the object code work.
+
+ A "User Product" is either (1) a "consumer product", which means any
+tangible personal property which is normally used for personal, family,
+or household purposes, or (2) anything designed or sold for incorporation
+into a dwelling. In determining whether a product is a consumer product,
+doubtful cases shall be resolved in favor of coverage. For a particular
+product received by a particular user, "normally used" refers to a
+typical or common use of that class of product, regardless of the status
+of the particular user or of the way in which the particular user
+actually uses, or expects or is expected to use, the product. A product
+is a consumer product regardless of whether the product has substantial
+commercial, industrial or non-consumer uses, unless such uses represent
+the only significant mode of use of the product.
+
+ "Installation Information" for a User Product means any methods,
+procedures, authorization keys, or other information required to install
+and execute modified versions of a covered work in that User Product from
+a modified version of its Corresponding Source. The information must
+suffice to ensure that the continued functioning of the modified object
+code is in no case prevented or interfered with solely because
+modification has been made.
+
+ If you convey an object code work under this section in, or with, or
+specifically for use in, a User Product, and the conveying occurs as
+part of a transaction in which the right of possession and use of the
+User Product is transferred to the recipient in perpetuity or for a
+fixed term (regardless of how the transaction is characterized), the
+Corresponding Source conveyed under this section must be accompanied
+by the Installation Information. But this requirement does not apply
+if neither you nor any third party retains the ability to install
+modified object code on the User Product (for example, the work has
+been installed in ROM).
+
+ The requirement to provide Installation Information does not include a
+requirement to continue to provide support service, warranty, or updates
+for a work that has been modified or installed by the recipient, or for
+the User Product in which it has been modified or installed. Access to a
+network may be denied when the modification itself materially and
+adversely affects the operation of the network or violates the rules and
+protocols for communication across the network.
+
+ Corresponding Source conveyed, and Installation Information provided,
+in accord with this section must be in a format that is publicly
+documented (and with an implementation available to the public in
+source code form), and must require no special password or key for
+unpacking, reading or copying.
+
+ 7. Additional Terms.
+
+ "Additional permissions" are terms that supplement the terms of this
+License by making exceptions from one or more of its conditions.
+Additional permissions that are applicable to the entire Program shall
+be treated as though they were included in this License, to the extent
+that they are valid under applicable law. If additional permissions
+apply only to part of the Program, that part may be used separately
+under those permissions, but the entire Program remains governed by
+this License without regard to the additional permissions.
+
+ When you convey a copy of a covered work, you may at your option
+remove any additional permissions from that copy, or from any part of
+it. (Additional permissions may be written to require their own
+removal in certain cases when you modify the work.) You may place
+additional permissions on material, added by you to a covered work,
+for which you have or can give appropriate copyright permission.
+
+ Notwithstanding any other provision of this License, for material you
+add to a covered work, you may (if authorized by the copyright holders of
+that material) supplement the terms of this License with terms:
+
+ a) Disclaiming warranty or limiting liability differently from the
+ terms of sections 15 and 16 of this License; or
+
+ b) Requiring preservation of specified reasonable legal notices or
+ author attributions in that material or in the Appropriate Legal
+ Notices displayed by works containing it; or
+
+ c) Prohibiting misrepresentation of the origin of that material, or
+ requiring that modified versions of such material be marked in
+ reasonable ways as different from the original version; or
+
+ d) Limiting the use for publicity purposes of names of licensors or
+ authors of the material; or
+
+ e) Declining to grant rights under trademark law for use of some
+ trade names, trademarks, or service marks; or
+
+ f) Requiring indemnification of licensors and authors of that
+ material by anyone who conveys the material (or modified versions of
+ it) with contractual assumptions of liability to the recipient, for
+ any liability that these contractual assumptions directly impose on
+ those licensors and authors.
+
+ All other non-permissive additional terms are considered "further
+restrictions" within the meaning of section 10. If the Program as you
+received it, or any part of it, contains a notice stating that it is
+governed by this License along with a term that is a further
+restriction, you may remove that term. If a license document contains
+a further restriction but permits relicensing or conveying under this
+License, you may add to a covered work material governed by the terms
+of that license document, provided that the further restriction does
+not survive such relicensing or conveying.
+
+ If you add terms to a covered work in accord with this section, you
+must place, in the relevant source files, a statement of the
+additional terms that apply to those files, or a notice indicating
+where to find the applicable terms.
+
+ Additional terms, permissive or non-permissive, may be stated in the
+form of a separately written license, or stated as exceptions;
+the above requirements apply either way.
+
+ 8. Termination.
+
+ You may not propagate or modify a covered work except as expressly
+provided under this License. Any attempt otherwise to propagate or
+modify it is void, and will automatically terminate your rights under
+this License (including any patent licenses granted under the third
+paragraph of section 11).
+
+ However, if you cease all violation of this License, then your
+license from a particular copyright holder is reinstated (a)
+provisionally, unless and until the copyright holder explicitly and
+finally terminates your license, and (b) permanently, if the copyright
+holder fails to notify you of the violation by some reasonable means
+prior to 60 days after the cessation.
+
+ Moreover, your license from a particular copyright holder is
+reinstated permanently if the copyright holder notifies you of the
+violation by some reasonable means, this is the first time you have
+received notice of violation of this License (for any work) from that
+copyright holder, and you cure the violation prior to 30 days after
+your receipt of the notice.
+
+ Termination of your rights under this section does not terminate the
+licenses of parties who have received copies or rights from you under
+this License. If your rights have been terminated and not permanently
+reinstated, you do not qualify to receive new licenses for the same
+material under section 10.
+
+ 9. Acceptance Not Required for Having Copies.
+
+ You are not required to accept this License in order to receive or
+run a copy of the Program. Ancillary propagation of a covered work
+occurring solely as a consequence of using peer-to-peer transmission
+to receive a copy likewise does not require acceptance. However,
+nothing other than this License grants you permission to propagate or
+modify any covered work. These actions infringe copyright if you do
+not accept this License. Therefore, by modifying or propagating a
+covered work, you indicate your acceptance of this License to do so.
+
+ 10. Automatic Licensing of Downstream Recipients.
+
+ Each time you convey a covered work, the recipient automatically
+receives a license from the original licensors, to run, modify and
+propagate that work, subject to this License. You are not responsible
+for enforcing compliance by third parties with this License.
+
+ An "entity transaction" is a transaction transferring control of an
+organization, or substantially all assets of one, or subdividing an
+organization, or merging organizations. If propagation of a covered
+work results from an entity transaction, each party to that
+transaction who receives a copy of the work also receives whatever
+licenses to the work the party's predecessor in interest had or could
+give under the previous paragraph, plus a right to possession of the
+Corresponding Source of the work from the predecessor in interest, if
+the predecessor has it or can get it with reasonable efforts.
+
+ You may not impose any further restrictions on the exercise of the
+rights granted or affirmed under this License. For example, you may
+not impose a license fee, royalty, or other charge for exercise of
+rights granted under this License, and you may not initiate litigation
+(including a cross-claim or counterclaim in a lawsuit) alleging that
+any patent claim is infringed by making, using, selling, offering for
+sale, or importing the Program or any portion of it.
+
+ 11. Patents.
+
+ A "contributor" is a copyright holder who authorizes use under this
+License of the Program or a work on which the Program is based. The
+work thus licensed is called the contributor's "contributor version".
+
+ A contributor's "essential patent claims" are all patent claims
+owned or controlled by the contributor, whether already acquired or
+hereafter acquired, that would be infringed by some manner, permitted
+by this License, of making, using, or selling its contributor version,
+but do not include claims that would be infringed only as a
+consequence of further modification of the contributor version. For
+purposes of this definition, "control" includes the right to grant
+patent sublicenses in a manner consistent with the requirements of
+this License.
+
+ Each contributor grants you a non-exclusive, worldwide, royalty-free
+patent license under the contributor's essential patent claims, to
+make, use, sell, offer for sale, import and otherwise run, modify and
+propagate the contents of its contributor version.
+
+ In the following three paragraphs, a "patent license" is any express
+agreement or commitment, however denominated, not to enforce a patent
+(such as an express permission to practice a patent or covenant not to
+sue for patent infringement). To "grant" such a patent license to a
+party means to make such an agreement or commitment not to enforce a
+patent against the party.
+
+ If you convey a covered work, knowingly relying on a patent license,
+and the Corresponding Source of the work is not available for anyone
+to copy, free of charge and under the terms of this License, through a
+publicly available network server or other readily accessible means,
+then you must either (1) cause the Corresponding Source to be so
+available, or (2) arrange to deprive yourself of the benefit of the
+patent license for this particular work, or (3) arrange, in a manner
+consistent with the requirements of this License, to extend the patent
+license to downstream recipients. "Knowingly relying" means you have
+actual knowledge that, but for the patent license, your conveying the
+covered work in a country, or your recipient's use of the covered work
+in a country, would infringe one or more identifiable patents in that
+country that you have reason to believe are valid.
+
+ If, pursuant to or in connection with a single transaction or
+arrangement, you convey, or propagate by procuring conveyance of, a
+covered work, and grant a patent license to some of the parties
+receiving the covered work authorizing them to use, propagate, modify
+or convey a specific copy of the covered work, then the patent license
+you grant is automatically extended to all recipients of the covered
+work and works based on it.
+
+ A patent license is "discriminatory" if it does not include within
+the scope of its coverage, prohibits the exercise of, or is
+conditioned on the non-exercise of one or more of the rights that are
+specifically granted under this License. You may not convey a covered
+work if you are a party to an arrangement with a third party that is
+in the business of distributing software, under which you make payment
+to the third party based on the extent of your activity of conveying
+the work, and under which the third party grants, to any of the
+parties who would receive the covered work from you, a discriminatory
+patent license (a) in connection with copies of the covered work
+conveyed by you (or copies made from those copies), or (b) primarily
+for and in connection with specific products or compilations that
+contain the covered work, unless you entered into that arrangement,
+or that patent license was granted, prior to 28 March 2007.
+
+ Nothing in this License shall be construed as excluding or limiting
+any implied license or other defenses to infringement that may
+otherwise be available to you under applicable patent law.
+
+ 12. No Surrender of Others' Freedom.
+
+ If 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 convey a
+covered work so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you may
+not convey it at all. For example, if you agree to terms that obligate you
+to collect a royalty for further conveying from those to whom you convey
+the Program, the only way you could satisfy both those terms and this
+License would be to refrain entirely from conveying the Program.
+
+ 13. Use with the GNU Affero General Public License.
+
+ Notwithstanding any other provision of this License, you have
+permission to link or combine any covered work with a work licensed
+under version 3 of the GNU Affero General Public License into a single
+combined work, and to convey the resulting work. The terms of this
+License will continue to apply to the part which is the covered work,
+but the special requirements of the GNU Affero General Public License,
+section 13, concerning interaction through a network will apply to the
+combination as such.
+
+ 14. Revised Versions of this License.
+
+ The Free Software Foundation may publish revised and/or new versions of
+the GNU 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.
+
+ Each version is given a distinguishing version number. If the
+Program specifies that a certain numbered version of the GNU General
+Public License "or any later version" applies to it, you have the
+option of following the terms and conditions either of that numbered
+version or of any later version published by the Free Software
+Foundation. If the Program does not specify a version number of the
+GNU General Public License, you may choose any version ever published
+by the Free Software Foundation.
+
+ If the Program specifies that a proxy can decide which future
+versions of the GNU General Public License can be used, that proxy's
+public statement of acceptance of a version permanently authorizes you
+to choose that version for the Program.
+
+ Later license versions may give you additional or different
+permissions. However, no additional obligations are imposed on any
+author or copyright holder as a result of your choosing to follow a
+later version.
+
+ 15. Disclaimer of Warranty.
+
+ 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 "AS IS" 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.
+
+ 16. Limitation of Liability.
+
+ IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
+WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS
+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.
+
+ 17. Interpretation of Sections 15 and 16.
+
+ If the disclaimer of warranty and limitation of liability provided
+above cannot be given local legal effect according to their terms,
+reviewing courts shall apply local law that most closely approximates
+an absolute waiver of all civil liability in connection with the
+Program, unless a warranty or assumption of liability accompanies a
+copy of the Program in return for a fee.
+
+ END OF TERMS AND CONDITIONS
+
+ How to Apply These Terms to Your New Programs
+
+ 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.
+
+ 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
+state the exclusion of warranty; and each file should have at least
+the "copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the program's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ 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 3 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, see <http://www.gnu.org/licenses/>.
+
+Also add information on how to contact you by electronic and paper mail.
+
+ If the program does terminal interaction, make it output a short
+notice like this when it starts in an interactive mode:
+
+ <program> Copyright (C) <year> <name of author>
+ This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
+ This is free software, and you are welcome to redistribute it
+ under certain conditions; type `show c' for details.
+
+The hypothetical commands `show w' and `show c' should show the appropriate
+parts of the General Public License. Of course, your program's commands
+might be different; for a GUI interface, you would use an "about box".
+
+ You should also get your employer (if you work as a programmer) or school,
+if any, to sign a "copyright disclaimer" for the program, if necessary.
+For more information on this, and how to apply and follow the GNU GPL, see
+<http://www.gnu.org/licenses/>.
+
+ The GNU 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 Lesser General
+Public License instead of this License. But first, please read
+<http://www.gnu.org/philosophy/why-not-lgpl.html>.
diff --git a/contrib/bbreporter/bbreporter.py b/contrib/bbreporter/bbreporter.py
new file mode 100755
index 00000000..9c8253f1
--- /dev/null
+++ b/contrib/bbreporter/bbreporter.py
@@ -0,0 +1,538 @@
+#!/usr/bin/env python
+# BoxBackupReporter - Simple script to report on backups that have been
+# performed using BoxBackup.
+#
+# Copyright: (C) 2007 Three A IT Limited
+# Author: Kenny Millington <kenny.millington@3ait.co.uk>
+#
+# Credit: This script is based on the ideas of BoxReport.pl by Matt Brown of
+# Three A IT Support Limited.
+#
+################################################################################
+# !! Important !!
+# To make use of this script you need to run the boxbackup client with the -v
+# commandline option and set LogAllFileAccess = yes in your bbackupd.conf file.
+#
+# Notes on lazy mode:
+# If reporting on lazy mode backups you absolutely must ensure that
+# logrotate (or similar) rotates the log files at the same rate at
+# which you run this reporting script or you will report on the same
+# backup sessions on each execution.
+#
+# Notes on --rotate and log rotation in general:
+# The use-case for --rotate that I imagine is that you'll add a line like the
+# following into your syslog.conf file:-
+#
+# local6.* -/var/log/box
+#
+# Then specifying --rotate to this script will make it rotate the logs
+# each time you report on the backup so that you don't risk a backup session
+# being spread across two log files (e.g. syslog and syslog.0).
+#
+# NB: To do this you'll need to prevent logrotate/syslog from rotating your
+# /var/log/box file. On Debian based distros you'll need to edit two files.
+#
+# First: /etc/cron.daily/sysklogd, find the following line and make the
+# the required change:
+# Change: for LOG in `syslogd-listfiles`
+# To: for LOG in `syslogd-listfiles -s box`
+#
+# Second: /etc/cron.weekly/sysklogd, find the following line and make the
+# the required change:
+# Change: for LOG in `syslogd-listfiles --weekly`
+# To: for LOG in `syslogd-listfiles --weekly -s box`
+#
+# Alternatively, if suitable just ensure the backups stop before the
+# /etc/cron.daily/sysklogd file runs (usually 6:25am) and report on it
+# before the files get rotated. (If going for this option I'd just use
+# the main syslog file instead of creating a separate log file for box
+# backup since you know for a fact the syslog will get rotated daily.)
+#
+################################################################################
+# 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 3 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, see <http://www.gnu.org/licenses/>.
+#
+
+# If sendmail is not in one of these paths, add the path.
+SENDMAIL_PATHS = ["/usr/sbin/", "/usr/bin/", "/bin/" , "/sbin/"]
+
+# The name of the sendmail binary, you probably won't need to change this.
+SENDMAIL_BIN = "sendmail"
+
+# Number of files to rotate around
+ROTATE_COUNT = 7
+
+# Import the required libraries
+import sys, os, re, getopt, shutil, gzip
+
+class BoxBackupReporter:
+ class BoxBackupReporterError(Exception):
+ pass
+
+ def __init__(self, config_file="/etc/box/bbackupd.conf",
+ log_file="/var/log/syslog", email_to=None,
+ email_from="report@boxbackup", rotate=False,
+ verbose=False, stats=False, sort=False, debug=False):
+
+ # Config options
+ self.config_file = config_file
+ self.log_file = log_file
+ self.email_to = email_to
+ self.email_from = email_from
+ self.rotate_log_file = rotate
+ self.verbose_report = verbose
+ self.usage_stats = stats
+ self.sort_files = sort
+ self.debug = debug
+
+ # Regex's
+ self.re_automatic_backup = re.compile(" *AutomaticBackup *= *no", re.I)
+ self.re_syslog = re.compile("(\S+) +(\S+) +([\d:]+) +(\S+) +([^:]+): +"+
+ "(?:[A-Z]+:)? *([^:]+): *(.*)")
+
+ # Initialise report
+ self.reset()
+
+ def _debug(self, msg):
+ if self.debug:
+ sys.stderr.write("[bbreporter.py Debug]: %s\n" % msg)
+
+ def reset(self):
+ # Reset report data to default values
+ self.hostname = ""
+ self.patched_files = []
+ self.synced_files = []
+ self.uploaded_files = []
+ self.warnings = []
+ self.errors = []
+ self.stats = None
+ self.start_datetime = "Unknown"
+ self.end_datetime = "Unfinished"
+ self.report = "No report generated"
+
+ def run(self):
+ try:
+ self._determine_operating_mode()
+
+ if self.lazy_mode:
+ self._debug("Operating in LAZY MODE.")
+ else:
+ self._debug("Operating in SNAPSHOT MODE.")
+
+ except IOError:
+ raise BoxBackupReporter.BoxBackupReporterError("Error: "+\
+ "Config file \"%s\" could not be read." % self.config_file)
+
+ try:
+ self._parse_syslog()
+ except IOError:
+ raise BoxBackupReporter.BoxBackupReporterError("Error: "+\
+ "Log file \"%s\" could not be read." % self.log_file)
+
+ self._parse_stats()
+ self._generate_report()
+
+ def deliver(self):
+ # If we're not e-mailing the report then just dump it to stdout
+ # and return.
+ if self.email_to is None:
+ print self.report
+ # Now that we've delivered the report it's time to rotate the logs
+ # if we're requested to do so.
+ self._rotate_log()
+ return
+
+ # Locate the sendmail binary
+ sendmail = self._locate_sendmail()
+ if(sendmail is None):
+ raise BoxBackupReporter.BoxBackupReporterError("Error: "+\
+ "Could not find sendmail binary - Unable to send e-mail!")
+
+
+ # Set the subject based on whether we think we failed or not.
+ # (suffice it to say I consider getting an error and backing up
+ # no files a failure or indeed not finding a start time in the logs).
+ subject = "BoxBackup Reporter (%s) - " % self.hostname
+ if self.start_datetime == "Unknown" or\
+ (len(self.patched_files) == 0 and len(self.synced_files) == 0 and\
+ len(self.uploaded_files) == 0):
+ subject = subject + "FAILED"
+ else:
+ subject = subject + "SUCCESS"
+
+ if len(self.errors) > 0:
+ subject = subject + " (with errors)"
+
+ # Prepare the e-mail message.
+ mail = []
+ mail.append("To: " + self.email_to)
+ mail.append("From: " + self.email_from)
+ mail.append("Subject: " + subject)
+ mail.append("")
+ mail.append(self.report)
+
+ # Send the mail.
+ p = os.popen(sendmail + " -t", "w")
+ p.write("\r\n".join(mail))
+ p.close()
+
+ # Now that we've delivered the report it's time to rotate the logs
+ # if we're requested to do so.
+ self._rotate_log()
+
+ def _determine_operating_mode(self):
+ # Scan the config file and determine if we're running in lazy or
+ # snapshot mode.
+ cfh = open(self.config_file)
+
+ for line in cfh:
+ if not line.startswith("#"):
+ if self.re_automatic_backup.match(line):
+ self.lazy_mode = False
+ cfh.close()
+ return
+
+ self.lazy_mode = True
+ cfh.close()
+
+ def _parse_syslog(self):
+ lfh = open(self.log_file)
+
+ patched_files = {}
+ uploaded_files = {}
+ synced_files = {}
+
+ for line in lfh:
+ # Only run the regex if we find a box backup entry.
+ if line.find("Box Backup") > -1 or line.find("bbackupd") > -1:
+ raw_data = self.re_syslog.findall(line)
+ try:
+ data = raw_data[0]
+ except IndexError:
+ # If the regex didn't match it's not a message that we're
+ # interested in so move to the next line.
+ continue
+
+ # Set the hostname, it shouldn't change in a log file
+ self.hostname = data[3]
+
+ # If we find the backup-start event then set the start_datetime.
+ if data[6].find("backup-start") > -1:
+ # If we're not in lazy mode or the start_datetime hasn't
+ # been set then reset the data and set it.
+ #
+ # If we're in lazy mode and encounter a second backup-start
+ # we don't want to change the start_datetime likewise if
+ # we're not in lazy mode we do want to and we want to reset
+ # so we only capture the most recent session.
+ if not self.lazy_mode or self.start_datetime == "Unknown":
+ self._debug("Reset start dtime with old time: %s." %
+ self.start_datetime)
+
+ # Reset ourselves
+ self.reset()
+
+ # Reset our temporary variables which we store
+ # the files in.
+ patched_files = {}
+ uploaded_files = {}
+ synced_files = {}
+
+ self.start_datetime = data[1]+" "+data[0]+ " "+data[2]
+ self._debug("Reset start dtime with new time %s." %
+ self.start_datetime)
+
+ # If we find the backup-finish event then set the end_datetime.
+ elif data[6].find("backup-finish") > -1:
+ self.end_datetime = data[1] + " " + data[0] + " " + data[2]
+ self._debug("Set end dtime: %s" % self.end_datetime)
+
+ # Only log the events if we have our start time.
+ elif self.start_datetime != "Unknown":
+ # We found a patch event, add the file to the patched_files.
+ if data[5] == "Uploading patch to file":
+ patched_files[data[6]] = ""
+
+ # We found an upload event, add to uploaded files.
+ elif data[5] == "Uploading complete file":
+ uploaded_files[data[6]] = ""
+
+ # We found another upload event.
+ elif data[5] == "Uploaded file":
+ uploaded_files[data[6]] = ""
+
+ # We found a sync event, add the file to the synced_files.
+ elif data[5] == "Synchronised file":
+ synced_files[data[6]] = ""
+
+ # We found a warning, add the warning to the warnings.
+ elif data[5] == "WARNING":
+ self.warnings.append(data[6])
+
+ # We found an error, add the error to the errors.
+ elif data[5] == "ERROR":
+ self.errors.append(data[6])
+
+
+ self.patched_files = patched_files.keys()
+ self.uploaded_files = uploaded_files.keys()
+ self.synced_files = synced_files.keys()
+
+ # There's no point running the sort functions if we're not going
+ # to display the resultant lists.
+ if self.sort_files and self.verbose_report:
+ self.patched_files.sort()
+ self.uploaded_files.sort()
+
+
+ lfh.close()
+
+ def _parse_stats(self):
+ if(not self.usage_stats):
+ return
+
+ # Grab the stats from bbackupquery
+ sfh = os.popen("bbackupquery usage quit", "r")
+ raw_stats = sfh.read()
+ sfh.close()
+
+ # Parse the stats
+ stats_re = re.compile("commands.[\n ]*\n(.*)\n+", re.S)
+ stats = stats_re.findall(raw_stats)
+
+ try:
+ self.stats = stats[0]
+ except IndexError:
+ self.stats = "Unable to retrieve usage information."
+
+ def _generate_report(self):
+ if self.start_datetime == "Unknown":
+ self.report = "No report data has been found."
+ return
+
+ total_files = len(self.patched_files) + len(self.uploaded_files)
+
+ report = []
+ report.append("--------------------------------------------------")
+ report.append("Report Title : Box Backup - Backup Statistics")
+ report.append("Report Period : %s - %s" % (self.start_datetime,
+ self.end_datetime))
+ report.append("--------------------------------------------------")
+ report.append("")
+ report.append("This is your box backup report, in summary:")
+ report.append("")
+ report.append("%d file(s) have been backed up." % total_files)
+ report.append("%d file(s) were uploaded." % len(self.uploaded_files))
+ report.append("%d file(s) were patched." % len(self.patched_files))
+ report.append("%d file(s) were synchronised." % len(self.synced_files))
+
+ report.append("")
+ report.append("%d warning(s) occurred." % len(self.warnings))
+ report.append("%d error(s) occurred." % len(self.errors))
+ report.append("")
+ report.append("")
+
+ # If we asked for the backup stats and they're available
+ # show them.
+ if(self.stats is not None and self.stats != ""):
+ report.append("Your backup usage information follows:")
+ report.append("")
+ report.append(self.stats)
+ report.append("")
+ report.append("")
+
+ # List the files if we've been asked for a verbose report.
+ if(self.verbose_report):
+ if len(self.uploaded_files) > 0:
+ report.append("Uploaded Files (%d)" % len(self.uploaded_files))
+ report.append("---------------------")
+ for file in self.uploaded_files:
+ report.append(file)
+ report.append("")
+ report.append("")
+
+ if len(self.patched_files) > 0:
+ report.append("Patched Files (%d)" % len(self.patched_files))
+ report.append("---------------------")
+ for file in self.patched_files:
+ report.append(file)
+ report.append("")
+ report.append("")
+
+ # Always output the warnings/errors.
+ if len(self.warnings) > 0:
+ report.append("Warnings (%d)" % len(self.warnings))
+ report.append("---------------------")
+ for warning in self.warnings:
+ report.append(warning)
+ report.append("")
+ report.append("")
+
+ if len(self.errors) > 0:
+ report.append("Errors (%d)" % len(self.errors))
+ report.append("---------------------")
+ for error in self.errors:
+ report.append(error)
+ report.append("")
+ report.append("")
+
+ self.report = "\r\n".join(report)
+
+ def _locate_sendmail(self):
+ for path in SENDMAIL_PATHS:
+ sendmail = os.path.join(path, SENDMAIL_BIN)
+ if os.path.isfile(sendmail):
+ return sendmail
+
+ return None
+
+ def _rotate_log(self):
+ # If we're not configured to rotate then abort.
+ if(not self.rotate_log_file):
+ return
+
+ # So we have these files to possibly account for while we process the
+ # rotation:-
+ # self.log_file, self.log_file.0, self.log_file.1.gz, self.log_file.2.gz
+ # self.log_file.3.gz....self.log_file.(ROTATE_COUNT-1).gz
+ #
+ # Algorithm:-
+ # * Delete last file.
+ # * Work backwards moving 5->6, 4->5, 3->4, etc... but stop at .0
+ # * For .0 move it to .1 then gzip it.
+ # * Move self.log_file to .0
+ # * Done.
+
+ # If it exists, remove the oldest file.
+ if(os.path.isfile(self.log_file + ".%d.gz" % (ROTATE_COUNT - 1))):
+ os.unlink(self.log_file + ".%d.gz" % (ROTATE_COUNT - 1))
+
+ # Copy through the other gzipped log files.
+ for i in range(ROTATE_COUNT - 1, 1, -1):
+ src_file = self.log_file + ".%d.gz" % (i - 1)
+ dst_file = self.log_file + ".%d.gz" % i
+
+ # If the source file exists move/rename it.
+ if(os.path.isfile(src_file)):
+ shutil.move(src_file, dst_file)
+
+ # Now we need to handle the .0 -> .1.gz case.
+ if(os.path.isfile(self.log_file + ".0")):
+ # Move .0 to .1
+ shutil.move(self.log_file + ".0", self.log_file + ".1")
+
+ # gzip the file.
+ fh = open(self.log_file + ".1", "r")
+ zfh = gzip.GzipFile(self.log_file + ".1.gz", "w")
+ zfh.write(fh.read())
+ zfh.flush()
+ zfh.close()
+ fh.close()
+
+ # If gzip worked remove the original .1 file.
+ if(os.path.isfile(self.log_file + ".1.gz")):
+ os.unlink(self.log_file + ".1")
+
+ # Finally move the current logfile to .0
+ shutil.move(self.log_file, self.log_file + ".0")
+
+
+def stderr(text):
+ sys.stderr.write("%s\n" % text)
+
+def usage():
+ stderr("Usage: %s [OPTIONS]\n" % sys.argv[0])
+ stderr("Valid Options:-")
+ stderr(" --logfile=LOGFILE\t\t\tSpecify the logfile to process,\n"+\
+ "\t\t\t\t\tdefault: /var/log/syslog\n")
+
+ stderr(" --configfile=CONFIGFILE\t\tSpecify the bbackupd config file,\n "+\
+ "\t\t\t\t\tdefault: /etc/box/bbackupd.conf\n")
+
+ stderr(" --email-to=user@example.com\t\tSpecify the e-mail address(es)\n"+\
+ "\t\t\t\t\tto send the report to, default is to\n"+\
+ "\t\t\t\t\tdisplay the report on the console.\n")
+
+ stderr(" --email-from=user@example.com\t\tSpecify the e-mail address(es)"+\
+ "\n\t\t\t\t\tto set the From: address to,\n "+\
+ "\t\t\t\t\tdefault: report@boxbackup\n")
+
+ stderr(" --stats\t\t\t\tIncludes the usage stats retrieved from \n"+\
+ "\t\t\t\t\t'bbackupquery usage' in the report.\n")
+
+ stderr(" --sort\t\t\t\tSorts the file lists in verbose mode.\n")
+
+ stderr(" --debug\t\t\t\tEnables debug output.\n")
+
+ stderr(" --verbose\t\t\t\tList every file that was backed up to\n"+\
+ "\t\t\t\t\tthe server, default is to just display\n"+\
+ "\t\t\t\t\tthe summary.\n")
+
+ stderr(" --rotate\t\t\t\tRotates the log files like logrotate\n"+\
+ "\t\t\t\t\twould, see the comments for a use-case.\n")
+
+def main():
+ # The defaults
+ logfile = "/var/log/syslog"
+ configfile = "/etc/box/bbackupd.conf"
+ email_to = None
+ email_from = "report@boxbackup"
+ rotate = False
+ verbose = False
+ stats = False
+ sort = False
+ debug = False
+ # Parse the options
+ try:
+ opts, args = getopt.getopt(sys.argv[1:], "dosrvhl:c:t:f:",
+ ["help", "logfile=", "configfile=","email-to=",
+ "email-from=","rotate","verbose","stats","sort",
+ "debug"])
+ except getopt.GetoptError:
+ usage()
+ return
+
+ for opt, arg in opts:
+ if(opt in ("--logfile","-l")):
+ logfile = arg
+ elif(opt in ("--configfile", "-c")):
+ configfile = arg
+ elif(opt in ("--email-to", "-t")):
+ email_to = arg
+ elif(opt in ("--email-from", "-f")):
+ email_from = arg
+ elif(opt in ("--rotate", "-r")):
+ rotate = True
+ elif(opt in ("--verbose", "-v")):
+ verbose = True
+ elif(opt in ("--stats", "-s")):
+ stats = True
+ elif(opt in ("--sort", "-o")):
+ sort = True
+ elif(opt in ("--debug", "-d")):
+ debug = True
+ elif(opt in ("--help", "-h")):
+ usage()
+ return
+
+ # Run the reporter
+ bbr = BoxBackupReporter(configfile, logfile, email_to, email_from,
+ rotate, verbose, stats, sort, debug)
+ try:
+ bbr.run()
+ bbr.deliver()
+ except BoxBackupReporter.BoxBackupReporterError, error_msg:
+ print error_msg
+
+if __name__ == "__main__":
+ main()
diff --git a/contrib/debian/bbackupd.in b/contrib/debian/bbackupd.in
index 78d4f4ee..bb7536b5 100644
--- a/contrib/debian/bbackupd.in
+++ b/contrib/debian/bbackupd.in
@@ -1,46 +1,59 @@
#! /bin/sh
# Start and stop the Box Backup client daemon.
+# Originally by James Stark, modified by Chris Wilson and James O'Gorman
+# For support, visit http://www.boxbackup.org/trac/wiki/MailingLists
-BBACKUPD=@bindir_expanded@/bbackupd
-CONFIG=@sysconfdir_expanded@/box/bbackupd.conf
-PIDFILE=@localstatedir_expanded@/bbackupd.pid
+NAME=bbackupd
+LONGNAME="Box Backup Client daemon"
+BINARY=@sbindir_expanded@/$NAME
+CONFIG=@sysconfdir_expanded@/box/$NAME.conf
+PIDFILE=@localstatedir_expanded@/bbackupd/$NAME.pid
-test -x $BBACKUPD || exit 0
+test -x $BINARY || exit 0
test -f $CONFIG || exit 0
+start_stop() {
+ start-stop-daemon --quiet --exec $BINARY --pidfile $PIDFILE "$@"
+}
+
+start_stop_verbose() {
+ if start_stop "$@"; then
+ echo "."
+ else
+ echo " failed!"
+ exit 1
+ fi
+}
+
case $1 in
start)
- echo -n "Starting Box Backup Client daemon: bbackupd"
- start-stop-daemon --start --quiet --exec $BBACKUPD > /dev/null
- echo "."
+ echo -n "Starting $LONGNAME: $NAME"
+ start_stop_verbose --start
;;
-
+
stop)
- echo -n "Stopping Box Backup Client daemon: bbackupd"
- start-stop-daemon --stop --quiet \
- --pidfile $PIDFILE --exec $BBACKUPD
- echo "."
+ echo -n "Stopping $LONGNAME: $NAME"
+ start_stop_verbose --stop
;;
reload|force-reload)
- echo -n "Reloading Box Backup Client configuration"
- start-stop-daemon --stop --signal 1 --quiet --oknodo \
- --pidfile $PIDFILE --exec $BBACKUPD
- echo "."
+ echo -n "Reloading $LONGNAME configuration"
+ start_stop_verbose --stop --signal 1
;;
-
+
restart)
- echo -n "Restarting Box Backup Client daemon: bbackupd"
- start-stop-daemon --stop --quiet --pidfile $PIDFILE \
- --exec $BBACKUPD
- start-stop-daemon --start --quiet \
- --exec $BBACKUPD > /dev/null
- echo "."
+ echo -n "Restarting $LONGNAME: $NAME"
+ if start_stop --stop --retry 5 && start_stop --start; then
+ echo "."
+ else
+ echo " failed!"
+ exit 1
+ fi
;;
+
*)
- echo "Usage: /etc/init.d/bbackupd {start|stop|reload|force-reload|restart}"
- exit 1
+ echo "Usage: $0 {start|stop|reload|force-reload|restart}"
esac
exit 0
diff --git a/contrib/debian/bbstored.in b/contrib/debian/bbstored.in
index da6a50a0..48fc47f1 100644
--- a/contrib/debian/bbstored.in
+++ b/contrib/debian/bbstored.in
@@ -1,46 +1,59 @@
#! /bin/sh
# Start and stop the Box Backup server daemon.
+# Originally by James Stark, modified by Chris Wilson and James O'Gorman
+# For support, visit http://www.boxbackup.org/trac/wiki/MailingLists
-BBSTORED=@bindir_expanded@/bbstored
-CONFIG=@sysconfdir_expanded@/box/bbstored.conf
-PIDFILE=@localstatedir_expanded@/bbstored.pid
+NAME=bbstored
+LONGNAME="Box Backup Server daemon"
+BINARY=@sbindir_expanded@/$NAME
+CONFIG=@sysconfdir_expanded@/box/$NAME.conf
+PIDFILE=@localstatedir_expanded@/run/$NAME.pid
-test -x $BBACKUPD || exit 0
+test -x $BINARY || exit 0
test -f $CONFIG || exit 0
+start_stop() {
+ start-stop-daemon --quiet --exec $BINARY --pidfile $PIDFILE "$@"
+}
+
+start_stop_verbose() {
+ if start_stop "$@"; then
+ echo "."
+ else
+ echo " failed!"
+ exit 1
+ fi
+}
+
case $1 in
start)
- echo -n "Starting Box Backup Server daemon: bbstored"
- start-stop-daemon --start --quiet --exec $BBSTORED > /dev/null
- echo "."
+ echo -n "Starting $LONGNAME: $NAME"
+ start_stop_verbose --start
;;
stop)
- echo -n "Stopping Box Backup Server daemon: bbstored"
- start-stop-daemon --stop --quiet \
- --pidfile $PIDFILE --exec $BBSTORED
- echo "."
+ echo -n "Stopping $LONGNAME: $NAME"
+ start_stop_verbose --stop
;;
reload|force-reload)
- echo -n "Reloading Box Backup Server configuration"
- start-stop-daemon --stop --signal 1 --quiet --oknodo \
- --pidfile $PIDFILE --exec $BBSTORED
- echo "."
+ echo -n "Reloading $LONGNAME configuration"
+ start_stop_verbose --stop --signal 1
;;
restart)
- echo -n "Restarting Box Backup Server daemon: bbstored"
- start-stop-daemon --stop --quiet --pidfile $PIDFILE \
- --exec $BBSTORED
- start-stop-daemon --start --quiet \
- --exec $BBSTORED > /dev/null
- echo "."
+ echo -n "Restarting $LONGNAME: $NAME"
+ if start_stop --stop --retry 5 && start_stop --start; then
+ echo "."
+ else
+ echo " failed!"
+ exit 1
+ fi
;;
*)
- echo "Usage: /etc/init.d/bbstored {start|stop|reload|force-reload|restart}"
+ echo "Usage: $0 {start|stop|reload|force-reload|restart}"
esac
exit 0
diff --git a/contrib/mac_osx/org.boxbackup.bbackupd.plist.in b/contrib/mac_osx/org.boxbackup.bbackupd.plist.in
new file mode 100644
index 00000000..803deece
--- /dev/null
+++ b/contrib/mac_osx/org.boxbackup.bbackupd.plist.in
@@ -0,0 +1,20 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Label</key>
+ <string>org.boxbackup.bbackupd</string>
+ <key>RunAtLoad</key>
+ <true/>
+ <key>ProgramArguments</key>
+ <array>
+ <string>@prefix@/sbin/bbackupd</string>
+ <string>-F</string>
+ <string>@prefix@/etc/boxbackup/bbackupd.conf</string>
+ </array>
+ <key>LowPriorityIO</key>
+ <true/>
+ <key>Nice</key>
+ <integer>1</integer>
+</dict>
+</plist>
diff --git a/contrib/mac_osx/org.boxbackup.bbstored.plist.in b/contrib/mac_osx/org.boxbackup.bbstored.plist.in
new file mode 100644
index 00000000..bfe8c88c
--- /dev/null
+++ b/contrib/mac_osx/org.boxbackup.bbstored.plist.in
@@ -0,0 +1,21 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
+<plist version="1.0">
+<dict>
+ <key>Label</key>
+ <string>org.boxbackup.bbstored</string>
+ <key>RunAtLoad</key>
+ <true/>
+ <key>ProgramArguments</key>
+ <array>
+ <string>@prefix@/sbin/bbstored</string>
+ <string>-F</string>
+ <string>@prefix@/etc/boxbackup/bbackupd.conf</string>
+ </array>
+ </array>
+ <key>LowPriorityIO</key>
+ <true/>
+ <key>Nice</key>
+ <integer>1</integer>
+</dict>
+</plist>
diff --git a/contrib/redhat/bbackupd.in b/contrib/redhat/bbackupd.in
index e8ecdc68..2f51137a 100644
--- a/contrib/redhat/bbackupd.in
+++ b/contrib/redhat/bbackupd.in
@@ -23,7 +23,7 @@ prog="bbackupd"
start() {
echo -n $"Starting $prog: "
- daemon $prog
+ daemon @sbindir_expanded@/$prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
@@ -32,7 +32,7 @@ start() {
stop() {
echo -n $"Stopping $prog: "
- killproc $prog
+ killproc @sbindir_expanded@/$prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
@@ -40,7 +40,7 @@ stop() {
}
rhstatus() {
- status $prog
+ status @sbindir_expanded@/$prog
}
restart() {
@@ -50,7 +50,7 @@ restart() {
reload() {
echo -n $"Reloading $prog configuration: "
- killproc $prog -HUP
+ killproc @sbindir_expanded@/$prog -HUP
retval=$?
echo
return $RETVAL
diff --git a/contrib/redhat/bbstored.in b/contrib/redhat/bbstored.in
index c7675df5..755a8569 100644
--- a/contrib/redhat/bbstored.in
+++ b/contrib/redhat/bbstored.in
@@ -23,7 +23,7 @@ prog="bbstored"
start() {
echo -n $"Starting $prog: "
- daemon $prog
+ daemon @sbindir_expanded@/$prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && touch /var/lock/subsys/$prog
@@ -32,7 +32,7 @@ start() {
stop() {
echo -n $"Stopping $prog: "
- killproc $prog
+ killproc @sbindir_expanded@/$prog
RETVAL=$?
echo
[ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/$prog
@@ -40,7 +40,7 @@ stop() {
}
rhstatus() {
- status $prog
+ status @sbindir_expanded@/$prog
}
restart() {
@@ -50,7 +50,7 @@ restart() {
reload() {
echo -n $"Reloading $prog configuration: "
- killproc $prog -HUP
+ killproc @sbindir_expanded@/$prog -HUP
retval=$?
echo
return $RETVAL
diff --git a/contrib/rpm/boxbackup.spec b/contrib/rpm/boxbackup.spec
index a5b287ff..9c494159 100644
--- a/contrib/rpm/boxbackup.spec
+++ b/contrib/rpm/boxbackup.spec
@@ -17,7 +17,7 @@
# Detect distribution. So far we only special-case SUSE. If you need to make
# any distro specific changes to get the package building on your system
-# please email them to boxbackup-dev@fluffy.co.uk
+# please email them to boxbackup-dev@boxbackup.org
#%define is_fc %(test -e %{_sysconfdir}/fedora-release && echo 1 || echo 0)
#%define is_mdk %(test -e %{_sysconfdir}/mandrake-release && echo 1 || echo 0)
#%define is_rh %(test -e %{_sysconfdir}/redhat-release && echo 1 || echo 0)
@@ -39,8 +39,8 @@ Version: ###DISTRIBUTION-VERSION-NUMBER###
Release: 1
License: BSD
Group: Applications/Archiving
-Packager: Martin Ebourne <boxbackup-dev@fluffy.co.uk>
-URL: http://www.fluffy.co.uk/boxbackup/
+Packager: boxbackup-dev@boxbackup.org
+URL: http://www.boxbackup.org/
Source0: %{ident}.tgz
Requires: openssl >= 0.9.7a
BuildRoot: %{_tmppath}/%{ident}-%{release}-root
@@ -96,6 +96,7 @@ make
rm -rf $RPM_BUILD_ROOT
mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{ident}
+mkdir -p $RPM_BUILD_ROOT%{_docdir}/%{ident}/bbreporter
mkdir -p $RPM_BUILD_ROOT%{_bindir}
mkdir -p $RPM_BUILD_ROOT%{_sbindir}
mkdir -p $RPM_BUILD_ROOT%{init_dir}
@@ -121,6 +122,11 @@ install -m 644 %{distribution_dir}LINUX.txt \
install -m 644 %{distribution_dir}THANKS.txt \
$RPM_BUILD_ROOT%{_docdir}/%{ident}
+install -m 644 contrib/bbreporter/LICENSE \
+ $RPM_BUILD_ROOT%{_docdir}/%{ident}/bbreporter
+install -m 755 contrib/bbreporter/bbreporter.py \
+ $RPM_BUILD_ROOT%{_docdir}/%{ident}/bbreporter
+
# Client
touch $RPM_BUILD_ROOT%{_sysconfdir}/box/bbackupd.conf
install -m 755 contrib/%{dist}/bbackupd $RPM_BUILD_ROOT%{init_dir}
@@ -143,7 +149,7 @@ ln -s ../../%{init_dir}/bbstored $RPM_BUILD_ROOT%{_sbindir}/rcbbstored
%define server_dir parcels/%{ident}-backup-server-linux-gnu
install %{server_dir}/bbstored $RPM_BUILD_ROOT%{_sbindir}
install %{server_dir}/bbstoreaccounts $RPM_BUILD_ROOT%{_sbindir}
-install %{server_dir}/bbstored-certs $RPM_BUILD_ROOT%{_bindir}
+install %{server_dir}/bbstored-certs $RPM_BUILD_ROOT%{_sbindir}
install %{server_dir}/bbstored-config $RPM_BUILD_ROOT%{_sbindir}
install %{server_dir}/raidfile-config $RPM_BUILD_ROOT%{_sbindir}
@@ -213,11 +219,15 @@ rm -rf $RPM_BUILD_ROOT
%config %ghost %{_sysconfdir}/box/raidfile.conf
%{_sbindir}/bbstored
%{_sbindir}/bbstoreaccounts
-%{_bindir}/bbstored-certs
+%{_sbindir}/bbstored-certs
%{_sbindir}/bbstored-config
%{_sbindir}/raidfile-config
+%doc %{_docdir}/%{ident}/bbreporter
%changelog
+* Thu May 29 2008 Martin Ebourne <martin@zepler.org>
+- Fix paths to bbreporter files
+
* Sat Jan 13 2006 Chris Wilson <chris+box@qwirx.com>
- Support building from an unofficial tarball (from svn) by changing
%{distribution_dir} at the top.
diff --git a/contrib/solaris/bbackupd-smf-method.in b/contrib/solaris/bbackupd-smf-method.in
index 2c839961..0ff610bf 100755
--- a/contrib/solaris/bbackupd-smf-method.in
+++ b/contrib/solaris/bbackupd-smf-method.in
@@ -5,7 +5,7 @@ case $1 in
# SMF arguments (start and restart [really "refresh"])
'start')
- @bindir_expanded@/bbackupd
+ @sbindir_expanded@/bbackupd
;;
'restart')
diff --git a/contrib/solaris/bbstored-smf-method.in b/contrib/solaris/bbstored-smf-method.in
index 0ea25e40..dbdb3e69 100755
--- a/contrib/solaris/bbstored-smf-method.in
+++ b/contrib/solaris/bbstored-smf-method.in
@@ -4,7 +4,7 @@ case $1 in
# SMF arguments (start and restart [really "refresh"])
'start')
- @bindir_expanded@/bbstored
+ @sbindir_expanded@/bbstored
;;
'restart')
diff --git a/contrib/suse/bbackupd.in b/contrib/suse/bbackupd.in
index d3a5659e..77fd40ba 100644
--- a/contrib/suse/bbackupd.in
+++ b/contrib/suse/bbackupd.in
@@ -28,7 +28,7 @@
### END INIT INFO
# Check for missing binaries (stale symlinks should not happen)
-BBACKUPD_BIN=@bindir_expanded@/bbackupd
+BBACKUPD_BIN=@sbindir_expanded@/bbackupd
if [ ! -x $BBACKUPD_BIN ] ; then
echo "$BBACKUPD_BIN not installed"
exit 5
@@ -91,7 +91,7 @@ case "$1" in
probe)
test @sysconfdir_expanded@/box/bbackupd.conf \
- -nt @localstatedir_expanded@/bbackupd.pid \
+ -nt @localstatedir_expanded@/bbackupd/bbackupd.pid \
&& echo reload
;;
diff --git a/contrib/suse/bbstored.in b/contrib/suse/bbstored.in
index e8c74278..e84edfd1 100644
--- a/contrib/suse/bbstored.in
+++ b/contrib/suse/bbstored.in
@@ -29,7 +29,7 @@
#
# Check for missing binaries (stale symlinks should not happen)
-BBSTORED_BIN=@bindir_expanded@/bbstored
+BBSTORED_BIN=@sbindir_expanded@/bbstored
if [ ! -x $BBSTORED_BIN ] ; then
echo "$BBSTORED_BIN not installed"
exit 5
@@ -92,7 +92,7 @@ case "$1" in
probe)
test @sysconfdir_expanded@/box/bbstored.conf \
- -nt @localstatedir_expanded@/bbstored.pid && echo reload
+ -nt @localstatedir_expanded@/run/bbstored.pid && echo reload
;;
*)
diff --git a/contrib/windows/installer/boxbackup.mpi.in b/contrib/windows/installer/boxbackup.mpi.in
new file mode 100755
index 00000000..12f6d62d
--- /dev/null
+++ b/contrib/windows/installer/boxbackup.mpi.in
@@ -0,0 +1,3392 @@
+array set info {
+AccountNo
+10005005
+
+AllowLanguageSelection
+No
+
+AppName
+<%BrandName%>
+
+ApplicationID
+E10C6FD9-E524-28BD-B0AB3588F16C
+
+ApplicationURL
+http://www.boxbackup.org/
+
+AutoFileGroups
+No
+
+AutoRefreshFiles
+Yes
+
+BBVersionNo
+@box_version@
+
+BrandName
+{Box Backup}
+
+BuildFailureAction
+{Fail (recommended)}
+
+CancelledInstallAction
+{Rollback and Stop}
+
+CleanupCancelledInstall
+Yes
+
+CommandLineFailureAction
+{Fail (recommended)}
+
+Company
+{Tebuco, Inc. and Ben Summers and Contributors}
+
+CompressionLevel
+6
+
+CompressionMethod
+zlib
+
+ConfigFileName
+{<%InstallDir%>\bbackupd.conf}
+
+ConfigFileTemplate
+{<%InstallDir%>\templates\template.conf}
+
+Copyright
+{2003-2008 Tebuco, Inc. and Ben Summers and Contributors}
+
+CreateDesktopShortcut
+No
+
+CreateQuickLaunchShortcut
+No
+
+DefaultDirectoryLocation
+{}
+
+DefaultLanguage
+English
+
+EncryptedKeyFilePassword
+Enter_EncryptedKeys_Password_Here
+
+Ext
+.exe
+
+ExtractSolidArchivesOnStartup
+No
+
+Icon
+{}
+
+Image
+@build_dir@/docs/html/images/bblogo.png
+
+IncludeDebugging
+Yes
+
+InstallDirSuffix
+<%ShortAppName%>
+
+InstallPassword
+{}
+
+InstallVersion
+@box_version@
+
+Language,de
+No
+
+Language,en
+Yes
+
+Language,es
+No
+
+Language,fr
+No
+
+Language,hu
+Yes
+
+Language,it
+Yes
+
+Language,nl
+Yes
+
+Language,pl
+No
+
+Language,pt_br
+No
+
+Language,ru
+Yes
+
+LaunchApplication
+No
+
+PackageDescription
+{<%BrandName%> Backup Service}
+
+PackageLicense
+{}
+
+PackageMaintainer
+{Tebuco, Inc. and Ben Summers and Contributors}
+
+PackageName
+<%ShortAppName%>
+
+PackagePackager
+{Tebuco, Inc. and Ben Summers and Contributors}
+
+PackageRelease
+<%PatchVersion%>
+
+PackageSummary
+{}
+
+PackageVersion
+<%MajorVersion%>.<%MinorVersion%>
+
+PreserveFileAttributes
+Yes
+
+PreserveFilePermissions
+Yes
+
+ProjectID
+140B9882-3327-FEA8-13415A62FBB2
+
+ProjectVersion
+1.2.9.0
+
+SaveOnlyToplevelDirs
+No
+
+ScriptExt
+.bat
+
+ServiceExeName
+bbackupd.exe
+
+ServiceName
+<%BrandName%>
+
+ShortAppName
+<%BrandName%>
+
+SkipUnusedFileGroups
+Yes
+
+SystemLanguage
+en_us
+
+Theme
+Modern_Wizard
+
+ThemeDir
+Modern_Wizard
+
+ThemeVersion
+1
+
+UpgradeApplicationID
+{}
+
+UserInfoAcctNo
+<%AccountNo%>
+
+UserInfoCompany
+{}
+
+UserInfoEmail
+{}
+
+UserInfoName
+{}
+
+UserInfoPhone
+{}
+
+Version
+@box_version@
+
+ViewReadme
+No
+
+WizardHeight
+365
+
+WizardWidth
+500
+
+}
+
+array set ::InstallJammer::InstallCommandLineOptions {
+D
+{{} Prefix No No {} {set the value of an option in the installer}}
+
+S
+{InstallMode Switch No No Silent {run the installer in silent mode}}
+
+T
+{Testing Switch Yes No {} {run installer without installing any files}}
+
+Y
+{InstallMode Switch No No Default {accept all defaults and run the installer}}
+
+debug
+{Debugging Switch Yes No {} {run installer in debug mode}}
+
+debugconsole
+{ShowConsole Switch Yes No {} {run installer with a debug console open}}
+
+mode
+{InstallMode Choice No No {Console Default Silent Standard} {set the mode to run the installer in}}
+
+prefix
+{InstallDir String No No {} {set the installation directory}}
+
+test
+{Testing Switch Yes No {} {run installer without installing any files}}
+
+}
+array set ::InstallJammer::UninstallCommandLineOptions {
+S
+{InstallMode Switch No No Silent {run the uninstaller in silent mode}}
+
+Y
+{InstallMode Switch No No Default {accept all defaults and run the uninstaller}}
+
+debugconsole
+{ShowConsole Switch Yes No {} {run uninstaller with a debug console open}}
+
+mode
+{UninstallMode Choice No No {Console Silent Standard} {set the mode to run the uninstaller in}}
+
+test
+{Testing Switch Yes No {} {run uninstaller without uninstalling any files}}
+
+}
+FileGroup ::481451CC-F49C-D389-8645076F595B -setup Install -active Yes -platforms {Windows MacOS-X} -name {Program Files} -parent FileGroups
+File ::B9F58CFC-EE7A-BEE4-62CB-2C10665095A2 -filemethod {Update files with more recent dates} -type dir -directory <%InstallDir%> -name /home/petjal/doc/teb/cli/bu/installer/win/2.2 -location @client_parcel_dir@ -parent 481451CC-F49C-D389-8645076F595B
+File ::CDDED10B-2747-DD07-5F9D-42A7FD7BB7E6 -name LICENSE.txt -parent B9F58CFC-EE7A-BEE4-62CB-2C10665095A2
+File ::D6E262BC-8A84-B6DB-794B-8FDC8AECB079 -name mgwz.dll -parent B9F58CFC-EE7A-BEE4-62CB-2C10665095A2
+File ::E56A0360-7D7F-D99E-E9A4-3C20BC4C2B99 -name mingwm10.dll -parent B9F58CFC-EE7A-BEE4-62CB-2C10665095A2
+File ::47602DF7-8463-AB89-E13F-11983610CAA2 -type dir -name tools -location @build_dir@/contrib/windows/installer/tools -parent B9F58CFC-EE7A-BEE4-62CB-2C10665095A2
+File ::F7F61231-C340-5CD5-686B-01F521994B0C -name InstallService.bat -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::68DAE474-165D-81FE-1396-FDD2E6081B41 -name KillBackupProcess.bat -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::2436C940-3332-13AA-7613-8EE67C35CE9B -name ReloadConfig.bat -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::336DDAC3-F3BA-1117-73D4-11DFEF9E98AB -name RemoveService.bat -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::0C15AE46-0FF3-3B7F-FC55-D91EF279DBD3 -name RestartService.bat -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::58D97EDE-58F2-15D7-7113-BEE3047F0782 -name StartService.bat -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::BE7CDB16-D3FE-30FA-2153-7C0509CD5E78 -name StopService.bat -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::73BD5859-FB38-71F8-24BD-BDCF871F9FD3 -name Sync.bat -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::67B3838F-4EF7-2C1C-2E86-78DB8ADD6682 -name ShowUsage.bat -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::2646A97C-C0D9-A29C-E145-C5C371F44938 -name QueryOutputAll.bat -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::2F41E3D2-DA4D-2FCB-B3D5-F04032D17A63 -name QueryOutputCurrent.bat -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::C6430BDD-8A07-B80E-FC0C-426C16EB4187 -name RemoteControl.exe -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::5EADAB59-F559-44CB-A3EE-9A56D4EF17C8 -type dir -name .svn -active 0 -parent 47602DF7-8463-AB89-E13F-11983610CAA2
+File ::31429CC4-525E-4E30-9328-4774AFA9F619 -name entries -active 0 -parent 5EADAB59-F559-44CB-A3EE-9A56D4EF17C8
+File ::A27BEFB6-1421-4030-8F11-F04316BCE57C -name format -active 0 -parent 5EADAB59-F559-44CB-A3EE-9A56D4EF17C8
+File ::C99700CE-1035-498C-9A96-B60835652077 -type dir -name prop-base -active 0 -parent 5EADAB59-F559-44CB-A3EE-9A56D4EF17C8
+File ::6FF9DFDE-4BB7-4319-AC85-BF1E88731C1C -name InstallService.bat.svn-base -active 0 -parent C99700CE-1035-498C-9A96-B60835652077
+File ::6AAE8600-5CFC-4240-A47F-5CFCF4E571C6 -name KillBackupProcess.bat.svn-base -active 0 -parent C99700CE-1035-498C-9A96-B60835652077
+File ::834C33D3-4B53-4B2D-9380-A05420AEE75F -name QueryOutputAll.bat.svn-base -active 0 -parent C99700CE-1035-498C-9A96-B60835652077
+File ::854AD23A-5DDE-44C4-900C-34F5845E6747 -name QueryOutputCurrent.bat.svn-base -active 0 -parent C99700CE-1035-498C-9A96-B60835652077
+File ::9A587DE7-B17C-4CDF-B92C-0D267E30E361 -name ReloadConfig.bat.svn-base -active 0 -parent C99700CE-1035-498C-9A96-B60835652077
+File ::197AAEFA-C62E-4E79-890F-C2E4C8440239 -name RemoteControl.exe.svn-base -active 0 -parent C99700CE-1035-498C-9A96-B60835652077
+File ::912E0F50-53DD-4483-A4F4-CA69944A5959 -name RemoveService.bat.svn-base -active 0 -parent C99700CE-1035-498C-9A96-B60835652077
+File ::BDD695BF-9C7E-4F06-BBCE-EC89536DCF27 -name RestartService.bat.svn-base -active 0 -parent C99700CE-1035-498C-9A96-B60835652077
+File ::61615EE4-BF66-40E7-B89A-E6A50B92AF93 -name ShowUsage.bat.svn-base -active 0 -parent C99700CE-1035-498C-9A96-B60835652077
+File ::A6F7C6B7-9759-4B86-9388-4A42E6F7C5C3 -name StartService.bat.svn-base -active 0 -parent C99700CE-1035-498C-9A96-B60835652077
+File ::45D3E7F5-277B-4E52-81BA-ED6D2BB441D7 -name StopService.bat.svn-base -active 0 -parent C99700CE-1035-498C-9A96-B60835652077
+File ::58966972-8387-4D14-A06E-15AA176633A3 -name Sync.bat.svn-base -active 0 -parent C99700CE-1035-498C-9A96-B60835652077
+File ::2A77AF5B-4761-45B5-A543-6328A7F0F39B -type dir -name props -active 0 -parent 5EADAB59-F559-44CB-A3EE-9A56D4EF17C8
+File ::BF74F2C1-3CE7-4875-9B52-CD0F527E01C7 -type dir -name text-base -active 0 -parent 5EADAB59-F559-44CB-A3EE-9A56D4EF17C8
+File ::D972D6B2-40E5-40B3-BC06-66B8B7F51B04 -name InstallService.bat.svn-base -active 0 -parent BF74F2C1-3CE7-4875-9B52-CD0F527E01C7
+File ::2F14E4F3-5331-4AC5-93F7-C4748970C7F4 -name KillBackupProcess.bat.svn-base -active 0 -parent BF74F2C1-3CE7-4875-9B52-CD0F527E01C7
+File ::9F3663B2-8BAA-4EAE-B606-53D5C922E703 -name QueryOutputAll.bat.svn-base -active 0 -parent BF74F2C1-3CE7-4875-9B52-CD0F527E01C7
+File ::BE9BD4FB-DF44-4F4B-BB55-15285A8566BA -name QueryOutputCurrent.bat.svn-base -active 0 -parent BF74F2C1-3CE7-4875-9B52-CD0F527E01C7
+File ::3B4E0BF4-7FDD-4903-8D43-76C43F38C6C4 -name ReloadConfig.bat.svn-base -active 0 -parent BF74F2C1-3CE7-4875-9B52-CD0F527E01C7
+File ::038CEEA0-3F21-48F6-B109-BBE1EF7D3E96 -name RemoteControl.exe.svn-base -active 0 -parent BF74F2C1-3CE7-4875-9B52-CD0F527E01C7
+File ::0C177E04-DF2D-43AB-8A42-9E7A389AB1D1 -name RemoveService.bat.svn-base -active 0 -parent BF74F2C1-3CE7-4875-9B52-CD0F527E01C7
+File ::9BE16F40-9D1D-4C84-843D-955A44069040 -name RestartService.bat.svn-base -active 0 -parent BF74F2C1-3CE7-4875-9B52-CD0F527E01C7
+File ::4E503A3C-EB42-4870-9849-D508A3D9BAB7 -name ShowUsage.bat.svn-base -active 0 -parent BF74F2C1-3CE7-4875-9B52-CD0F527E01C7
+File ::131B7D8B-1BEB-456C-8F05-386C2EAFBEAE -name StartService.bat.svn-base -active 0 -parent BF74F2C1-3CE7-4875-9B52-CD0F527E01C7
+File ::D3D0AFC1-CB6C-42D4-8C05-21898505DA40 -name StopService.bat.svn-base -active 0 -parent BF74F2C1-3CE7-4875-9B52-CD0F527E01C7
+File ::C89F78B2-25A7-432B-9D92-DC2AB636CFB5 -name Sync.bat.svn-base -active 0 -parent BF74F2C1-3CE7-4875-9B52-CD0F527E01C7
+File ::90695C82-0000-4F6A-8FE7-0ABDEAA17CAE -type dir -name tmp -active 0 -parent 5EADAB59-F559-44CB-A3EE-9A56D4EF17C8
+File ::7DFF0EE4-7298-4C8C-A5BC-56BBDD81CFC8 -type dir -name prop-base -active 0 -parent 90695C82-0000-4F6A-8FE7-0ABDEAA17CAE
+File ::4C60E473-119E-4B0B-9B01-56240F24D9D5 -type dir -name props -active 0 -parent 90695C82-0000-4F6A-8FE7-0ABDEAA17CAE
+File ::E1E25ACC-487B-4191-B8CF-9E7C8C88EA09 -type dir -name text-base -active 0 -parent 90695C82-0000-4F6A-8FE7-0ABDEAA17CAE
+File ::E7258732-3D21-4E89-AA41-24AA8B8EBF29 -name all-wcprops -active 0 -parent 5EADAB59-F559-44CB-A3EE-9A56D4EF17C8
+File ::9CEBA2A0-C68B-48BA-944E-2E8EE9A35D97 -name bbackupctl.exe -parent B9F58CFC-EE7A-BEE4-62CB-2C10665095A2
+File ::497483A6-7264-4361-86F2-F2703F719908 -name bbackupd-config -active 0 -parent B9F58CFC-EE7A-BEE4-62CB-2C10665095A2
+File ::204358FC-610F-47DF-8928-1D0E39921700 -targetfilename templates/original.conf -name bbackupd.conf -parent B9F58CFC-EE7A-BEE4-62CB-2C10665095A2
+File ::98C376E2-A6C3-4B6C-BBD4-F70CAC2E6A7B -name bbackupd.exe -parent B9F58CFC-EE7A-BEE4-62CB-2C10665095A2
+File ::5C3EAB34-7CD4-4DF3-9DEB-0FC23A6F5812 -name bbackupquery.exe -parent B9F58CFC-EE7A-BEE4-62CB-2C10665095A2
+File ::7633DBC3-EACA-4F9B-9A87-AD3AF0EC298E -name installer.iss -active 0 -parent B9F58CFC-EE7A-BEE4-62CB-2C10665095A2
+File ::D3CF86E1-CAFF-4342-8730-463F96EACC39 -targetfilename templates/NotifySysAdmin.original.vbs -name NotifySysAdmin.vbs -parent B9F58CFC-EE7A-BEE4-62CB-2C10665095A2
+File ::A702625F-29C7-4CA0-A8F8-E50DBF5C541B -name uninstall.exe -active 0 -parent B9F58CFC-EE7A-BEE4-62CB-2C10665095A2
+Component ::4A9C852B-647E-EED5-5482FFBCC2AF -setup Install -active Yes -platforms {Windows MacOS-X} -name {Default Component} -parent Components
+SetupType ::8202CECC-54A0-9B6C-D24D111BA52E -setup Install -active Yes -platforms {Windows MacOS-X} -name Typical -parent SetupTypes
+
+InstallComponent AE3BD5B4-35DE-4240-B79914D43E56 -setup Install -type pane -title {Welcome Screen} -component Welcome -active No -parent StandardInstall
+InstallComponent 2AC89879-6E9D-3D4E-F28E-5985EEBFAAA8 -setup Install -type pane -conditions 4EE35849-FAD7-170B-0E45-FA30636467B1 -title {Install Password} -component InstallPassword -command insert -active No -parent StandardInstall
+Condition 4EE35849-FAD7-170B-0E45-FA30636467B1 -active Yes -parent 2AC89879-6E9D-3D4E-F28E-5985EEBFAAA8 -title {Password Test Condition} -component PasswordTestCondition -TreeObject::id 4EE35849-FAD7-170B-0E45-FA30636467B1
+InstallComponent B3B99E2D-C368-A921-B7BC-A71EBDE3AD4D -setup Install -type action -title {Set Install Password} -component SetInstallPassword -active Yes -parent 2AC89879-6E9D-3D4E-F28E-5985EEBFAAA8
+InstallComponent 1BEFB82C-C073-73D4-CFCE-F5DE7A674D9E -setup Install -type pane -title {User Information} -component UserInformation -active Yes -parent StandardInstall
+InstallComponent 9013E862-8E81-5290-64F9-D8BCD13EC7E5 -setup Install -type pane -title {User Information Phone Email} -component UserInformation -active Yes -parent StandardInstall
+InstallComponent F8FD4BD6-F1DF-3F8D-B857-98310E4B1143 -setup Install -type pane -title {User Information Account No} -component UserInformation -active Yes -parent StandardInstall
+InstallComponent 58E1119F-639E-17C9-5D3898F385AA -setup Install -type pane -conditions 84DA7F05-9FB7-CC36-9EC98F8A6826 -title {Select Destination} -component SelectDestination -command insert -active Yes -parent StandardInstall
+Condition 84DA7F05-9FB7-CC36-9EC98F8A6826 -active Yes -parent 58E1119F-639E-17C9-5D3898F385AA -title {File Permission Condition} -component FilePermissionCondition -TreeObject::id 84DA7F05-9FB7-CC36-9EC98F8A6826
+InstallComponent 0FDBA082-90AB-808C-478A-A13E7C525336 -setup Install -type action -title BackupLocationNumber -component ExecuteScript -active Yes -parent 58E1119F-639E-17C9-5D3898F385AA
+InstallComponent 0047FF40-0139-2A59-AAC0-A44D46D6F5CC -setup Install -type action -title BackupLocationName -component ExecuteScript -active No -parent 58E1119F-639E-17C9-5D3898F385AA
+InstallComponent 2BB06B72-DE53-2319-B1B8-351CDCBA2008 -setup Install -type action -title AddBackupLocation -component ExecuteScript -active Yes -parent 58E1119F-639E-17C9-5D3898F385AA
+InstallComponent B506E7DA-E7C4-4D42-8C03-FD27BA16D078 -setup Install -type pane -title {License Agreement} -component License -active Yes -parent StandardInstall
+InstallComponent B93D2216-1DDB-484C-A9AC-D6C18ED7DE23 -setup Install -type action -conditions {6D9D1ABC-7146-443F-9EE9-205D5CA6C830 79DAC913-A33D-4ED6-9BAE-B3A2053C0F2C} -title {Modify Widget} -component ModifyWidget -command insert -active Yes -parent B506E7DA-E7C4-4D42-8C03-FD27BA16D078
+Condition 6D9D1ABC-7146-443F-9EE9-205D5CA6C830 -active Yes -parent B93D2216-1DDB-484C-A9AC-D6C18ED7DE23 -title {String Is Condition} -component StringIsCondition -TreeObject::id 6D9D1ABC-7146-443F-9EE9-205D5CA6C830
+Condition 79DAC913-A33D-4ED6-9BAE-B3A2053C0F2C -active Yes -parent B93D2216-1DDB-484C-A9AC-D6C18ED7DE23 -title {String Is Condition} -component StringIsCondition -TreeObject::id 79DAC913-A33D-4ED6-9BAE-B3A2053C0F2C
+InstallComponent 37E627F2-E04B-AEF2-D566C017A4D6 -setup Install -type pane -title {Copying Files} -component CopyFiles -active Yes -parent StandardInstall
+InstallComponent 3CFFF099-6122-46DD-9CE4-F5819434AC53 -setup Install -type action -title {Stop running service} -component ExecuteExternalProgram -active Yes -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent FB697A88-2842-468E-9776-85E84B009340 -setup Install -type action -title {Remove installed service} -component ExecuteExternalProgram -active No -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent 41CDE776-2667-5CEB-312A-FC4C33A83E7F -setup Install -type action -title {Backup File} -component BackupFile -active Yes -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent 0D93323D-779D-44A8-1E0614E5285D -setup Install -type action -title {Disable Buttons} -component ModifyWidget -active Yes -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent 5CA3EA16-E37C-AABE-E576C4636EB0 -setup Install -type action -title {Execute Action} -component ExecuteAction -active Yes -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent F5F21749-8B3A-49C6-9138-9C4D6D703D26 -setup Install -type action -title {Unpack Keys} -component ExecuteExternalProgram -active No -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent FDF68FD6-BEA8-4A74-867D-5139F4D9E793 -setup Install -type action -title Wait -component Wait -active No -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent E56ADFF4-C15E-AEDB-A599-C468AF72C4BB -setup Install -type action -title {Copy File NotifySysAdmin} -component CopyFile -active Yes -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent D9F88AC1-3D2D-F6DB-871E-3A0E016770B1 -setup Install -type action -title {Copy File config} -component CopyFile -active Yes -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent 5F2C1F1C-B9F7-1642-59D9-A18318C1D70B -setup Install -type action -title {Replace Text In File} -component ReplaceTextInFile -active Yes -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent 2EC82FBD-8294-A3E4-7F39-1CBA0582FA64 -setup Install -type action -title {Write Text To File} -component WriteTextToFile -active Yes -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent 28E76C8B-2605-4739-9FFE-9C2880C17E59 -setup Install -type action -title {Edit config file} -component ExecuteExternalProgram -active No -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent 52F0A238-57E1-A578-2CE4DA177B32 -setup Install -type action -title {Move Forward} -component MoveForward -active Yes -parent 37E627F2-E04B-AEF2-D566C017A4D6
+InstallComponent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7 -setup Install -type pane -title SetBackupLocations -component CustomBlankPane2 -command reorder -active Yes -parent StandardInstall
+InstallComponent 614C45B2-7515-780C-E444-7F165CF02DD7 -setup Install -type action -title {Execute Script} -component ExecuteScript -active No -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent A5B32DA1-B2FE-C1FA-6057-FBC3059EF076 -setup Install -type action -title {Execute Script} -component ExecuteScript -active Yes -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent F9E38720-6ABA-8B99-2471-496902E4CBC2 -setup Install -type action -title {Execute Script} -component ExecuteScript -active No -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent 362B6D6A-11BC-83CE-AFF6-410D8FBCF54D -setup Install -type action -title {Execute Script} -component ExecuteScript -active No -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent 2E2963BD-DDBD-738D-A910-B7F3F04946F9 -setup Install -type action -title ShowAddAnotherValue -component AddWidget -active Yes -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent 93AA298C-B64E-5683-14D2-7B86F7DEFD2C -setup Install -type action -title BackupLocationName -component ExecuteScript -active No -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent 3FDB57ED-598D-8A4E-CEF7-D90833305558 -setup Install -type action -title {Backup Directory} -component AddWidget -active Yes -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent B927A5AF-4DFE-82A3-DCA8-35FA4D91EC5A -setup Install -type action -title BackupLocationShortName -component AddWidget -active Yes -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent 855DE408-060E-3D35-08B5-1D9AB05C2865 -setup Install -type action -title Exclusions -component AddWidget -active Yes -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent 9892B25C-689B-5B8F-F0C9-B14FF6ACC40C -setup Install -type action -title {Execute Script} -component ExecuteScript -active No -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent 8419AAAD-5860-F73E-8D11-4D1BDA4D7D37 -setup Install -type action -title AddAnother -component AddWidget -active Yes -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent C7762473-273F-E3CA-17E3-65789B14CDB0 -setup Install -type action -title {Write Text To File} -component WriteTextToFile -active Yes -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent D7FBBEBB-2186-5674-BA87-BB7151859D4E -setup Install -type action -title BackupLocationNumber -component ExecuteScript -active Yes -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+InstallComponent 49E80443-62DB-1C10-392D-1091AEA5ED88 -setup Install -type action -conditions EB532611-5F30-3C24-66EB-F3826D9054FD -title {Move to Pane} -component MoveToPane -command insert -active Yes -parent 3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+Condition EB532611-5F30-3C24-66EB-F3826D9054FD -active Yes -parent 49E80443-62DB-1C10-392D-1091AEA5ED88 -title {String Is Condition} -component StringIsCondition -TreeObject::id EB532611-5F30-3C24-66EB-F3826D9054FD
+InstallComponent 9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266 -setup Install -type pane -title {Click Next to Continue} -component CustomBlankPane2 -active Yes -parent StandardInstall
+InstallComponent DDBBD8A9-13D7-9509-9202-419E989F60A9 -setup Install -type action -title {Add Widget} -component AddWidget -active No -parent 9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266
+InstallComponent 8E095096-F018-A880-429D-A2177A9B70EA -setup Install -type action -title {Add Widget} -component AddWidget -active No -parent 9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266
+InstallComponent 88A50FD5-480F-19A5-DA74-C915EB0A9765 -setup Install -type action -conditions 5EE78EF7-37CA-D440-3DB5-09136CD566B3 -title {Move to Pane} -component MoveToPane -command insert -active No -parent 9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266
+Condition 5EE78EF7-37CA-D440-3DB5-09136CD566B3 -active Yes -parent 88A50FD5-480F-19A5-DA74-C915EB0A9765 -title {String Is Condition} -component StringIsCondition -TreeObject::id 5EE78EF7-37CA-D440-3DB5-09136CD566B3
+InstallComponent 908CE221-5A3D-0A78-24A1-E7C91EBE38D4 -setup Install -type pane -title {Next-Build Config} -component CustomBlankPane2 -active No -parent StandardInstall
+InstallComponent DA33B826-E633-A845-4646-76DFA78B907B -setup Install -type pane -title {Custom Blank Pane 2} -component CustomBlankPane2 -active Yes -parent StandardInstall
+InstallComponent 6FEE2889-0338-1D49-60BF-1471F465AB26 -setup Install -type action -title {Write Text To File} -component WriteTextToFile -active Yes -parent DA33B826-E633-A845-4646-76DFA78B907B
+InstallComponent 73DD4D07-B1DC-BA38-2B12-07EB24A7F0C8 -setup Install -type action -title {Copy File} -component CopyFile -active Yes -parent DA33B826-E633-A845-4646-76DFA78B907B
+InstallComponent D23DD94C-E517-7F34-FD59-802CB18AB887 -setup Install -type action -title {Adjust Line Feeds} -component AdjustLineFeeds -active Yes -parent DA33B826-E633-A845-4646-76DFA78B907B
+InstallComponent 7D8E1902-2BC4-80D8-2C18771E7C22 -setup Install -type action -title {Installing service} -component ExecuteExternalProgram -active Yes -parent DA33B826-E633-A845-4646-76DFA78B907B
+InstallComponent 1C14291C-0971-4283-92E9-3808401303F5 -setup Install -type action -title {Starting service} -component ExecuteExternalProgram -active No -parent DA33B826-E633-A845-4646-76DFA78B907B
+InstallComponent 6C323815-B9AB-FA94-4F5D152EBC51 -setup Install -type pane -title {Setup Complete} -component SetupComplete -active Yes -parent StandardInstall
+InstallComponent 574198A7-7322-2F5E-02EF185D965C -setup Install -type pane -title {Copying Files} -component CopyFiles -active Yes -parent DefaultInstall
+InstallComponent 8A761DBD-0640-D98C-9B3AD7672A8F -setup Install -type action -title {Disable Buttons} -component ModifyWidget -active Yes -parent 574198A7-7322-2F5E-02EF185D965C
+InstallComponent 6E70FB1F-6A43-6C23-3242E965A0D0 -setup Install -type action -title {Execute Action} -component ExecuteAction -active Yes -parent 574198A7-7322-2F5E-02EF185D965C
+InstallComponent 8E1A5944-5AF5-5906-16D395E386D8 -setup Install -type action -title {Move Forward} -component MoveForward -active Yes -parent 574198A7-7322-2F5E-02EF185D965C
+InstallComponent 1F0926EE-6884-1330-B4A1DB11C1BF -setup Install -type pane -title {Setup Complete} -component SetupComplete -active Yes -parent DefaultInstall
+InstallComponent 3B6E2E7C-1A26-27F1-D578E383B128 -setup Install -type action -conditions {13BD88FE-CD71-5AC7-E99C10B6CB28 E02368C5-95B5-03A7-3282740037B0} -title {View Readme Checkbutton} -component AddWidget -command insert -active Yes -parent 1F0926EE-6884-1330-B4A1DB11C1BF
+Condition 13BD88FE-CD71-5AC7-E99C10B6CB28 -active Yes -parent 3B6E2E7C-1A26-27F1-D578E383B128 -title {File Exists Condition} -component FileExistsCondition -TreeObject::id 13BD88FE-CD71-5AC7-E99C10B6CB28
+Condition E02368C5-95B5-03A7-3282740037B0 -active Yes -parent 3B6E2E7C-1A26-27F1-D578E383B128 -title {String Is Condition} -component StringIsCondition -TreeObject::id E02368C5-95B5-03A7-3282740037B0
+InstallComponent CFFA27AF-A641-E41C-B4A0E3BB3CBB -setup Install -type action -conditions {592F46AE-8CEE-01F3-0BA7EBDCA4F4 793D8178-0F51-7F07-BC5886586D3C} -title {Launch Application Checkbutton} -component AddWidget -command insert -active Yes -parent 1F0926EE-6884-1330-B4A1DB11C1BF
+Condition 592F46AE-8CEE-01F3-0BA7EBDCA4F4 -active Yes -parent CFFA27AF-A641-E41C-B4A0E3BB3CBB -title {File Exists Condition} -component FileExistsCondition -TreeObject::id 592F46AE-8CEE-01F3-0BA7EBDCA4F4
+Condition 793D8178-0F51-7F07-BC5886586D3C -active Yes -parent CFFA27AF-A641-E41C-B4A0E3BB3CBB -title {String Is Condition} -component StringIsCondition -TreeObject::id 793D8178-0F51-7F07-BC5886586D3C
+InstallComponent 16D53E40-546B-54C3-088B1B5E3BBB -setup Install -type action -conditions {4E643D8A-CA31-018D-57D7053C2CE8 B39C0455-D1B6-7DDC-E2717F83463E} -title {Desktop Shortcut Checkbutton} -component AddWidget -command insert -active Yes -parent 1F0926EE-6884-1330-B4A1DB11C1BF
+Condition 4E643D8A-CA31-018D-57D7053C2CE8 -active Yes -parent 16D53E40-546B-54C3-088B1B5E3BBB -title {File Exists Condition} -component FileExistsCondition -TreeObject::id 4E643D8A-CA31-018D-57D7053C2CE8
+Condition B39C0455-D1B6-7DDC-E2717F83463E -active Yes -parent 16D53E40-546B-54C3-088B1B5E3BBB -title {String Is Condition} -component StringIsCondition -TreeObject::id B39C0455-D1B6-7DDC-E2717F83463E
+InstallComponent 937C3FDD-FB28-98BD-3DAB276E59ED -setup Install -type action -conditions {6B966959-05D9-DB32-8D9C4AD2A3DF 748D673B-DFE6-5F74-329903ACE4DB 3379F80B-36D6-73DC-6FC1D6223A26} -title {Quick Launch Shortcut Checkbutton} -component AddWidget -command insert -active Yes -parent 1F0926EE-6884-1330-B4A1DB11C1BF
+Condition 6B966959-05D9-DB32-8D9C4AD2A3DF -active Yes -parent 937C3FDD-FB28-98BD-3DAB276E59ED -title {Platform Condition} -component PlatformCondition -TreeObject::id 6B966959-05D9-DB32-8D9C4AD2A3DF
+Condition 748D673B-DFE6-5F74-329903ACE4DB -active Yes -parent 937C3FDD-FB28-98BD-3DAB276E59ED -title {File Exists Condition} -component FileExistsCondition -TreeObject::id 748D673B-DFE6-5F74-329903ACE4DB
+Condition 3379F80B-36D6-73DC-6FC1D6223A26 -active Yes -parent 937C3FDD-FB28-98BD-3DAB276E59ED -title {String Is Condition} -component StringIsCondition -TreeObject::id 3379F80B-36D6-73DC-6FC1D6223A26
+InstallComponent 3FE82C17-A3E2-4A57-A563-F80818B00B81 -setup Install -type action -title {Console Ask Yes Or No} -component ConsoleAskYesOrNo -active Yes -parent ConsoleInstall
+InstallComponent 56EE5149-6AA2-4E0C-8841-F66A2EF9276E -setup Install -type action -conditions 241BBFCE-4EB1-432F-94DD-69D444DDB6C0 -title Exit -component Exit -command insert -active Yes -parent ConsoleInstall
+Condition 241BBFCE-4EB1-432F-94DD-69D444DDB6C0 -active Yes -parent 56EE5149-6AA2-4E0C-8841-F66A2EF9276E -title {String Is Condition} -component StringIsCondition -TreeObject::id 241BBFCE-4EB1-432F-94DD-69D444DDB6C0
+InstallComponent 0C12D2D3-AEBC-42FE-A73A-0815EFB10DA5 -setup Install -type action -conditions BC4EA5FD-50BD-4D6E-953F-5E3EDB957360 -title {Console Get User Input} -component ConsoleGetUserInput -command insert -active Yes -parent ConsoleInstall
+Condition BC4EA5FD-50BD-4D6E-953F-5E3EDB957360 -active Yes -parent 0C12D2D3-AEBC-42FE-A73A-0815EFB10DA5 -title {File Permission Condition} -component FilePermissionCondition -TreeObject::id BC4EA5FD-50BD-4D6E-953F-5E3EDB957360
+InstallComponent B002A311-F8E7-41DE-B039-521391924E5B -setup Install -type action -title {Console Message} -component ConsoleMessage -active Yes -parent ConsoleInstall
+InstallComponent D4FC6EB5-DDEE-4E4A-B8E1-D4B588A7928B -setup Install -type action -title {Execute Action} -component ExecuteAction -active Yes -parent ConsoleInstall
+InstallComponent 2BF07B5A-9B06-4C1E-810D-5B5E9303D2C6 -setup Install -type action -title {Console Message} -component ConsoleMessage -active Yes -parent ConsoleInstall
+InstallComponent 6B4CB3C2-4799-4C9F-BA8E-1EE47C4606E1 -setup Install -type action -title Exit -component Exit -active Yes -parent ConsoleInstall
+InstallComponent D8F0AA0F-AD79-C566-15CC508F503B -setup Install -type action -title {Execute Action} -component ExecuteAction -active Yes -parent SilentInstall
+InstallComponent 175CBE81-9EBE-1E21-A91479BEEFAE -setup Install -type action -title Exit -component Exit -active Yes -parent SilentInstall
+InstallComponent A1DD1DC2-85D7-9BC6-998AC3D4A3A9 -setup Install -type actiongroup -title {Startup Actions} -active Yes -parent ActionGroupsInstall
+InstallComponent 1F9E8CB8-02C1-0416-1F7445B4147F -setup Install -type action -conditions {3D0D1898-4C65-3E66-F82F56581E87 32F5B0AF-EB83-7A03-D8FAE1ECE473} -title Exit -component Exit -command insert -active Yes -parent A1DD1DC2-85D7-9BC6-998AC3D4A3A9
+Condition 3D0D1898-4C65-3E66-F82F56581E87 -active Yes -parent 1F9E8CB8-02C1-0416-1F7445B4147F -title {String Is Condition} -component StringIsCondition -TreeObject::id 3D0D1898-4C65-3E66-F82F56581E87
+Condition 32F5B0AF-EB83-7A03-D8FAE1ECE473 -active Yes -parent 1F9E8CB8-02C1-0416-1F7445B4147F -title {Ask Yes or No} -component AskYesOrNo -TreeObject::id 32F5B0AF-EB83-7A03-D8FAE1ECE473
+InstallComponent 32DC8FB1-A04B-71AA-EC18496D4BD0 -setup Install -type action -title {Create Install Panes} -component CreateInstallPanes -active Yes -parent A1DD1DC2-85D7-9BC6-998AC3D4A3A9
+InstallComponent 198905FB-9FAC-23DE-7422D25B8ECA -setup Install -type actiongroup -title {Install Actions} -active Yes -parent ActionGroupsInstall
+InstallComponent 4D4A7BF0-7CCE-46E6-BDE5222F82D7 -setup Install -type action -title {Install Selected Files} -component InstallSelectedFiles -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent 53588803-6B41-D9FC-A385906A5106 -setup Install -type action -title {Install Uninstaller} -component InstallUninstaller -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent 73EA65C1-3BE3-B190-55C3E99F6269 -setup Install -type action -conditions 4EF787E3-0643-DE46-15E64BAF0816 -title {Windows Uninstall Registry} -component AddWindowsUninstallEntry -command insert -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+Condition 4EF787E3-0643-DE46-15E64BAF0816 -active Yes -parent 73EA65C1-3BE3-B190-55C3E99F6269 -title {Platform Condition} -component PlatformCondition -TreeObject::id 4EF787E3-0643-DE46-15E64BAF0816
+InstallComponent 39B2B666-78D8-75E6-6EA071594D34 -setup Install -type action -conditions 18C00430-D6B1-151F-307762B3A045 -title {Uninstall Shortcut} -component InstallWindowsShortcut -command insert -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+Condition 18C00430-D6B1-151F-307762B3A045 -active Yes -parent 39B2B666-78D8-75E6-6EA071594D34 -title {Platform Condition} -component PlatformCondition -TreeObject::id 18C00430-D6B1-151F-307762B3A045
+InstallComponent 6652193C-5D4B-44B6-ABC6-D6E96D89E5DC -setup Install -type action -title {Install Program Folder Shortcut} -component InstallProgramFolderShortcut -active No -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent 9D101299-B80C-441B-8685-6E3AC61808E8 -setup Install -type action -title {RemoteControl Shortcut} -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent B01CBBB2-6A78-CA53-9ED9-C3C4CFC9239E -setup Install -type action -title {stopservice Shortcut} -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent DE800F1C-CB1A-E1CE-AEB8-B0A6DB4818E7 -setup Install -type action -title {Install Backup Service} -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent 25AA533E-02FC-47D9-9273-25266B8FA1F9 -setup Install -type action -title {Remove Backup Service} -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent CDD84DE3-C970-458F-9162-1A3CE0AA716B -setup Install -type action -title {startservice Shortcut} -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent B5DFEC63-92A9-4686-909E-0CE78A7069D6 -setup Install -type action -title {restartservice Shortcut} -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent C0452595-F3EB-43AD-BCA2-661437584636 -setup Install -type action -title {editconfig Shortcut} -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent 1AF5CD58-65C0-49CB-9A9D-994816CF414E -setup Install -type action -title {QueryUpload Shortcut} -component InstallProgramFolderShortcut -active No -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent 1681CF85-A5D2-4D73-A3FC-52B2A6A1847D -setup Install -type action -title {killbackupprocess Shortcut} -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent D8B8A9BF-5F2E-4236-A63E-5A8C5FFA8968 -setup Install -type action -title {reloadconfig Shortcut} -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent 6F61CDA8-30C9-454F-82A3-9987E1203079 -setup Install -type action -title {sync Shortcut} -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent 9A663209-495B-ED16-09BE-457B61148022 -setup Install -type action -title QueryCurrent -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent C0AF7C05-A31A-8376-BCB9-BA8B3A666252 -setup Install -type action -title SafeQueryAll -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent 32B08FB1-99DF-234E-8BAF-333E80AAC9F5 -setup Install -type action -title Usage -component InstallProgramFolderShortcut -active Yes -parent 198905FB-9FAC-23DE-7422D25B8ECA
+InstallComponent FEFD090D-C133-BC95-B3564F693CD3 -setup Install -type actiongroup -title {Finish Actions} -active Yes -parent ActionGroupsInstall
+InstallComponent DECC120D-6904-7F17-45A49184A5A3 -setup Install -type action -conditions {E44CFF46-6302-C518-B9C30D2E43F7 B0AA6839-AAB6-A602-C0E4ECA2E4FF} -title {Install Desktop Shortcut} -component InstallDesktopShortcut -command insert -active No -parent FEFD090D-C133-BC95-B3564F693CD3
+Condition E44CFF46-6302-C518-B9C30D2E43F7 -active Yes -parent DECC120D-6904-7F17-45A49184A5A3 -title {String Is Condition} -component StringIsCondition -TreeObject::id E44CFF46-6302-C518-B9C30D2E43F7
+Condition B0AA6839-AAB6-A602-C0E4ECA2E4FF -active Yes -parent DECC120D-6904-7F17-45A49184A5A3 -title {File Exists Condition} -component FileExistsCondition -TreeObject::id B0AA6839-AAB6-A602-C0E4ECA2E4FF
+InstallComponent 7B770A07-A785-5215-956FA82CF14E -setup Install -type action -conditions {6F94698F-0839-3ABF-0CF2DF05A4C8 738DD098-7E3B-BC89-875CDB93CBE2 8C866252-8760-9B08-FE569C25B60D} -title {Install Quick Launch Shortcut} -component InstallWindowsShortcut -command insert -active No -parent FEFD090D-C133-BC95-B3564F693CD3
+Condition 6F94698F-0839-3ABF-0CF2DF05A4C8 -active Yes -parent 7B770A07-A785-5215-956FA82CF14E -title {String Is Condition} -component StringIsCondition -TreeObject::id 6F94698F-0839-3ABF-0CF2DF05A4C8
+Condition 738DD098-7E3B-BC89-875CDB93CBE2 -active Yes -parent 7B770A07-A785-5215-956FA82CF14E -title {Platform Condition} -component PlatformCondition -TreeObject::id 738DD098-7E3B-BC89-875CDB93CBE2
+Condition 8C866252-8760-9B08-FE569C25B60D -active Yes -parent 7B770A07-A785-5215-956FA82CF14E -title {File Exists Condition} -component FileExistsCondition -TreeObject::id 8C866252-8760-9B08-FE569C25B60D
+InstallComponent C105AAAE-7C16-2C9E-769FE4535B60 -setup Install -type action -conditions {2583A547-11DE-1C27-B6D04B023CC0 A6E1B027-A1B4-5848-4F868D028D00 0357FAE9-FCFD-26D8-6541D810CD61} -title {View Readme Window} -component TextWindow -command insert -active No -parent FEFD090D-C133-BC95-B3564F693CD3
+Condition 2583A547-11DE-1C27-B6D04B023CC0 -active Yes -parent C105AAAE-7C16-2C9E-769FE4535B60 -title {String Is Condition} -component StringIsCondition -TreeObject::id 2583A547-11DE-1C27-B6D04B023CC0
+Condition A6E1B027-A1B4-5848-4F868D028D00 -active Yes -parent C105AAAE-7C16-2C9E-769FE4535B60 -title {String Is Condition} -component StringIsCondition -TreeObject::id A6E1B027-A1B4-5848-4F868D028D00
+Condition 0357FAE9-FCFD-26D8-6541D810CD61 -active Yes -parent C105AAAE-7C16-2C9E-769FE4535B60 -title {File Exists Condition} -component FileExistsCondition -TreeObject::id 0357FAE9-FCFD-26D8-6541D810CD61
+InstallComponent C33D74B2-26FA-16F5-433A10C6A747 -setup Install -type action -conditions {CC4337CC-F3B5-757C-DFCF5D1D365A 795EE61F-6C0D-4A8B-93E02AA3894A 1528F4F0-145C-A48D-A8526DBB6289} -title {Launch Application} -component ExecuteExternalProgram -command insert -active No -parent FEFD090D-C133-BC95-B3564F693CD3
+Condition CC4337CC-F3B5-757C-DFCF5D1D365A -active Yes -parent C33D74B2-26FA-16F5-433A10C6A747 -title {String Is Condition} -component StringIsCondition -TreeObject::id CC4337CC-F3B5-757C-DFCF5D1D365A
+Condition 795EE61F-6C0D-4A8B-93E02AA3894A -active Yes -parent C33D74B2-26FA-16F5-433A10C6A747 -title {String Is Condition} -component StringIsCondition -TreeObject::id 795EE61F-6C0D-4A8B-93E02AA3894A
+Condition 1528F4F0-145C-A48D-A8526DBB6289 -active Yes -parent C33D74B2-26FA-16F5-433A10C6A747 -title {File Exists Condition} -component FileExistsCondition -TreeObject::id 1528F4F0-145C-A48D-A8526DBB6289
+InstallComponent E23AC50D-7CFB-800E-A99C6F4068F8 -setup Install -type actiongroup -title {Cancel Actions} -active Yes -parent ActionGroupsInstall
+InstallComponent 3B8CDC8E-1239-D2E9-DF4CA6B1756D -setup Uninstall -type pane -title Uninstall -component Uninstall -active Yes -parent StandardUninstall
+InstallComponent 19ADBDDB-1690-4A57-913E32A026C4 -setup Uninstall -type action -title {Modify Widget} -component ModifyWidget -active Yes -parent 3B8CDC8E-1239-D2E9-DF4CA6B1756D
+InstallComponent 7A983CD8-302C-4942-BE59-525C5B5FA2F2 -setup Uninstall -type action -title {Stop Backup Process} -component ExecuteExternalProgram -active Yes -parent 3B8CDC8E-1239-D2E9-DF4CA6B1756D
+InstallComponent E4DEA723-FC78-45D7-BAB1-A3E4C4C96EA1 -setup Uninstall -type action -title {Stop Service} -component ExecuteExternalProgram -active Yes -parent 3B8CDC8E-1239-D2E9-DF4CA6B1756D
+InstallComponent B4D31D1E-ADB1-DE8F-18EB7294DDA8 -setup Uninstall -type action -title {Remove Service} -component ExecuteExternalProgram -active Yes -parent 3B8CDC8E-1239-D2E9-DF4CA6B1756D
+InstallComponent D55BA4AF-E73B-60D1-E26F79175227 -setup Uninstall -type action -title {Execute Action} -component ExecuteAction -active Yes -parent 3B8CDC8E-1239-D2E9-DF4CA6B1756D
+InstallComponent 69FD7409-5E2A-143B-DABD1C3B1E67 -setup Uninstall -type action -conditions {96A68CAC-9ED7-806C-086B104720FD E161F216-E597-B340-C1A71C476E2C} -title {Uninstall Leftover Files} -component UninstallLeftoverFiles -command insert -active Yes -parent 3B8CDC8E-1239-D2E9-DF4CA6B1756D
+Condition 96A68CAC-9ED7-806C-086B104720FD -active Yes -parent 69FD7409-5E2A-143B-DABD1C3B1E67 -title {String Is Condition} -component StringIsCondition -TreeObject::id 96A68CAC-9ED7-806C-086B104720FD
+Condition E161F216-E597-B340-C1A71C476E2C -active Yes -parent 69FD7409-5E2A-143B-DABD1C3B1E67 -title {Ask Yes or No} -component AskYesOrNo -TreeObject::id E161F216-E597-B340-C1A71C476E2C
+InstallComponent 05060263-E852-87AB-8D0F2954CAA6 -setup Uninstall -type action -title {Move Forward} -component MoveForward -active Yes -parent 3B8CDC8E-1239-D2E9-DF4CA6B1756D
+InstallComponent 41D3E165-C263-5F80-0FEEC0AEE47A -setup Uninstall -type pane -conditions EB2B31A1-C111-3582-0C8A5656692A -title {Uninstall Details} -component UninstallDetails -command insert -active Yes -parent StandardUninstall
+Condition EB2B31A1-C111-3582-0C8A5656692A -active Yes -parent 41D3E165-C263-5F80-0FEEC0AEE47A -title {String Is Condition} -component StringIsCondition -TreeObject::id EB2B31A1-C111-3582-0C8A5656692A
+InstallComponent 3D33AA8C-0037-204B-39A339FD38BD -setup Uninstall -type pane -title {Uninstall Complete} -component UninstallComplete -active Yes -parent StandardUninstall
+InstallComponent 49E59F91-27F7-46D1-A1C1-19865C2392D3 -setup Uninstall -type action -title {Console Ask Yes Or No} -component ConsoleAskYesOrNo -active Yes -parent ConsoleUninstall
+InstallComponent ADA6EB2F-8820-4366-BBEF-ED1335B7F828 -setup Uninstall -type action -conditions 87DE6D78-81E1-495B-A214-B3FF3E7E5614 -title Exit -component Exit -command insert -active Yes -parent ConsoleUninstall
+Condition 87DE6D78-81E1-495B-A214-B3FF3E7E5614 -active Yes -parent ADA6EB2F-8820-4366-BBEF-ED1335B7F828 -title {String Is Condition} -component StringIsCondition -TreeObject::id 87DE6D78-81E1-495B-A214-B3FF3E7E5614
+InstallComponent B4ED4636-22D8-41DC-9E3D-BD1E1CAD2174 -setup Uninstall -type action -title {Console Message} -component ConsoleMessage -active Yes -parent ConsoleUninstall
+InstallComponent 3C7130B3-3206-403D-B09E-59D4A758FBAD -setup Uninstall -type action -title {Execute Action} -component ExecuteAction -active Yes -parent ConsoleUninstall
+InstallComponent 20CBDBEA-2217-457B-8D98-D692C4F591E9 -setup Uninstall -type action -title {Console Message} -component ConsoleMessage -active Yes -parent ConsoleUninstall
+InstallComponent 7F85263E-CAE2-46BA-AAC0-6B89D20FD2DE -setup Uninstall -type action -title Exit -component Exit -active Yes -parent ConsoleUninstall
+InstallComponent 17D8BA8E-5992-AA5C-F5ECB73A3433 -setup Uninstall -type action -title {Execute Action} -component ExecuteAction -active Yes -parent SilentUninstall
+InstallComponent D3D73C76-D9D3-07DA-63D4163A44BE -setup Uninstall -type action -title Exit -component Exit -active Yes -parent SilentUninstall
+InstallComponent 848844B5-6103-9343-8B731B0BE4E0 -setup Uninstall -type actiongroup -title {Startup Actions} -active Yes -parent ActionGroupsUninstall
+InstallComponent 97ACF525-C075-8635-E019202A83D8 -setup Uninstall -type action -conditions {DFFF91A9-2CA5-6ABE-8474D814AF88 4ACB0B47-42B3-2B3A-BFE9AA4EC707} -title Exit -component Exit -command insert -active Yes -parent 848844B5-6103-9343-8B731B0BE4E0
+Condition DFFF91A9-2CA5-6ABE-8474D814AF88 -active Yes -parent 97ACF525-C075-8635-E019202A83D8 -title {String Is Condition} -component StringIsCondition -TreeObject::id DFFF91A9-2CA5-6ABE-8474D814AF88
+Condition 4ACB0B47-42B3-2B3A-BFE9AA4EC707 -active Yes -parent 97ACF525-C075-8635-E019202A83D8 -title {Ask Yes or No} -component AskYesOrNo -TreeObject::id 4ACB0B47-42B3-2B3A-BFE9AA4EC707
+InstallComponent F4024A3E-9A6D-2726-5E0CFFA93054 -setup Uninstall -type actiongroup -title {Uninstall Actions} -active Yes -parent ActionGroupsUninstall
+InstallComponent 39D7394E-04E9-CA70-0034DB830BFE -setup Uninstall -type action -title {Uninstall Selected Files} -component UninstallSelectedFiles -active Yes -parent F4024A3E-9A6D-2726-5E0CFFA93054
+InstallComponent 39270FD8-932E-6132-7EF795ED9B93 -setup Uninstall -type actiongroup -title {Finish Actions} -active Yes -parent ActionGroupsUninstall
+InstallComponent 905DA2E9-988C-2F27-BB1F5F274AC9 -setup Uninstall -type actiongroup -title {Cancel Actions} -active Yes -parent ActionGroupsUninstall
+
+array set Properties {
+0047FF40-0139-2A59-AAC0-A44D46D6F5CC,Active
+No
+
+0047FF40-0139-2A59-AAC0-A44D46D6F5CC,Comment
+{set BackupLocationName "BackupLocation_${BackupLocationNumber}"}
+
+0047FF40-0139-2A59-AAC0-A44D46D6F5CC,Conditions
+{0 conditions}
+
+0047FF40-0139-2A59-AAC0-A44D46D6F5CC,ExecuteAction
+{Before Next Pane is Displayed}
+
+0047FF40-0139-2A59-AAC0-A44D46D6F5CC,ResultVirtualText
+BackupLocationName
+
+0047FF40-0139-2A59-AAC0-A44D46D6F5CC,TclScript
+{set BackupLocationName "BackupLocation_${BackupLocationNumber}"}
+
+0357FAE9-FCFD-26D8-6541D810CD61,CheckCondition
+{Before Action is Executed}
+
+0357FAE9-FCFD-26D8-6541D810CD61,Filename
+<%ProgramReadme%>
+
+05060263-E852-87AB-8D0F2954CAA6,Conditions
+{0 conditions}
+
+0C12D2D3-AEBC-42FE-A73A-0815EFB10DA5,Prompt
+<%ConsoleSelectDestinationText%>
+
+0C12D2D3-AEBC-42FE-A73A-0815EFB10DA5,VirtualText
+InstallDir
+
+0D93323D-779D-44A8-1E0614E5285D,Conditions
+{0 conditions}
+
+0D93323D-779D-44A8-1E0614E5285D,State
+disabled
+
+0D93323D-779D-44A8-1E0614E5285D,Widget
+{Back Button;Next Button}
+
+0FDBA082-90AB-808C-478A-A13E7C525336,Conditions
+{0 conditions}
+
+0FDBA082-90AB-808C-478A-A13E7C525336,ExecuteAction
+{Before Next Pane is Displayed}
+
+0FDBA082-90AB-808C-478A-A13E7C525336,ResultVirtualText
+BackupLocationNumber
+
+0FDBA082-90AB-808C-478A-A13E7C525336,TclScript
+{set BackupLocationNumber 1}
+
+13BD88FE-CD71-5AC7-E99C10B6CB28,CheckCondition
+{Before Action is Executed}
+
+13BD88FE-CD71-5AC7-E99C10B6CB28,Filename
+<%ProgramReadme%>
+
+1528F4F0-145C-A48D-A8526DBB6289,CheckCondition
+{Before Action is Executed}
+
+1528F4F0-145C-A48D-A8526DBB6289,Filename
+<%ProgramExecutable%>
+
+1681CF85-A5D2-4D73-A3FC-52B2A6A1847D,Alias
+{Stop Backup Windows Process}
+
+1681CF85-A5D2-4D73-A3FC-52B2A6A1847D,Conditions
+{0 conditions}
+
+1681CF85-A5D2-4D73-A3FC-52B2A6A1847D,FileName
+<%ShortAppName%>-program-killbackupprocess
+
+1681CF85-A5D2-4D73-A3FC-52B2A6A1847D,ShortcutName
+{Stop backup process}
+
+1681CF85-A5D2-4D73-A3FC-52B2A6A1847D,TargetFileName
+<%InstallDir%>/tools/KillBackupProcess.bat
+
+1681CF85-A5D2-4D73-A3FC-52B2A6A1847D,WorkingDirectory
+<%InstallDir%>
+
+16D53E40-546B-54C3-088B1B5E3BBB,Background
+white
+
+16D53E40-546B-54C3-088B1B5E3BBB,Conditions
+{2 conditions}
+
+16D53E40-546B-54C3-088B1B5E3BBB,Text,subst
+1
+
+16D53E40-546B-54C3-088B1B5E3BBB,Type
+checkbutton
+
+16D53E40-546B-54C3-088B1B5E3BBB,VirtualText
+CreateDesktopShortcut
+
+16D53E40-546B-54C3-088B1B5E3BBB,X
+185
+
+16D53E40-546B-54C3-088B1B5E3BBB,Y
+180
+
+175CBE81-9EBE-1E21-A91479BEEFAE,ExitType
+Finish
+
+17D8BA8E-5992-AA5C-F5ECB73A3433,Action
+{Uninstall Actions}
+
+17D8BA8E-5992-AA5C-F5ECB73A3433,Conditions
+{0 conditions}
+
+18C00430-D6B1-151F-307762B3A045,CheckCondition
+{Before Action is Executed}
+
+18C00430-D6B1-151F-307762B3A045,Platform
+Windows
+
+198905FB-9FAC-23DE-7422D25B8ECA,Alias
+{Install Actions}
+
+198905FB-9FAC-23DE-7422D25B8ECA,Conditions
+{0 conditions}
+
+19ADBDDB-1690-4A57-913E32A026C4,Conditions
+{0 conditions}
+
+19ADBDDB-1690-4A57-913E32A026C4,State
+disabled
+
+19ADBDDB-1690-4A57-913E32A026C4,Widget
+{NextButton; CancelButton}
+
+1AF5CD58-65C0-49CB-9A9D-994816CF414E,Active
+No
+
+1AF5CD58-65C0-49CB-9A9D-994816CF414E,Alias
+{Upload File Listing}
+
+1AF5CD58-65C0-49CB-9A9D-994816CF414E,Comment
+{Upload list of backed up files for Tech Support purposes. May be blocked by firewalls.}
+
+1AF5CD58-65C0-49CB-9A9D-994816CF414E,Conditions
+{0 conditions}
+
+1AF5CD58-65C0-49CB-9A9D-994816CF414E,FileName
+<%ShortAppName%>-program-TebucoSafeQuerypload
+
+1AF5CD58-65C0-49CB-9A9D-994816CF414E,ShortcutName
+{Upload Filelisting to TebucoSafe for review}
+
+1AF5CD58-65C0-49CB-9A9D-994816CF414E,TargetFileName
+<%InstallDir%>/tools/TebucoSafeQueryUpload.bat
+
+1AF5CD58-65C0-49CB-9A9D-994816CF414E,WorkingDirectory
+<%InstallDir%>
+
+1BEFB82C-C073-73D4-CFCE-F5DE7A674D9E,Active
+Yes
+
+1BEFB82C-C073-73D4-CFCE-F5DE7A674D9E,BackButton,subst
+1
+
+1BEFB82C-C073-73D4-CFCE-F5DE7A674D9E,CancelButton,subst
+1
+
+1BEFB82C-C073-73D4-CFCE-F5DE7A674D9E,Caption,subst
+1
+
+1BEFB82C-C073-73D4-CFCE-F5DE7A674D9E,CompanyLabel,subst
+0
+
+1BEFB82C-C073-73D4-CFCE-F5DE7A674D9E,Conditions
+{0 conditions}
+
+1BEFB82C-C073-73D4-CFCE-F5DE7A674D9E,Message,subst
+1
+
+1BEFB82C-C073-73D4-CFCE-F5DE7A674D9E,NextButton,subst
+1
+
+1BEFB82C-C073-73D4-CFCE-F5DE7A674D9E,Subtitle,subst
+1
+
+1BEFB82C-C073-73D4-CFCE-F5DE7A674D9E,Title,subst
+1
+
+1BEFB82C-C073-73D4-CFCE-F5DE7A674D9E,UserNameLabel,subst
+0
+
+1C14291C-0971-4283-92E9-3808401303F5,Active
+No
+
+1C14291C-0971-4283-92E9-3808401303F5,Comment
+{Don't start it yet, need to install keys by hand.}
+
+1C14291C-0971-4283-92E9-3808401303F5,Conditions
+{0 conditions}
+
+1C14291C-0971-4283-92E9-3808401303F5,ProgramCommandLine
+{net start <%ServiceName%>}
+
+1C14291C-0971-4283-92E9-3808401303F5,WorkingDirectory
+<%InstallDir%>
+
+1F0926EE-6884-1330-B4A1DB11C1BF,BackButton,subst
+1
+
+1F0926EE-6884-1330-B4A1DB11C1BF,CancelButton,subst
+1
+
+1F0926EE-6884-1330-B4A1DB11C1BF,Caption,subst
+1
+
+1F0926EE-6884-1330-B4A1DB11C1BF,Message,subst
+1
+
+1F0926EE-6884-1330-B4A1DB11C1BF,NextButton,subst
+1
+
+1F9E8CB8-02C1-0416-1F7445B4147F,Comment
+{Ask the user if they want to proceed with the install.}
+
+1F9E8CB8-02C1-0416-1F7445B4147F,Conditions
+{2 conditions}
+
+20CBDBEA-2217-457B-8D98-D692C4F591E9,Message,subst
+1
+
+241BBFCE-4EB1-432F-94DD-69D444DDB6C0,CheckCondition
+{Before Action is Executed}
+
+241BBFCE-4EB1-432F-94DD-69D444DDB6C0,Operator
+false
+
+241BBFCE-4EB1-432F-94DD-69D444DDB6C0,String
+<%Answer%>
+
+2583A547-11DE-1C27-B6D04B023CC0,CheckCondition
+{Before Action is Executed}
+
+2583A547-11DE-1C27-B6D04B023CC0,Operator
+false
+
+2583A547-11DE-1C27-B6D04B023CC0,String
+<%SilentMode%>
+
+25AA533E-02FC-47D9-9273-25266B8FA1F9,Alias
+{Remove Backup Service}
+
+25AA533E-02FC-47D9-9273-25266B8FA1F9,Comment
+{Remove the Backup Windows Service}
+
+25AA533E-02FC-47D9-9273-25266B8FA1F9,Conditions
+{0 conditions}
+
+25AA533E-02FC-47D9-9273-25266B8FA1F9,FileName
+<%ShortAppName%>-program-removeService
+
+25AA533E-02FC-47D9-9273-25266B8FA1F9,ShortcutName
+{Remove Service}
+
+25AA533E-02FC-47D9-9273-25266B8FA1F9,TargetFileName
+<%InstallDir%>/tools/RemoveService.bat
+
+25AA533E-02FC-47D9-9273-25266B8FA1F9,WorkingDirectory
+<%InstallDir%>
+
+28E76C8B-2605-4739-9FFE-9C2880C17E59,Active
+No
+
+28E76C8B-2605-4739-9FFE-9C2880C17E59,Conditions
+{0 conditions}
+
+28E76C8B-2605-4739-9FFE-9C2880C17E59,ProgramCommandLine
+{notepad <%ConfigFileName%>}
+
+28E76C8B-2605-4739-9FFE-9C2880C17E59,WorkingDirectory
+<%InstallDir%>
+
+2AC89879-6E9D-3D4E-F28E-5985EEBFAAA8,BackButton,subst
+1
+
+2AC89879-6E9D-3D4E-F28E-5985EEBFAAA8,CancelButton,subst
+1
+
+2AC89879-6E9D-3D4E-F28E-5985EEBFAAA8,Caption,subst
+1
+
+2AC89879-6E9D-3D4E-F28E-5985EEBFAAA8,Conditions
+{1 condition}
+
+2AC89879-6E9D-3D4E-F28E-5985EEBFAAA8,Message,subst
+1
+
+2AC89879-6E9D-3D4E-F28E-5985EEBFAAA8,NextButton,subst
+1
+
+2AC89879-6E9D-3D4E-F28E-5985EEBFAAA8,Subtitle,subst
+1
+
+2AC89879-6E9D-3D4E-F28E-5985EEBFAAA8,Title,subst
+1
+
+2BB06B72-DE53-2319-B1B8-351CDCBA2008,Conditions
+{0 conditions}
+
+2BB06B72-DE53-2319-B1B8-351CDCBA2008,ExecuteAction
+{Before Next Pane is Displayed}
+
+2BB06B72-DE53-2319-B1B8-351CDCBA2008,ResultVirtualText
+AddBackupLocation
+
+2BB06B72-DE53-2319-B1B8-351CDCBA2008,TclScript
+{set AddBackupLocation no}
+
+2BF07B5A-9B06-4C1E-810D-5B5E9303D2C6,Message,subst
+1
+
+2E2963BD-DDBD-738D-A910-B7F3F04946F9,Conditions
+{0 conditions}
+
+2E2963BD-DDBD-738D-A910-B7F3F04946F9,Text,subst
+1
+
+2E2963BD-DDBD-738D-A910-B7F3F04946F9,Value
+<%AddBackupLocation%>
+
+2E2963BD-DDBD-738D-A910-B7F3F04946F9,X
+400
+
+2E2963BD-DDBD-738D-A910-B7F3F04946F9,Y
+70
+
+2EC82FBD-8294-A3E4-7F39-1CBA0582FA64,AppendNewline
+No
+
+2EC82FBD-8294-A3E4-7F39-1CBA0582FA64,Comment
+{.conf doesn't exist yet}
+
+2EC82FBD-8294-A3E4-7F39-1CBA0582FA64,Conditions
+{0 conditions}
+
+2EC82FBD-8294-A3E4-7F39-1CBA0582FA64,FileOpenAction
+{Append to file}
+
+2EC82FBD-8294-A3E4-7F39-1CBA0582FA64,Files
+<%ConfigFileTemplate%>
+
+2EC82FBD-8294-A3E4-7F39-1CBA0582FA64,TextToWrite,subst
+1
+
+32B08FB1-99DF-234E-8BAF-333E80AAC9F5,Conditions
+{0 conditions}
+
+32B08FB1-99DF-234E-8BAF-333E80AAC9F5,FileName
+<%ShortAppName%>-program-Usage
+
+32B08FB1-99DF-234E-8BAF-333E80AAC9F5,ShortcutName
+Usage
+
+32B08FB1-99DF-234E-8BAF-333E80AAC9F5,TargetFileName
+<%InstallDir%>/tools/ShowUsage.bat
+
+32B08FB1-99DF-234E-8BAF-333E80AAC9F5,WorkingDirectory
+<%InstallDir%>
+
+32DC8FB1-A04B-71AA-EC18496D4BD0,Conditions
+{0 conditions}
+
+32F5B0AF-EB83-7A03-D8FAE1ECE473,CheckCondition
+{Before Action is Executed}
+
+32F5B0AF-EB83-7A03-D8FAE1ECE473,Message,subst
+1
+
+32F5B0AF-EB83-7A03-D8FAE1ECE473,Title,subst
+1
+
+32F5B0AF-EB83-7A03-D8FAE1ECE473,TrueValue
+No
+
+3379F80B-36D6-73DC-6FC1D6223A26,CheckCondition
+{Before Action is Executed}
+
+3379F80B-36D6-73DC-6FC1D6223A26,Operator
+false
+
+3379F80B-36D6-73DC-6FC1D6223A26,String
+<%InstallStopped%>
+
+362B6D6A-11BC-83CE-AFF6-410D8FBCF54D,Active
+No
+
+362B6D6A-11BC-83CE-AFF6-410D8FBCF54D,Conditions
+{0 conditions}
+
+362B6D6A-11BC-83CE-AFF6-410D8FBCF54D,ResultVirtualText
+BackupLocationExclusions
+
+362B6D6A-11BC-83CE-AFF6-410D8FBCF54D,TclScript
+{set BackupLocationExclusions ""}
+
+37E627F2-E04B-AEF2-D566C017A4D6,BackButton,subst
+1
+
+37E627F2-E04B-AEF2-D566C017A4D6,CancelButton,subst
+1
+
+37E627F2-E04B-AEF2-D566C017A4D6,Caption,subst
+1
+
+37E627F2-E04B-AEF2-D566C017A4D6,Conditions
+{0 conditions}
+
+37E627F2-E04B-AEF2-D566C017A4D6,FileLabel,subst
+1
+
+37E627F2-E04B-AEF2-D566C017A4D6,Message,subst
+1
+
+37E627F2-E04B-AEF2-D566C017A4D6,NextButton,subst
+1
+
+37E627F2-E04B-AEF2-D566C017A4D6,ProgressValue,subst
+1
+
+37E627F2-E04B-AEF2-D566C017A4D6,Subtitle,subst
+1
+
+37E627F2-E04B-AEF2-D566C017A4D6,Title,subst
+1
+
+39270FD8-932E-6132-7EF795ED9B93,Alias
+{Finish Actions}
+
+39270FD8-932E-6132-7EF795ED9B93,Conditions
+{0 conditions}
+
+39B2B666-78D8-75E6-6EA071594D34,Conditions
+{1 condition}
+
+39B2B666-78D8-75E6-6EA071594D34,ShortcutName
+{Uninstall <%BrandName%>}
+
+39B2B666-78D8-75E6-6EA071594D34,TargetFileName
+<%Uninstaller%>
+
+39B2B666-78D8-75E6-6EA071594D34,WorkingDirectory
+<%InstallDir%>
+
+39D7394E-04E9-CA70-0034DB830BFE,Conditions
+{0 conditions}
+
+3B6E2E7C-1A26-27F1-D578E383B128,Background
+white
+
+3B6E2E7C-1A26-27F1-D578E383B128,Conditions
+{2 conditions}
+
+3B6E2E7C-1A26-27F1-D578E383B128,Text,subst
+1
+
+3B6E2E7C-1A26-27F1-D578E383B128,Type
+checkbutton
+
+3B6E2E7C-1A26-27F1-D578E383B128,VirtualText
+ViewReadme
+
+3B6E2E7C-1A26-27F1-D578E383B128,X
+185
+
+3B6E2E7C-1A26-27F1-D578E383B128,Y
+140
+
+3B8CDC8E-1239-D2E9-DF4CA6B1756D,BackButton,subst
+1
+
+3B8CDC8E-1239-D2E9-DF4CA6B1756D,CancelButton,subst
+1
+
+3B8CDC8E-1239-D2E9-DF4CA6B1756D,Caption,subst
+1
+
+3B8CDC8E-1239-D2E9-DF4CA6B1756D,Conditions
+{0 conditions}
+
+3B8CDC8E-1239-D2E9-DF4CA6B1756D,FileValue,subst
+1
+
+3B8CDC8E-1239-D2E9-DF4CA6B1756D,Message,subst
+1
+
+3B8CDC8E-1239-D2E9-DF4CA6B1756D,NextButton,subst
+1
+
+3B8CDC8E-1239-D2E9-DF4CA6B1756D,ProgressValue,subst
+1
+
+3B8CDC8E-1239-D2E9-DF4CA6B1756D,Subtitle,subst
+1
+
+3B8CDC8E-1239-D2E9-DF4CA6B1756D,Title,subst
+1
+
+3C7130B3-3206-403D-B09E-59D4A758FBAD,Action
+{Uninstall Actions}
+
+3CFFF099-6122-46DD-9CE4-F5819434AC53,Conditions
+{0 conditions}
+
+3CFFF099-6122-46DD-9CE4-F5819434AC53,IgnoreErrors
+Yes
+
+3CFFF099-6122-46DD-9CE4-F5819434AC53,ProgramCommandLine
+{net stop <%ServiceName%>}
+
+3CFFF099-6122-46DD-9CE4-F5819434AC53,ProgressiveOutputWidget
+Message
+
+3CFFF099-6122-46DD-9CE4-F5819434AC53,WorkingDirectory
+<%Temp%>
+
+3D0D1898-4C65-3E66-F82F56581E87,CheckCondition
+{Before Action is Executed}
+
+3D0D1898-4C65-3E66-F82F56581E87,Operator
+false
+
+3D0D1898-4C65-3E66-F82F56581E87,String
+<%SilentMode%>
+
+3D33AA8C-0037-204B-39A339FD38BD,BackButton,subst
+1
+
+3D33AA8C-0037-204B-39A339FD38BD,CancelButton,subst
+1
+
+3D33AA8C-0037-204B-39A339FD38BD,Caption,subst
+1
+
+3D33AA8C-0037-204B-39A339FD38BD,Conditions
+{0 conditions}
+
+3D33AA8C-0037-204B-39A339FD38BD,Message,subst
+1
+
+3D33AA8C-0037-204B-39A339FD38BD,NextButton,subst
+1
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,Active
+Yes
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,Alias
+SetBackupLocations
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,BackButton,subst
+1
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,CancelButton,subst
+1
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,Caption,subst
+1
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,Conditions
+{0 conditions}
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,Message,subst
+1
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,NextButton,subst
+1
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,Subtitle,subst
+1
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,Title,subst
+1
+
+3FDB57ED-598D-8A4E-CEF7-D90833305558,Conditions
+{0 conditions}
+
+3FDB57ED-598D-8A4E-CEF7-D90833305558,LabelSide
+left
+
+3FDB57ED-598D-8A4E-CEF7-D90833305558,Text,subst
+1
+
+3FDB57ED-598D-8A4E-CEF7-D90833305558,Type
+{browse entry}
+
+3FDB57ED-598D-8A4E-CEF7-D90833305558,VirtualText
+BackupLocationPath
+
+3FDB57ED-598D-8A4E-CEF7-D90833305558,Y
+70
+
+3FE82C17-A3E2-4A57-A563-F80818B00B81,Default
+Yes
+
+3FE82C17-A3E2-4A57-A563-F80818B00B81,Prompt
+<%InstallStartupText%>
+
+41CDE776-2667-5CEB-312A-FC4C33A83E7F,Conditions
+{0 conditions}
+
+41CDE776-2667-5CEB-312A-FC4C33A83E7F,Files
+{*/*.conf;*/*.txt;*/*.pem;*/*.raw;*/*.exe;*/*.bat;*/*.dll}
+
+41CDE776-2667-5CEB-312A-FC4C33A83E7F,RenameFiles
+Yes
+
+41D3E165-C263-5F80-0FEEC0AEE47A,BackButton,subst
+1
+
+41D3E165-C263-5F80-0FEEC0AEE47A,CancelButton,subst
+1
+
+41D3E165-C263-5F80-0FEEC0AEE47A,Caption,subst
+1
+
+41D3E165-C263-5F80-0FEEC0AEE47A,Conditions
+{1 condition}
+
+41D3E165-C263-5F80-0FEEC0AEE47A,Message,subst
+1
+
+41D3E165-C263-5F80-0FEEC0AEE47A,NextButton,subst
+1
+
+41D3E165-C263-5F80-0FEEC0AEE47A,Subtitle,subst
+1
+
+41D3E165-C263-5F80-0FEEC0AEE47A,Text,subst
+1
+
+41D3E165-C263-5F80-0FEEC0AEE47A,Title,subst
+1
+
+481451CC-F49C-D389-8645076F595B,Destination
+<%InstallDir%>
+
+481451CC-F49C-D389-8645076F595B,FileSize
+15288767
+
+481451CC-F49C-D389-8645076F595B,Name
+{Program Files}
+
+49E59F91-27F7-46D1-A1C1-19865C2392D3,Default
+Yes
+
+49E59F91-27F7-46D1-A1C1-19865C2392D3,Prompt
+<%UninstallStartupText%>
+
+49E80443-62DB-1C10-392D-1091AEA5ED88,Conditions
+{1 condition}
+
+49E80443-62DB-1C10-392D-1091AEA5ED88,ExecuteAction
+{Before Next Pane is Displayed}
+
+49E80443-62DB-1C10-392D-1091AEA5ED88,Pane
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+
+4A9C852B-647E-EED5-5482FFBCC2AF,Description,subst
+1
+
+4A9C852B-647E-EED5-5482FFBCC2AF,DisplayName,subst
+1
+
+4A9C852B-647E-EED5-5482FFBCC2AF,FileGroups
+481451CC-F49C-D389-8645076F595B
+
+4A9C852B-647E-EED5-5482FFBCC2AF,Name
+{Default Component}
+
+4A9C852B-647E-EED5-5482FFBCC2AF,RequiredComponent
+Yes
+
+4ACB0B47-42B3-2B3A-BFE9AA4EC707,CheckCondition
+{Before Action is Executed}
+
+4ACB0B47-42B3-2B3A-BFE9AA4EC707,Message,subst
+1
+
+4ACB0B47-42B3-2B3A-BFE9AA4EC707,Title,subst
+1
+
+4ACB0B47-42B3-2B3A-BFE9AA4EC707,TrueValue
+No
+
+4D4A7BF0-7CCE-46E6-BDE5222F82D7,Conditions
+{0 conditions}
+
+4D4A7BF0-7CCE-46E6-BDE5222F82D7,UpdateFilePercentage
+Yes
+
+4D4A7BF0-7CCE-46E6-BDE5222F82D7,UpdateFileText
+Yes
+
+4E643D8A-CA31-018D-57D7053C2CE8,CheckCondition
+{Before Action is Executed}
+
+4E643D8A-CA31-018D-57D7053C2CE8,Filename
+<%ProgramExecutable%>
+
+4EE35849-FAD7-170B-0E45-FA30636467B1,CheckCondition
+{Before Next Pane is Displayed}
+
+4EE35849-FAD7-170B-0E45-FA30636467B1,EncryptedPassword
+<%InstallPasswordEncrypted%>
+
+4EE35849-FAD7-170B-0E45-FA30636467B1,FailureFocus
+{Password Entry}
+
+4EE35849-FAD7-170B-0E45-FA30636467B1,FailureMessage
+<%PasswordIncorrectText%>
+
+4EE35849-FAD7-170B-0E45-FA30636467B1,UnencryptedPassword
+<%InstallPassword%>
+
+4EF787E3-0643-DE46-15E64BAF0816,CheckCondition
+{Before Action is Executed}
+
+4EF787E3-0643-DE46-15E64BAF0816,Platform
+Windows
+
+52F0A238-57E1-A578-2CE4DA177B32,Conditions
+{0 conditions}
+
+53588803-6B41-D9FC-A385906A5106,Conditions
+{0 conditions}
+
+574198A7-7322-2F5E-02EF185D965C,BackButton,subst
+1
+
+574198A7-7322-2F5E-02EF185D965C,CancelButton,subst
+1
+
+574198A7-7322-2F5E-02EF185D965C,Caption,subst
+1
+
+574198A7-7322-2F5E-02EF185D965C,Conditions
+{0 conditions}
+
+574198A7-7322-2F5E-02EF185D965C,FileLabel,subst
+1
+
+574198A7-7322-2F5E-02EF185D965C,Message,subst
+1
+
+574198A7-7322-2F5E-02EF185D965C,NextButton,subst
+1
+
+574198A7-7322-2F5E-02EF185D965C,ProgressValue,subst
+1
+
+574198A7-7322-2F5E-02EF185D965C,Subtitle,subst
+1
+
+574198A7-7322-2F5E-02EF185D965C,Title,subst
+1
+
+58E1119F-639E-17C9-5D3898F385AA,BackButton,subst
+1
+
+58E1119F-639E-17C9-5D3898F385AA,BrowseButton,subst
+1
+
+58E1119F-639E-17C9-5D3898F385AA,BrowseText,subst
+1
+
+58E1119F-639E-17C9-5D3898F385AA,CancelButton,subst
+1
+
+58E1119F-639E-17C9-5D3898F385AA,Caption,subst
+1
+
+58E1119F-639E-17C9-5D3898F385AA,Conditions
+{1 condition}
+
+58E1119F-639E-17C9-5D3898F385AA,DestinationLabel,subst
+0
+
+58E1119F-639E-17C9-5D3898F385AA,Message,subst
+1
+
+58E1119F-639E-17C9-5D3898F385AA,NextButton,subst
+1
+
+58E1119F-639E-17C9-5D3898F385AA,Subtitle,subst
+1
+
+58E1119F-639E-17C9-5D3898F385AA,Title,subst
+1
+
+592F46AE-8CEE-01F3-0BA7EBDCA4F4,CheckCondition
+{Before Action is Executed}
+
+592F46AE-8CEE-01F3-0BA7EBDCA4F4,Filename
+<%ProgramExecutable%>
+
+5CA3EA16-E37C-AABE-E576C4636EB0,Action
+{Install Actions}
+
+5CA3EA16-E37C-AABE-E576C4636EB0,Conditions
+{0 conditions}
+
+5EE78EF7-37CA-D440-3DB5-09136CD566B3,CheckCondition
+{Before Action is Executed}
+
+5EE78EF7-37CA-D440-3DB5-09136CD566B3,String
+<%AddBackupLocation%>
+
+5F2C1F1C-B9F7-1642-59D9-A18318C1D70B,Conditions
+{0 conditions}
+
+5F2C1F1C-B9F7-1642-59D9-A18318C1D70B,Files
+{<%ConfigFileTemplate%>;*/*.bat;<%InstallDir%>/*.vbs}
+
+5F2C1F1C-B9F7-1642-59D9-A18318C1D70B,LineFeed
+Windows
+
+5F2C1F1C-B9F7-1642-59D9-A18318C1D70B,StringMap
+{"@@CUSTOMERCOMPANY@@" <%UserInfoCompany%>
+"@@BRANDNAME@@" <%BrandName%>
+"@@SERVICENAME@@" <%ServiceName%>
+"@@CUSTOMERUSERNAME@@" <%UserInfoName%>
+"@@CUSTOMERUSERPHONE@@" <%UserInfoPhone%>
+"@@CUSTOMERUSEREMAIL@@" <%UserInfoEmail%>
+"@@ACCTNO@@" <%UserInfoAcctNo%>
+"@@INSTALLDIR@@" <%InstallDir%>}
+
+614C45B2-7515-780C-E444-7F165CF02DD7,Active
+No
+
+614C45B2-7515-780C-E444-7F165CF02DD7,Conditions
+{0 conditions}
+
+614C45B2-7515-780C-E444-7F165CF02DD7,ResultVirtualText
+BackupLocationShortName
+
+614C45B2-7515-780C-E444-7F165CF02DD7,TclScript
+{set BackupLocationShortName ""}
+
+6652193C-5D4B-44B6-ABC6-D6E96D89E5DC,Active
+No
+
+6652193C-5D4B-44B6-ABC6-D6E96D89E5DC,Comment
+{PJ removed. Is this the one at the top leve?}
+
+6652193C-5D4B-44B6-ABC6-D6E96D89E5DC,Conditions
+{0 conditions}
+
+69FD7409-5E2A-143B-DABD1C3B1E67,Conditions
+{2 conditions}
+
+6B4CB3C2-4799-4C9F-BA8E-1EE47C4606E1,ExitType
+Finish
+
+6B966959-05D9-DB32-8D9C4AD2A3DF,CheckCondition
+{Before Action is Executed}
+
+6B966959-05D9-DB32-8D9C4AD2A3DF,Platform
+Windows
+
+6C323815-B9AB-FA94-4F5D152EBC51,BackButton,subst
+1
+
+6C323815-B9AB-FA94-4F5D152EBC51,CancelButton,subst
+1
+
+6C323815-B9AB-FA94-4F5D152EBC51,Caption,subst
+1
+
+6C323815-B9AB-FA94-4F5D152EBC51,Conditions
+{0 conditions}
+
+6C323815-B9AB-FA94-4F5D152EBC51,Message,subst
+1
+
+6C323815-B9AB-FA94-4F5D152EBC51,NextButton,subst
+1
+
+6D9D1ABC-7146-443F-9EE9-205D5CA6C830,CheckCondition
+{Before Action is Executed}
+
+6D9D1ABC-7146-443F-9EE9-205D5CA6C830,String
+{<%Property <%CurrentPane%> UserMustAcceptLicense%>}
+
+6E70FB1F-6A43-6C23-3242E965A0D0,Action
+{Install Actions}
+
+6E70FB1F-6A43-6C23-3242E965A0D0,Conditions
+{0 conditions}
+
+6F61CDA8-30C9-454F-82A3-9987E1203079,Alias
+{Start a sync now.}
+
+6F61CDA8-30C9-454F-82A3-9987E1203079,Conditions
+{0 conditions}
+
+6F61CDA8-30C9-454F-82A3-9987E1203079,FileName
+<%ShortAppName%>-program-sync
+
+6F61CDA8-30C9-454F-82A3-9987E1203079,ShortcutName
+{Sync now}
+
+6F61CDA8-30C9-454F-82A3-9987E1203079,TargetFileName
+<%InstallDir%>/tools/Sync.bat
+
+6F61CDA8-30C9-454F-82A3-9987E1203079,WorkingDirectory
+<%InstallDir%>
+
+6F94698F-0839-3ABF-0CF2DF05A4C8,CheckCondition
+{Before Action is Executed}
+
+6F94698F-0839-3ABF-0CF2DF05A4C8,String
+<%CreateQuickLaunchShortcut%>
+
+6FEE2889-0338-1D49-60BF-1471F465AB26,AppendNewline
+No
+
+6FEE2889-0338-1D49-60BF-1471F465AB26,Comment
+{Closing final BackupLocations bracket}
+
+6FEE2889-0338-1D49-60BF-1471F465AB26,Conditions
+{0 conditions}
+
+6FEE2889-0338-1D49-60BF-1471F465AB26,FileOpenAction
+{Append to file}
+
+6FEE2889-0338-1D49-60BF-1471F465AB26,Files
+<%ConfigFileTemplate%>
+
+6FEE2889-0338-1D49-60BF-1471F465AB26,LineFeed
+Windows
+
+6FEE2889-0338-1D49-60BF-1471F465AB26,TextToWrite,subst
+1
+
+738DD098-7E3B-BC89-875CDB93CBE2,CheckCondition
+{Before Action is Executed}
+
+738DD098-7E3B-BC89-875CDB93CBE2,Platform
+Windows
+
+73DD4D07-B1DC-BA38-2B12-07EB24A7F0C8,Conditions
+{0 conditions}
+
+73DD4D07-B1DC-BA38-2B12-07EB24A7F0C8,Destination
+<%ConfigFileName%>
+
+73DD4D07-B1DC-BA38-2B12-07EB24A7F0C8,Source
+<%ConfigFileTemplate%>
+
+73EA65C1-3BE3-B190-55C3E99F6269,Conditions
+{1 condition}
+
+748D673B-DFE6-5F74-329903ACE4DB,CheckCondition
+{Before Action is Executed}
+
+748D673B-DFE6-5F74-329903ACE4DB,Filename
+<%ProgramExecutable%>
+
+793D8178-0F51-7F07-BC5886586D3C,CheckCondition
+{Before Action is Executed}
+
+793D8178-0F51-7F07-BC5886586D3C,Operator
+false
+
+793D8178-0F51-7F07-BC5886586D3C,String
+<%InstallStopped%>
+
+795EE61F-6C0D-4A8B-93E02AA3894A,CheckCondition
+{Before Action is Executed}
+
+795EE61F-6C0D-4A8B-93E02AA3894A,String
+<%LaunchApplication%>
+
+79DAC913-A33D-4ED6-9BAE-B3A2053C0F2C,CheckCondition
+{Before Action is Executed}
+
+79DAC913-A33D-4ED6-9BAE-B3A2053C0F2C,Operator
+false
+
+79DAC913-A33D-4ED6-9BAE-B3A2053C0F2C,String
+<%LicenseAccepted%>
+
+7A983CD8-302C-4942-BE59-525C5B5FA2F2,Conditions
+{0 conditions}
+
+7A983CD8-302C-4942-BE59-525C5B5FA2F2,ProgramCommandLine
+{ServiceControl terminate}
+
+7A983CD8-302C-4942-BE59-525C5B5FA2F2,WorkingDirectory
+<%InstallDir%>
+
+7B770A07-A785-5215-956FA82CF14E,Active
+No
+
+7B770A07-A785-5215-956FA82CF14E,Conditions
+{3 conditions}
+
+7B770A07-A785-5215-956FA82CF14E,ShortcutDirectory
+<%QUICK_LAUNCH%>
+
+7B770A07-A785-5215-956FA82CF14E,ShortcutName
+<%BrandName%>
+
+7B770A07-A785-5215-956FA82CF14E,TargetFileName
+<%ProgramExecutable%>
+
+7B770A07-A785-5215-956FA82CF14E,WorkingDirectory
+<%InstallDir%>
+
+7D8E1902-2BC4-80D8-2C18771E7C22,Conditions
+{0 conditions}
+
+7D8E1902-2BC4-80D8-2C18771E7C22,ProgramCommandLine
+{<%ServiceExeName%> -i -S <%ServiceName%> -c "<%ConfigFileName%>"}
+
+7D8E1902-2BC4-80D8-2C18771E7C22,ProgressiveOutputWidget
+Message
+
+7D8E1902-2BC4-80D8-2C18771E7C22,ShowProgressiveOutput
+Yes
+
+7D8E1902-2BC4-80D8-2C18771E7C22,WorkingDirectory
+<%InstallDir%>
+
+7F85263E-CAE2-46BA-AAC0-6B89D20FD2DE,ExitType
+Finish
+
+8202CECC-54A0-9B6C-D24D111BA52E,Components
+4A9C852B-647E-EED5-5482FFBCC2AF
+
+8202CECC-54A0-9B6C-D24D111BA52E,Description,subst
+1
+
+8202CECC-54A0-9B6C-D24D111BA52E,DisplayName,subst
+1
+
+8202CECC-54A0-9B6C-D24D111BA52E,Name
+Typical
+
+8419AAAD-5860-F73E-8D11-4D1BDA4D7D37,Checked
+No
+
+8419AAAD-5860-F73E-8D11-4D1BDA4D7D37,Conditions
+{0 conditions}
+
+8419AAAD-5860-F73E-8D11-4D1BDA4D7D37,Text,subst
+1
+
+8419AAAD-5860-F73E-8D11-4D1BDA4D7D37,Type
+checkbutton
+
+8419AAAD-5860-F73E-8D11-4D1BDA4D7D37,Value
+Yes
+
+8419AAAD-5860-F73E-8D11-4D1BDA4D7D37,VirtualText
+AddBackupLocation
+
+8419AAAD-5860-F73E-8D11-4D1BDA4D7D37,Y
+250
+
+848844B5-6103-9343-8B731B0BE4E0,Alias
+{Startup Actions}
+
+848844B5-6103-9343-8B731B0BE4E0,Conditions
+{0 conditions}
+
+84DA7F05-9FB7-CC36-9EC98F8A6826,CheckCondition
+{Before Next Pane is Displayed}
+
+84DA7F05-9FB7-CC36-9EC98F8A6826,FailureMessage
+<%DirectoryPermissionText%>
+
+84DA7F05-9FB7-CC36-9EC98F8A6826,Filename
+<%InstallDir%>
+
+84DA7F05-9FB7-CC36-9EC98F8A6826,Permission
+{can create}
+
+855DE408-060E-3D35-08B5-1D9AB05C2865,Conditions
+{0 conditions}
+
+855DE408-060E-3D35-08B5-1D9AB05C2865,Height
+100
+
+855DE408-060E-3D35-08B5-1D9AB05C2865,Text,subst
+1
+
+855DE408-060E-3D35-08B5-1D9AB05C2865,Type
+text
+
+855DE408-060E-3D35-08B5-1D9AB05C2865,VirtualText
+BackupLocationExclusions
+
+855DE408-060E-3D35-08B5-1D9AB05C2865,Y
+130
+
+87DE6D78-81E1-495B-A214-B3FF3E7E5614,CheckCondition
+{Before Action is Executed}
+
+87DE6D78-81E1-495B-A214-B3FF3E7E5614,Operator
+false
+
+87DE6D78-81E1-495B-A214-B3FF3E7E5614,String
+<%Answer%>
+
+88A50FD5-480F-19A5-DA74-C915EB0A9765,Active
+No
+
+88A50FD5-480F-19A5-DA74-C915EB0A9765,Conditions
+{1 condition}
+
+88A50FD5-480F-19A5-DA74-C915EB0A9765,ExecuteAction
+{After Pane is Finished}
+
+88A50FD5-480F-19A5-DA74-C915EB0A9765,Pane
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7
+
+8A761DBD-0640-D98C-9B3AD7672A8F,Conditions
+{0 conditions}
+
+8A761DBD-0640-D98C-9B3AD7672A8F,State
+disabled
+
+8A761DBD-0640-D98C-9B3AD7672A8F,Widget
+{Back Button;Next Button}
+
+8C866252-8760-9B08-FE569C25B60D,CheckCondition
+{Before Action is Executed}
+
+8C866252-8760-9B08-FE569C25B60D,Filename
+<%ProgramExecutable%>
+
+8E095096-F018-A880-429D-A2177A9B70EA,Active
+No
+
+8E095096-F018-A880-429D-A2177A9B70EA,Conditions
+{0 conditions}
+
+8E095096-F018-A880-429D-A2177A9B70EA,Text,subst
+1
+
+8E095096-F018-A880-429D-A2177A9B70EA,X
+50
+
+8E095096-F018-A880-429D-A2177A9B70EA,Y
+150
+
+8E1A5944-5AF5-5906-16D395E386D8,Conditions
+{0 conditions}
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,Active
+Yes
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,BackButton,subst
+1
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,CancelButton,subst
+1
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,Caption,subst
+1
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,CompanyLabel,subst
+1
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,Conditions
+{0 conditions}
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,Message,subst
+1
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,NextButton,subst
+1
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,Subtitle,subst
+1
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,Title,subst
+1
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,UserNameLabel,subst
+1
+
+905DA2E9-988C-2F27-BB1F5F274AC9,Alias
+{Cancel Actions}
+
+905DA2E9-988C-2F27-BB1F5F274AC9,Conditions
+{0 conditions}
+
+908CE221-5A3D-0A78-24A1-E7C91EBE38D4,BackButton,subst
+1
+
+908CE221-5A3D-0A78-24A1-E7C91EBE38D4,CancelButton,subst
+1
+
+908CE221-5A3D-0A78-24A1-E7C91EBE38D4,Caption,subst
+1
+
+908CE221-5A3D-0A78-24A1-E7C91EBE38D4,Conditions
+{0 conditions}
+
+908CE221-5A3D-0A78-24A1-E7C91EBE38D4,Message,subst
+1
+
+908CE221-5A3D-0A78-24A1-E7C91EBE38D4,NextButton,subst
+1
+
+908CE221-5A3D-0A78-24A1-E7C91EBE38D4,Subtitle,subst
+1
+
+908CE221-5A3D-0A78-24A1-E7C91EBE38D4,Title,subst
+1
+
+937C3FDD-FB28-98BD-3DAB276E59ED,Background
+white
+
+937C3FDD-FB28-98BD-3DAB276E59ED,Conditions
+{3 conditions}
+
+937C3FDD-FB28-98BD-3DAB276E59ED,Text,subst
+1
+
+937C3FDD-FB28-98BD-3DAB276E59ED,Type
+checkbutton
+
+937C3FDD-FB28-98BD-3DAB276E59ED,VirtualText
+CreateQuickLaunchShortcut
+
+937C3FDD-FB28-98BD-3DAB276E59ED,X
+185
+
+937C3FDD-FB28-98BD-3DAB276E59ED,Y
+200
+
+93AA298C-B64E-5683-14D2-7B86F7DEFD2C,Active
+No
+
+93AA298C-B64E-5683-14D2-7B86F7DEFD2C,Comment
+{set BackupLocationName "BackupLocation_${BackupLocationNumber}"}
+
+93AA298C-B64E-5683-14D2-7B86F7DEFD2C,Conditions
+{0 conditions}
+
+93AA298C-B64E-5683-14D2-7B86F7DEFD2C,ResultVirtualText
+BackupLocationName
+
+93AA298C-B64E-5683-14D2-7B86F7DEFD2C,TclScript
+{set BackupLocationName "BackupLocation_${BackupLocationNumber}"}
+
+96A68CAC-9ED7-806C-086B104720FD,CheckCondition
+{Before Action is Executed}
+
+96A68CAC-9ED7-806C-086B104720FD,String
+<%ErrorsOccurred%>
+
+97ACF525-C075-8635-E019202A83D8,Comment
+{Ask the user if they want to proceed with the uninstall.}
+
+9892B25C-689B-5B8F-F0C9-B14FF6ACC40C,Active
+No
+
+9892B25C-689B-5B8F-F0C9-B14FF6ACC40C,Conditions
+{0 conditions}
+
+9892B25C-689B-5B8F-F0C9-B14FF6ACC40C,ResultVirtualText
+AddBackupLocation
+
+9892B25C-689B-5B8F-F0C9-B14FF6ACC40C,TclScript
+{set AddBackupLocation no}
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,Active
+Yes
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,BackButton,subst
+1
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,CancelButton,subst
+1
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,Caption,subst
+1
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,Conditions
+{0 conditions}
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,Message,subst
+1
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,NextButton,subst
+1
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,Subtitle,subst
+1
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,Title,subst
+1
+
+9A663209-495B-ED16-09BE-457B61148022,Conditions
+{0 conditions}
+
+9A663209-495B-ED16-09BE-457B61148022,FileName
+<%ShortAppName%>-program-QueryCurrent
+
+9A663209-495B-ED16-09BE-457B61148022,ShortcutName
+{Query Current Only}
+
+9A663209-495B-ED16-09BE-457B61148022,TargetFileName
+<%InstallDir%>/tools/QueryOutputCurrent.bat
+
+9A663209-495B-ED16-09BE-457B61148022,WorkingDirectory
+<%InstallDir%>
+
+9D101299-B80C-441B-8685-6E3AC61808E8,Alias
+{Remote Control}
+
+9D101299-B80C-441B-8685-6E3AC61808E8,Comment
+{Get tech support via remote control}
+
+9D101299-B80C-441B-8685-6E3AC61808E8,Conditions
+{0 conditions}
+
+9D101299-B80C-441B-8685-6E3AC61808E8,FileName
+<%ShortAppName%>-program-RemoteControl
+
+9D101299-B80C-441B-8685-6E3AC61808E8,ShortcutName
+RemoteControl
+
+9D101299-B80C-441B-8685-6E3AC61808E8,TargetFileName
+<%InstallDir%>/tools/RemoteControl.exe
+
+9D101299-B80C-441B-8685-6E3AC61808E8,WorkingDirectory
+<%InstallDir%>
+
+A1DD1DC2-85D7-9BC6-998AC3D4A3A9,Alias
+{Startup Actions}
+
+A1DD1DC2-85D7-9BC6-998AC3D4A3A9,Conditions
+{0 conditions}
+
+A5B32DA1-B2FE-C1FA-6057-FBC3059EF076,Conditions
+{0 conditions}
+
+A5B32DA1-B2FE-C1FA-6057-FBC3059EF076,ResultVirtualText
+AddBackupLocation
+
+A5B32DA1-B2FE-C1FA-6057-FBC3059EF076,TclScript
+{set AddBackupLocation no }
+
+A6E1B027-A1B4-5848-4F868D028D00,CheckCondition
+{Before Action is Executed}
+
+A6E1B027-A1B4-5848-4F868D028D00,String
+<%ViewReadme%>
+
+ADA6EB2F-8820-4366-BBEF-ED1335B7F828,Conditions
+{1 condition}
+
+AE3BD5B4-35DE-4240-B79914D43E56,Active
+No
+
+AE3BD5B4-35DE-4240-B79914D43E56,BackButton,subst
+1
+
+AE3BD5B4-35DE-4240-B79914D43E56,CancelButton,subst
+1
+
+AE3BD5B4-35DE-4240-B79914D43E56,Caption,subst
+1
+
+AE3BD5B4-35DE-4240-B79914D43E56,Conditions
+{0 conditions}
+
+AE3BD5B4-35DE-4240-B79914D43E56,Message,subst
+1
+
+AE3BD5B4-35DE-4240-B79914D43E56,NextButton,subst
+1
+
+AIX-ppc,Active
+No
+
+AIX-ppc,DefaultDirectoryPermission
+0755
+
+AIX-ppc,DefaultFilePermission
+0755
+
+AIX-ppc,Executable
+<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%>
+
+AIX-ppc,FallBackToConsole
+Yes
+
+AIX-ppc,InstallDir
+<%Home%>/<%ShortAppName%>
+
+AIX-ppc,InstallMode
+Standard
+
+AIX-ppc,InstallType
+Typical
+
+AIX-ppc,ProgramExecutable
+{}
+
+AIX-ppc,ProgramFolderAllUsers
+No
+
+AIX-ppc,ProgramFolderName
+<%AppName%>
+
+AIX-ppc,ProgramLicense
+<%InstallDir%>/LICENSE.txt
+
+AIX-ppc,ProgramName
+{}
+
+AIX-ppc,ProgramReadme
+<%InstallDir%>/README.txt
+
+AIX-ppc,PromptForRoot
+Yes
+
+AIX-ppc,RequireRoot
+No
+
+AIX-ppc,RootInstallDir
+/usr/local/<%ShortAppName%>
+
+B002A311-F8E7-41DE-B039-521391924E5B,Message,subst
+1
+
+B01CBBB2-6A78-CA53-9ED9-C3C4CFC9239E,Alias
+{Stop Backup Service}
+
+B01CBBB2-6A78-CA53-9ED9-C3C4CFC9239E,Comment
+{Stop the Backup Windows Service}
+
+B01CBBB2-6A78-CA53-9ED9-C3C4CFC9239E,Conditions
+{0 conditions}
+
+B01CBBB2-6A78-CA53-9ED9-C3C4CFC9239E,FileName
+<%ShortAppName%>-program-stopservice
+
+B01CBBB2-6A78-CA53-9ED9-C3C4CFC9239E,ShortcutName
+{Stop Service}
+
+B01CBBB2-6A78-CA53-9ED9-C3C4CFC9239E,TargetFileName
+<%InstallDir%>/tools/StopService.bat
+
+B01CBBB2-6A78-CA53-9ED9-C3C4CFC9239E,WorkingDirectory
+<%InstallDir%>
+
+B0AA6839-AAB6-A602-C0E4ECA2E4FF,CheckCondition
+{Before Action is Executed}
+
+B0AA6839-AAB6-A602-C0E4ECA2E4FF,Filename
+<%ProgramExecutable%>
+
+B39C0455-D1B6-7DDC-E2717F83463E,CheckCondition
+{Before Action is Executed}
+
+B39C0455-D1B6-7DDC-E2717F83463E,Operator
+false
+
+B39C0455-D1B6-7DDC-E2717F83463E,String
+<%InstallStopped%>
+
+B3B99E2D-C368-A921-B7BC-A71EBDE3AD4D,Conditions
+{0 conditions}
+
+B3B99E2D-C368-A921-B7BC-A71EBDE3AD4D,ExecuteAction
+{Before Next Pane is Displayed}
+
+B3B99E2D-C368-A921-B7BC-A71EBDE3AD4D,Password
+<%InstallPassword%>
+
+B4D31D1E-ADB1-DE8F-18EB7294DDA8,Conditions
+{0 conditions}
+
+B4D31D1E-ADB1-DE8F-18EB7294DDA8,ProgramCommandLine
+{<%ServiceExeName%> -r -S <%ServiceName%>}
+
+B4D31D1E-ADB1-DE8F-18EB7294DDA8,WorkingDirectory
+<%InstallDir%>
+
+B4ED4636-22D8-41DC-9E3D-BD1E1CAD2174,Message,subst
+1
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,AcceptRadiobutton,subst
+0
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,Active
+Yes
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,BackButton,subst
+1
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,CancelButton,subst
+1
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,Caption,subst
+1
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,Conditions
+{0 conditions}
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,DeclineRadiobutton,subst
+0
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,Message,subst
+1
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,NextButton,subst
+1
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,Subtitle,subst
+1
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,Text,subst
+1
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,Title,subst
+1
+
+B5DFEC63-92A9-4686-909E-0CE78A7069D6,Alias
+{Restart Backup Service}
+
+B5DFEC63-92A9-4686-909E-0CE78A7069D6,Comment
+{Stop and restart the Backup Windows Service}
+
+B5DFEC63-92A9-4686-909E-0CE78A7069D6,Conditions
+{0 conditions}
+
+B5DFEC63-92A9-4686-909E-0CE78A7069D6,FileName
+<%ShortAppName%>-program-restartservice
+
+B5DFEC63-92A9-4686-909E-0CE78A7069D6,ShortcutName
+{Restart Service}
+
+B5DFEC63-92A9-4686-909E-0CE78A7069D6,TargetFileName
+{<%InstallDir%>\tools\RestartService.bat}
+
+B5DFEC63-92A9-4686-909E-0CE78A7069D6,WorkingDirectory
+<%InstallDir%>
+
+B927A5AF-4DFE-82A3-DCA8-35FA4D91EC5A,Conditions
+{0 conditions}
+
+B927A5AF-4DFE-82A3-DCA8-35FA4D91EC5A,LabelSide
+left
+
+B927A5AF-4DFE-82A3-DCA8-35FA4D91EC5A,Text,subst
+1
+
+B927A5AF-4DFE-82A3-DCA8-35FA4D91EC5A,Type
+entry
+
+B927A5AF-4DFE-82A3-DCA8-35FA4D91EC5A,VirtualText
+BackupLocationShortName
+
+B927A5AF-4DFE-82A3-DCA8-35FA4D91EC5A,Y
+100
+
+B93D2216-1DDB-484C-A9AC-D6C18ED7DE23,Conditions
+{2 conditions}
+
+B93D2216-1DDB-484C-A9AC-D6C18ED7DE23,State
+disabled
+
+B93D2216-1DDB-484C-A9AC-D6C18ED7DE23,Widget
+NextButton
+
+BC4EA5FD-50BD-4D6E-953F-5E3EDB957360,CheckCondition
+{Before Next Action is Executed}
+
+BC4EA5FD-50BD-4D6E-953F-5E3EDB957360,FailureMessage
+<%DirectoryPermissionText%>
+
+BC4EA5FD-50BD-4D6E-953F-5E3EDB957360,Filename
+<%InstallDir%>
+
+BC4EA5FD-50BD-4D6E-953F-5E3EDB957360,Permission
+{can create}
+
+C0452595-F3EB-43AD-BCA2-661437584636,Alias
+{Modify Backup Configuration}
+
+C0452595-F3EB-43AD-BCA2-661437584636,Comment
+{Modify your Backup Configuration}
+
+C0452595-F3EB-43AD-BCA2-661437584636,Conditions
+{0 conditions}
+
+C0452595-F3EB-43AD-BCA2-661437584636,FileName
+<%ShortAppName%>-program-editconfig
+
+C0452595-F3EB-43AD-BCA2-661437584636,ShortcutName
+{Edit Config File}
+
+C0452595-F3EB-43AD-BCA2-661437584636,TargetFileName
+<%InstallDir%>/tools/EditConfig.bat
+
+C0452595-F3EB-43AD-BCA2-661437584636,WorkingDirectory
+<%InstallDir%>
+
+C0AF7C05-A31A-8376-BCB9-BA8B3A666252,Conditions
+{0 conditions}
+
+C0AF7C05-A31A-8376-BCB9-BA8B3A666252,FileName
+<%ShortAppName%>-program-QueryAll
+
+C0AF7C05-A31A-8376-BCB9-BA8B3A666252,ShortcutName
+{Query All}
+
+C0AF7C05-A31A-8376-BCB9-BA8B3A666252,TargetFileName
+<%InstallDir%>/tools/QueryOutputAll.bat
+
+C0AF7C05-A31A-8376-BCB9-BA8B3A666252,WorkingDirectory
+<%InstallDir%>
+
+C105AAAE-7C16-2C9E-769FE4535B60,Active
+No
+
+C105AAAE-7C16-2C9E-769FE4535B60,Caption,subst
+1
+
+C105AAAE-7C16-2C9E-769FE4535B60,CloseButton,subst
+1
+
+C105AAAE-7C16-2C9E-769FE4535B60,Conditions
+{3 conditions}
+
+C105AAAE-7C16-2C9E-769FE4535B60,Message,subst
+1
+
+C105AAAE-7C16-2C9E-769FE4535B60,TextFile
+<%ProgramReadme%>
+
+C105AAAE-7C16-2C9E-769FE4535B60,Title,subst
+1
+
+C33D74B2-26FA-16F5-433A10C6A747,Active
+No
+
+C33D74B2-26FA-16F5-433A10C6A747,Conditions
+{3 conditions}
+
+C33D74B2-26FA-16F5-433A10C6A747,ProgramCommandLine
+<%ProgramExecutable%>
+
+C33D74B2-26FA-16F5-433A10C6A747,WaitForProgram
+No
+
+C33D74B2-26FA-16F5-433A10C6A747,WorkingDirectory
+<%InstallDir%>
+
+C7762473-273F-E3CA-17E3-65789B14CDB0,Conditions
+{0 conditions}
+
+C7762473-273F-E3CA-17E3-65789B14CDB0,ExecuteAction
+{Before Next Pane is Displayed}
+
+C7762473-273F-E3CA-17E3-65789B14CDB0,FileOpenAction
+{Append to file}
+
+C7762473-273F-E3CA-17E3-65789B14CDB0,Files
+<%ConfigFileTemplate%>
+
+C7762473-273F-E3CA-17E3-65789B14CDB0,TextToWrite,subst
+1
+
+CC4337CC-F3B5-757C-DFCF5D1D365A,CheckCondition
+{Before Action is Executed}
+
+CC4337CC-F3B5-757C-DFCF5D1D365A,Operator
+false
+
+CC4337CC-F3B5-757C-DFCF5D1D365A,String
+<%SilentMode%>
+
+CDD84DE3-C970-458F-9162-1A3CE0AA716B,Alias
+{Start Backup Service}
+
+CDD84DE3-C970-458F-9162-1A3CE0AA716B,Comment
+{Start Backup Windows Service}
+
+CDD84DE3-C970-458F-9162-1A3CE0AA716B,Conditions
+{0 conditions}
+
+CDD84DE3-C970-458F-9162-1A3CE0AA716B,FileName
+<%ShortAppName%>-program-startservice
+
+CDD84DE3-C970-458F-9162-1A3CE0AA716B,ShortcutName
+{Start Service}
+
+CDD84DE3-C970-458F-9162-1A3CE0AA716B,TargetFileName
+{<%InstallDir%>\tools\StartService.bat}
+
+CDD84DE3-C970-458F-9162-1A3CE0AA716B,WorkingDirectory
+<%InstallDir%>
+
+CFFA27AF-A641-E41C-B4A0E3BB3CBB,Background
+white
+
+CFFA27AF-A641-E41C-B4A0E3BB3CBB,Conditions
+{2 conditions}
+
+CFFA27AF-A641-E41C-B4A0E3BB3CBB,Text,subst
+1
+
+CFFA27AF-A641-E41C-B4A0E3BB3CBB,Type
+checkbutton
+
+CFFA27AF-A641-E41C-B4A0E3BB3CBB,VirtualText
+LaunchApplication
+
+CFFA27AF-A641-E41C-B4A0E3BB3CBB,X
+185
+
+CFFA27AF-A641-E41C-B4A0E3BB3CBB,Y
+160
+
+D23DD94C-E517-7F34-FD59-802CB18AB887,Comment
+{Need to do before starting anything else.}
+
+D23DD94C-E517-7F34-FD59-802CB18AB887,Conditions
+{0 conditions}
+
+D23DD94C-E517-7F34-FD59-802CB18AB887,Files
+{*/*.conf;*/*.txt;*/*.bat}
+
+D23DD94C-E517-7F34-FD59-802CB18AB887,LineFeed
+Windows
+
+D3D73C76-D9D3-07DA-63D4163A44BE,Conditions
+{0 conditions}
+
+D3D73C76-D9D3-07DA-63D4163A44BE,ExitType
+Finish
+
+D4FC6EB5-DDEE-4E4A-B8E1-D4B588A7928B,Action
+{Install Actions}
+
+D55BA4AF-E73B-60D1-E26F79175227,Action
+{Uninstall Actions}
+
+D55BA4AF-E73B-60D1-E26F79175227,Conditions
+{0 conditions}
+
+D7FBBEBB-2186-5674-BA87-BB7151859D4E,Conditions
+{0 conditions}
+
+D7FBBEBB-2186-5674-BA87-BB7151859D4E,ResultVirtualText
+BackupLocationNumber
+
+D7FBBEBB-2186-5674-BA87-BB7151859D4E,TclScript
+{incr BackupLocationNumber}
+
+D8B8A9BF-5F2E-4236-A63E-5A8C5FFA8968,Alias
+{Reload Configuration File, after editing it.}
+
+D8B8A9BF-5F2E-4236-A63E-5A8C5FFA8968,Conditions
+{0 conditions}
+
+D8B8A9BF-5F2E-4236-A63E-5A8C5FFA8968,FileName
+<%ShortAppName%>-program-reloadconfig
+
+D8B8A9BF-5F2E-4236-A63E-5A8C5FFA8968,ShortcutName
+{Reload configuration file}
+
+D8B8A9BF-5F2E-4236-A63E-5A8C5FFA8968,TargetFileName
+<%InstallDir%>/tools/ReloadConfig.bat
+
+D8B8A9BF-5F2E-4236-A63E-5A8C5FFA8968,WorkingDirectory
+<%InstallDir%>
+
+D8F0AA0F-AD79-C566-15CC508F503B,Action
+{Install Actions}
+
+D8F0AA0F-AD79-C566-15CC508F503B,Conditions
+{0 conditions}
+
+D9F88AC1-3D2D-F6DB-871E-3A0E016770B1,Conditions
+{0 conditions}
+
+D9F88AC1-3D2D-F6DB-871E-3A0E016770B1,Destination
+<%ConfigFileTemplate%>
+
+D9F88AC1-3D2D-F6DB-871E-3A0E016770B1,Source
+<%InstallDir%>/templates/original.conf
+
+DA33B826-E633-A845-4646-76DFA78B907B,Active
+Yes
+
+DA33B826-E633-A845-4646-76DFA78B907B,BackButton,subst
+1
+
+DA33B826-E633-A845-4646-76DFA78B907B,CancelButton,subst
+1
+
+DA33B826-E633-A845-4646-76DFA78B907B,Caption,subst
+1
+
+DA33B826-E633-A845-4646-76DFA78B907B,Conditions
+{0 conditions}
+
+DA33B826-E633-A845-4646-76DFA78B907B,Message,subst
+1
+
+DA33B826-E633-A845-4646-76DFA78B907B,NextButton,subst
+1
+
+DA33B826-E633-A845-4646-76DFA78B907B,Subtitle,subst
+1
+
+DA33B826-E633-A845-4646-76DFA78B907B,Title,subst
+1
+
+DDBBD8A9-13D7-9509-9202-419E989F60A9,Active
+No
+
+DDBBD8A9-13D7-9509-9202-419E989F60A9,Checked
+No
+
+DDBBD8A9-13D7-9509-9202-419E989F60A9,Conditions
+{0 conditions}
+
+DDBBD8A9-13D7-9509-9202-419E989F60A9,Text,subst
+1
+
+DDBBD8A9-13D7-9509-9202-419E989F60A9,Type
+checkbutton
+
+DDBBD8A9-13D7-9509-9202-419E989F60A9,VirtualText
+AddBackupLocation
+
+DDBBD8A9-13D7-9509-9202-419E989F60A9,X
+50
+
+DDBBD8A9-13D7-9509-9202-419E989F60A9,Y
+200
+
+DE800F1C-CB1A-E1CE-AEB8-B0A6DB4818E7,Alias
+{Install Backup Service}
+
+DE800F1C-CB1A-E1CE-AEB8-B0A6DB4818E7,Comment
+{Install the Backup Windows Service}
+
+DE800F1C-CB1A-E1CE-AEB8-B0A6DB4818E7,Conditions
+{0 conditions}
+
+DE800F1C-CB1A-E1CE-AEB8-B0A6DB4818E7,FileName
+<%ShortAppName%>-program-installService
+
+DE800F1C-CB1A-E1CE-AEB8-B0A6DB4818E7,ShortcutName
+{Install Service}
+
+DE800F1C-CB1A-E1CE-AEB8-B0A6DB4818E7,TargetFileName
+<%InstallDir%>/tools/InstallService.bat
+
+DE800F1C-CB1A-E1CE-AEB8-B0A6DB4818E7,WorkingDirectory
+<%InstallDir%>
+
+DECC120D-6904-7F17-45A49184A5A3,Active
+No
+
+DECC120D-6904-7F17-45A49184A5A3,Conditions
+{2 conditions}
+
+DECC120D-6904-7F17-45A49184A5A3,ShortcutName
+<%AppName%>
+
+DECC120D-6904-7F17-45A49184A5A3,TargetFileName
+<%ProgramExecutable%>
+
+DECC120D-6904-7F17-45A49184A5A3,WorkingDirectory
+<%InstallDir%>
+
+DFFF91A9-2CA5-6ABE-8474D814AF88,CheckCondition
+{Before Action is Executed}
+
+DFFF91A9-2CA5-6ABE-8474D814AF88,Operator
+false
+
+DFFF91A9-2CA5-6ABE-8474D814AF88,String
+<%SilentMode%>
+
+E02368C5-95B5-03A7-3282740037B0,CheckCondition
+{Before Action is Executed}
+
+E02368C5-95B5-03A7-3282740037B0,Operator
+false
+
+E02368C5-95B5-03A7-3282740037B0,String
+<%InstallStopped%>
+
+E161F216-E597-B340-C1A71C476E2C,CheckCondition
+{Before Action is Executed}
+
+E161F216-E597-B340-C1A71C476E2C,Message,subst
+1
+
+E161F216-E597-B340-C1A71C476E2C,Title,subst
+1
+
+E23AC50D-7CFB-800E-A99C6F4068F8,Alias
+{Cancel Actions}
+
+E23AC50D-7CFB-800E-A99C6F4068F8,Conditions
+{0 conditions}
+
+E44CFF46-6302-C518-B9C30D2E43F7,CheckCondition
+{Before Action is Executed}
+
+E44CFF46-6302-C518-B9C30D2E43F7,String
+<%CreateDesktopShortcut%>
+
+E4DEA723-FC78-45D7-BAB1-A3E4C4C96EA1,Conditions
+{0 conditions}
+
+E4DEA723-FC78-45D7-BAB1-A3E4C4C96EA1,ProgramCommandLine
+{net stop <%ServiceName%>}
+
+E56ADFF4-C15E-AEDB-A599-C468AF72C4BB,Conditions
+{0 conditions}
+
+E56ADFF4-C15E-AEDB-A599-C468AF72C4BB,Destination
+{<%InstallDir%>\templates\NotifySysAdmin.original.vbs}
+
+E56ADFF4-C15E-AEDB-A599-C468AF72C4BB,Source
+{<%InstallDir%>\templates\NotifySysAdmin.template.vbs}
+
+EB2B31A1-C111-3582-0C8A5656692A,String
+<%ErrorsOccurred%>
+
+EB532611-5F30-3C24-66EB-F3826D9054FD,CheckCondition
+{Before Action is Executed}
+
+EB532611-5F30-3C24-66EB-F3826D9054FD,String
+<%AddBackupLocation%>
+
+F4024A3E-9A6D-2726-5E0CFFA93054,Alias
+{Uninstall Actions}
+
+F4024A3E-9A6D-2726-5E0CFFA93054,Conditions
+{0 conditions}
+
+F5F21749-8B3A-49C6-9138-9C4D6D703D26,Active
+No
+
+F5F21749-8B3A-49C6-9138-9C4D6D703D26,Conditions
+{0 conditions}
+
+F5F21749-8B3A-49C6-9138-9C4D6D703D26,ProgramCommandLine
+{cmd /k tools/7za.exe encrypted_keys.exe -p<%InstallPassword%>}
+
+F5F21749-8B3A-49C6-9138-9C4D6D703D26,ProgressiveOutputWidget
+Message
+
+F5F21749-8B3A-49C6-9138-9C4D6D703D26,ShowProgressiveOutput
+Yes
+
+F5F21749-8B3A-49C6-9138-9C4D6D703D26,WorkingDirectory
+<%InstallDir%>
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,Active
+Yes
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,BackButton,subst
+1
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,CancelButton,subst
+1
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,Caption,subst
+1
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,CompanyLabel,subst
+0
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,Conditions
+{0 conditions}
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,Message,subst
+1
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,NextButton,subst
+1
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,Subtitle,subst
+1
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,Title,subst
+1
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,UserNameLabel,subst
+1
+
+F9E38720-6ABA-8B99-2471-496902E4CBC2,Active
+No
+
+F9E38720-6ABA-8B99-2471-496902E4CBC2,Conditions
+{0 conditions}
+
+F9E38720-6ABA-8B99-2471-496902E4CBC2,ResultVirtualText
+BackupLocationPath
+
+F9E38720-6ABA-8B99-2471-496902E4CBC2,TclScript
+{set BackupLocationPath "" }
+
+FB697A88-2842-468E-9776-85E84B009340,Active
+No
+
+FB697A88-2842-468E-9776-85E84B009340,Conditions
+{0 conditions}
+
+FB697A88-2842-468E-9776-85E84B009340,IgnoreErrors
+Yes
+
+FB697A88-2842-468E-9776-85E84B009340,ProgramCommandLine
+{"<%InstallDir%>\<%ServiceExeName%> -r -S <%ServiceName%>}
+
+FB697A88-2842-468E-9776-85E84B009340,WorkingDirectory
+<%Temp%>
+
+FDF68FD6-BEA8-4A74-867D-5139F4D9E793,Active
+No
+
+FDF68FD6-BEA8-4A74-867D-5139F4D9E793,Conditions
+{0 conditions}
+
+FDF68FD6-BEA8-4A74-867D-5139F4D9E793,WaitTime
+2000
+
+FEFD090D-C133-BC95-B3564F693CD3,Alias
+{Finish Actions}
+
+FEFD090D-C133-BC95-B3564F693CD3,Conditions
+{0 conditions}
+
+FreeBSD-4-x86,Active
+No
+
+FreeBSD-4-x86,DefaultDirectoryPermission
+0755
+
+FreeBSD-4-x86,DefaultFilePermission
+0755
+
+FreeBSD-4-x86,Executable
+<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%>
+
+FreeBSD-4-x86,FallBackToConsole
+Yes
+
+FreeBSD-4-x86,InstallDir
+<%Home%>/<%ShortAppName%>
+
+FreeBSD-4-x86,InstallMode
+Standard
+
+FreeBSD-4-x86,InstallType
+Typical
+
+FreeBSD-4-x86,ProgramExecutable
+{}
+
+FreeBSD-4-x86,ProgramFolderAllUsers
+No
+
+FreeBSD-4-x86,ProgramFolderName
+<%AppName%>
+
+FreeBSD-4-x86,ProgramLicense
+<%InstallDir%>/LICENSE.txt
+
+FreeBSD-4-x86,ProgramName
+{}
+
+FreeBSD-4-x86,ProgramReadme
+<%InstallDir%>/README.txt
+
+FreeBSD-4-x86,PromptForRoot
+Yes
+
+FreeBSD-4-x86,RequireRoot
+No
+
+FreeBSD-4-x86,RootInstallDir
+/usr/local/<%ShortAppName%>
+
+FreeBSD-x86,Active
+No
+
+FreeBSD-x86,DefaultDirectoryPermission
+0755
+
+FreeBSD-x86,DefaultFilePermission
+0755
+
+FreeBSD-x86,Executable
+<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%>
+
+FreeBSD-x86,FallBackToConsole
+Yes
+
+FreeBSD-x86,InstallDir
+<%Home%>/<%ShortAppName%>
+
+FreeBSD-x86,InstallMode
+Standard
+
+FreeBSD-x86,InstallType
+Typical
+
+FreeBSD-x86,ProgramExecutable
+{}
+
+FreeBSD-x86,ProgramFolderAllUsers
+No
+
+FreeBSD-x86,ProgramFolderName
+<%AppName%>
+
+FreeBSD-x86,ProgramLicense
+<%InstallDir%>/LICENSE.txt
+
+FreeBSD-x86,ProgramName
+{}
+
+FreeBSD-x86,ProgramReadme
+<%InstallDir%>/README.txt
+
+FreeBSD-x86,PromptForRoot
+Yes
+
+FreeBSD-x86,RequireRoot
+No
+
+FreeBSD-x86,RootInstallDir
+/usr/local/<%ShortAppName%>
+
+HPUX-hppa,Active
+No
+
+HPUX-hppa,DefaultDirectoryPermission
+0755
+
+HPUX-hppa,DefaultFilePermission
+0755
+
+HPUX-hppa,Executable
+<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%>
+
+HPUX-hppa,FallBackToConsole
+Yes
+
+HPUX-hppa,InstallDir
+<%Home%>/<%ShortAppName%>
+
+HPUX-hppa,InstallMode
+Standard
+
+HPUX-hppa,InstallType
+Typical
+
+HPUX-hppa,ProgramExecutable
+{}
+
+HPUX-hppa,ProgramFolderAllUsers
+No
+
+HPUX-hppa,ProgramFolderName
+<%AppName%>
+
+HPUX-hppa,ProgramLicense
+<%InstallDir%>/LICENSE.txt
+
+HPUX-hppa,ProgramName
+{}
+
+HPUX-hppa,ProgramReadme
+<%InstallDir%>/README.txt
+
+HPUX-hppa,PromptForRoot
+Yes
+
+HPUX-hppa,RequireRoot
+No
+
+HPUX-hppa,RootInstallDir
+/usr/local/<%ShortAppName%>
+
+Linux-x86,Active
+No
+
+Linux-x86,BuildType
+dynamic
+
+Linux-x86,DefaultDirectoryPermission
+00755
+
+Linux-x86,DefaultFilePermission
+00755
+
+Linux-x86,Executable
+<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%>
+
+Linux-x86,FallBackToConsole
+Yes
+
+Linux-x86,InstallDir
+<%Home%>/<%ShortAppName%>
+
+Linux-x86,InstallMode
+Standard
+
+Linux-x86,InstallType
+Typical
+
+Linux-x86,ProgramExecutable
+<%InstallDir%>/TebucoSafe
+
+Linux-x86,ProgramFolderAllUsers
+No
+
+Linux-x86,ProgramFolderName
+<%AppName%>
+
+Linux-x86,ProgramLicense
+<%InstallDir%>/LICENSE.txt
+
+Linux-x86,ProgramName
+{}
+
+Linux-x86,ProgramReadme
+<%InstallDir%>/README.txt
+
+Linux-x86,PromptForRoot
+Yes
+
+Linux-x86,RequireRoot
+No
+
+Linux-x86,RootInstallDir
+/usr/local/<%ShortAppName%>
+
+Solaris-sparc,Active
+No
+
+Solaris-sparc,DefaultDirectoryPermission
+0755
+
+Solaris-sparc,DefaultFilePermission
+0755
+
+Solaris-sparc,Executable
+<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%>
+
+Solaris-sparc,FallBackToConsole
+Yes
+
+Solaris-sparc,InstallDir
+<%Home%>/<%ShortAppName%>
+
+Solaris-sparc,InstallMode
+Standard
+
+Solaris-sparc,InstallType
+Typical
+
+Solaris-sparc,ProgramExecutable
+{}
+
+Solaris-sparc,ProgramFolderAllUsers
+No
+
+Solaris-sparc,ProgramFolderName
+<%AppName%>
+
+Solaris-sparc,ProgramLicense
+<%InstallDir%>/LICENSE.txt
+
+Solaris-sparc,ProgramName
+{}
+
+Solaris-sparc,ProgramReadme
+<%InstallDir%>/README.txt
+
+Solaris-sparc,PromptForRoot
+Yes
+
+Solaris-sparc,RequireRoot
+No
+
+Solaris-sparc,RootInstallDir
+/usr/local/<%ShortAppName%>
+
+TarArchive,Active
+No
+
+TarArchive,CompressionLevel
+6
+
+TarArchive,DefaultDirectoryPermission
+0755
+
+TarArchive,DefaultFilePermission
+0755
+
+TarArchive,Executable
+<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%>
+
+TarArchive,FallBackToConsole
+Yes
+
+TarArchive,InstallDir
+<%Home%>/<%ShortAppName%>
+
+TarArchive,InstallMode
+Standard
+
+TarArchive,InstallType
+Typical
+
+TarArchive,OutputFileName
+<%ShortAppName%>-<%Version%>.tar.gz
+
+TarArchive,ProgramExecutable
+{}
+
+TarArchive,ProgramFolderAllUsers
+No
+
+TarArchive,ProgramFolderName
+<%AppName%>
+
+TarArchive,ProgramLicense
+<%InstallDir%>/LICENSE.txt
+
+TarArchive,ProgramName
+{}
+
+TarArchive,ProgramReadme
+<%InstallDir%>/README.txt
+
+TarArchive,PromptForRoot
+Yes
+
+TarArchive,RequireRoot
+No
+
+TarArchive,RootInstallDir
+/usr/local/<%ShortAppName%>
+
+TarArchive,VirtualTextMap
+{<%InstallDir%> <%ShortAppName%>}
+
+Windows,Active
+Yes
+
+Windows,BuildType
+{}
+
+Windows,Executable
+installer.exe
+
+Windows,IncludeTWAPI
+No
+
+Windows,InstallDir
+{C:\Program Files\<%BrandName%>}
+
+Windows,InstallMode
+Standard
+
+Windows,InstallType
+Typical
+
+Windows,ProgramExecutable
+{}
+
+Windows,ProgramFolderAllUsers
+No
+
+Windows,ProgramFolderName
+<%BrandName%>
+
+Windows,ProgramLicense
+{<%InstallDir%>\LICENSE.txt}
+
+Windows,ProgramName
+{}
+
+Windows,ProgramReadme
+{}
+
+Windows,WindowsIcon
+{}
+
+ZipArchive,Active
+No
+
+ZipArchive,CompressionLevel
+6
+
+ZipArchive,DefaultDirectoryPermission
+0755
+
+ZipArchive,DefaultFilePermission
+0755
+
+ZipArchive,Executable
+<%AppName%>-<%Version%>-<%Platform%>-Install<%Ext%>
+
+ZipArchive,FallBackToConsole
+Yes
+
+ZipArchive,InstallDir
+<%Home%>/<%ShortAppName%>
+
+ZipArchive,InstallMode
+Standard
+
+ZipArchive,InstallType
+Typical
+
+ZipArchive,OutputFileName
+<%ShortAppName%>-<%Version%>.zip
+
+ZipArchive,ProgramExecutable
+{}
+
+ZipArchive,ProgramFolderAllUsers
+No
+
+ZipArchive,ProgramFolderName
+<%AppName%>
+
+ZipArchive,ProgramLicense
+<%InstallDir%>/LICENSE.txt
+
+ZipArchive,ProgramName
+{}
+
+ZipArchive,ProgramReadme
+<%InstallDir%>/README.txt
+
+ZipArchive,PromptForRoot
+Yes
+
+ZipArchive,RequireRoot
+No
+
+ZipArchive,RootInstallDir
+/usr/local/<%ShortAppName%>
+
+ZipArchive,VirtualTextMap
+{<%InstallDir%> <%ShortAppName%>}
+
+}
+
+::msgcat::mcmset de {
+20CBDBEA-2217-457B-8D98-D692C4F591E9,Message
+<%UninstallCompleteText%>
+
+2BF07B5A-9B06-4C1E-810D-5B5E9303D2C6,Message
+<%InstallationCompleteText%>
+
+B002A311-F8E7-41DE-B039-521391924E5B,Message
+<%InstallingApplicationText%>
+
+B4ED4636-22D8-41DC-9E3D-BD1E1CAD2174,Message
+<%UninstallingApplicationText%>
+
+}
+::msgcat::mcmset en {
+16D53E40-546B-54C3-088B1B5E3BBB,Text
+<%CreateDesktopShortcutText%>
+
+20CBDBEA-2217-457B-8D98-D692C4F591E9,Message
+<%UninstallCompleteText%>
+
+2BF07B5A-9B06-4C1E-810D-5B5E9303D2C6,Message
+<%InstallationCompleteText%>
+
+2E2963BD-DDBD-738D-A910-B7F3F04946F9,Text
+{No:<%BackupLocationNumber%> }
+
+2EC82FBD-8294-A3E4-7F39-1CBA0582FA64,TextToWrite
+BackupLocations\n\{\n
+
+32F5B0AF-EB83-7A03-D8FAE1ECE473,Message
+<%InstallStartupText%>
+
+32F5B0AF-EB83-7A03-D8FAE1ECE473,Title
+<%InstallApplicationText%>
+
+36FF8915-8148-0F1F-27D7239CBFA1,Text
+<%ViewReadmeText%>
+
+3B6E2E7C-1A26-27F1-D578E383B128,Text
+<%ViewReadmeText%>
+
+3D33AA8C-0037-204B-39A339FD38BD,Message
+{<%BrandName%> has been removed from your system. Thank you for using the <%BrandName%> Backup Service. If you need further assistance, please contact us at http://<%BrandName%>.com or support@<%BrandName%>.com.}
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,Caption
+{}
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,Message
+{}
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,Subtitle
+{Add a directory to backup, nickname it, and add some exclusions.}
+
+3FD9BFF3-2F6E-E4FC-2FAE-98F2017916A7,Title
+{Backup Locations}
+
+3FDB57ED-598D-8A4E-CEF7-D90833305558,Text
+{Backup Directory}
+
+4A9C852B-647E-EED5-5482FFBCC2AF,Description
+<%ProgramFilesDescription%>
+
+4ACB0B47-42B3-2B3A-BFE9AA4EC707,Message
+<%UninstallStartupText%>
+
+4ACB0B47-42B3-2B3A-BFE9AA4EC707,Title
+<%UninstallApplicationText%>
+
+58E1119F-639E-17C9-5D3898F385AA,Caption
+{Setup will install <%ShortAppName%> in the following folder.
+
+To install to this folder, click Next. To install to a different folder, click Browse and select another folder.}
+
+58E1119F-639E-17C9-5D3898F385AA,Subtitle
+{Where should <%ShortAppName%> be installed?}
+
+59395A3B-6116-F93A-84E1-5E079C2CD44B,Caption
+{Backup Exclusions}
+
+59395A3B-6116-F93A-84E1-5E079C2CD44B,Message
+{}
+
+59395A3B-6116-F93A-84E1-5E079C2CD44B,Subtitle
+{Enter your backup exclusions for this Backup Location <%BackupLocationName_ShortName%> here.}
+
+59395A3B-6116-F93A-84E1-5E079C2CD44B,Text
+{}
+
+59395A3B-6116-F93A-84E1-5E079C2CD44B,Title
+{Backup Exclusions}
+
+640DA2B2-6CF3-0873-D7AE-ABCDDE39EFCF,Text
+{Put your custom text here.
+<%AddBackupLocation%>
+<%BackupLocationNumber%>
+<%BackupLocationName%>}
+
+6C323815-B9AB-FA94-4F5D152EBC51,Caption
+{Installation Wizard Complete}
+
+6C323815-B9AB-FA94-4F5D152EBC51,Message
+{The Installation Wizard has successfully installed the <%BrandName%> Backup Service. Click Finish to exit the wizard.}
+
+6CFBBE13-6B70-4B7C-B5EF-0677752D95A8,Caption
+{Installing encryption keys...}
+
+6CFBBE13-6B70-4B7C-B5EF-0677752D95A8,Message
+{Click next to install encrypted keys and configuration file (bbackupd.conf)...
+
+You will be presented with the current configuration file so that you may make any last minute changes...}
+
+6FEE2889-0338-1D49-60BF-1471F465AB26,TextToWrite
+\}\n
+
+8202CECC-54A0-9B6C-D24D111BA52E,Description
+<%TypicalInstallDescription%>
+
+8419AAAD-5860-F73E-8D11-4D1BDA4D7D37,Text
+{Add another backup location?}
+
+855DE408-060E-3D35-08B5-1D9AB05C2865,Text
+Exclusions
+
+8E095096-F018-A880-429D-A2177A9B70EA,Text
+{AddAnother: <%AddBackupLocation%>}
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,Caption
+{Please enter your phone number and email address.}
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,CompanyLabel
+Email:
+
+9013E862-8E81-5290-64F9-D8BCD13EC7E5,UserNameLabel
+Phone:
+
+937C3FDD-FB28-98BD-3DAB276E59ED,Text
+<%CreateQuickLaunchShortcutText%>
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,Caption
+{Click Next to continue...}
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,Message
+{Building configuration file...}
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,Subtitle
+{}
+
+9A23D3ED-4D9D-9C57-C2A7-71DE0FFF0266,Title
+Continue
+
+9BAB328D-414B-D351-CA8D-824DF94B9DCA,Text
+{Add another backup location after this one?}
+
+A18C2977-1409-C1FB-892415711F72,Text
+<%LaunchApplicationText%>
+
+AAF2142A-9FC9-4664-DFF2-13B9EB7BA0E1,CompanyLabel
+Company:
+
+AE3BD5B4-35DE-4240-B79914D43E56,Caption
+{Welcome to the Installation Wizard for <%BrandName%> Backup Service!}
+
+AE3BD5B4-35DE-4240-B79914D43E56,Message
+{Thank you for installing the <%BrandName%>(SM) Backup Service.
+
+If you need any assistance, please contact us at http://<%BrandName%>.com or support@<%BrandName%>.com.
+
+This will install <%BrandName%> version <%Version%> on your computer.
+
+It is recommended that you close all other applications before continuing.
+
+Click Next to continue or Cancel to exit Setup.
+}
+
+B002A311-F8E7-41DE-B039-521391924E5B,Message
+<%InstallingApplicationText%>
+
+B4404713-AF4F-4F4B-670F3115517F,Description
+<%CustomInstallDescription%>
+
+B4ED4636-22D8-41DC-9E3D-BD1E1CAD2174,Message
+<%UninstallingApplicationText%>
+
+B506E7DA-E7C4-4D42-8C03-FD27BA16D078,Text
+{Box Backup, http://www.fluffy.co.uk/boxbackup
+Copyright (c) 2003-2007 Ben Summers and contributors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
+
+1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
+
+2. 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.
+
+3. All use of this software and associated advertising materials must display the following acknowledgement:
+ This product includes software developed by Ben Summers and contributors.
+
+4. The names of the Authors may not be used to endorse or promote products derived from this software without specific prior written permission.
+
+[Where legally impermissible the Authors do not disclaim liability for direct physical injury or death caused solely by defects in the software unless it is modified by a third party.]
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHORS "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 AUTHORS 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}
+
+B57F8C91-2439-CFD3-7EB5-57D4EA48D3C6,Caption
+{<%BrandName%> will backup the following folder.
+
+To backup this folder, click Next. To backup a different folder, click Browse and select another folder.}
+
+B57F8C91-2439-CFD3-7EB5-57D4EA48D3C6,DestinationLabel
+{Backup This Folder}
+
+B57F8C91-2439-CFD3-7EB5-57D4EA48D3C6,Message
+{}
+
+B57F8C91-2439-CFD3-7EB5-57D4EA48D3C6,Subtitle
+{What directory should <%BrandName%> backup?}
+
+B57F8C91-2439-CFD3-7EB5-57D4EA48D3C6,Title
+{Choose Backup Location}
+
+B927A5AF-4DFE-82A3-DCA8-35FA4D91EC5A,Text
+{Short Name}
+
+B9B85EF1-1D76-4BF5-ABB9-092A8DB35851,Caption
+{Please enter the agreed-upon password for your encrypted key file...}
+
+B9B85EF1-1D76-4BF5-ABB9-092A8DB35851,CompanyLabel
+Password:
+
+B9B85EF1-1D76-4BF5-ABB9-092A8DB35851,Subtitle
+{Please enter your encrypted key file password.}
+
+C105AAAE-7C16-2C9E-769FE4535B60,Caption
+<%ApplicationReadmeText%>
+
+C105AAAE-7C16-2C9E-769FE4535B60,Message
+{}
+
+C105AAAE-7C16-2C9E-769FE4535B60,Title
+<%ApplicationReadmeText%>
+
+C7762473-273F-E3CA-17E3-65789B14CDB0,TextToWrite
+{<%BackupLocationShortName%>
+{
+Path = <%BackupLocationPath%>
+<%BackupLocationExclusions%>
+}
+}
+
+CB058DBA-C3B7-2F48-D985-BE2F7107A76D,BrowseText
+{To continue, click Next. If you would like to select a folder to backup, click Browse.}
+
+CB058DBA-C3B7-2F48-D985-BE2F7107A76D,Caption
+{}
+
+CB058DBA-C3B7-2F48-D985-BE2F7107A76D,DestinationLabel
+{Backup This Folder}
+
+CB058DBA-C3B7-2F48-D985-BE2F7107A76D,Subtitle
+{What directories should <%BrandName%> backup?}
+
+CB058DBA-C3B7-2F48-D985-BE2F7107A76D,Title
+{Choose Backup Location}
+
+CFFA27AF-A641-E41C-B4A0E3BB3CBB,Text
+<%LaunchApplicationText%>
+
+D4625CA6-9864-D8EF-F252D7B7DC87,Text
+<%CreateDesktopShortcutText%>
+
+D47BE952-79F2-844E-D2E5-8F22044E7A9D,Text
+{Account Number:}
+
+DA33B826-E633-A845-4646-76DFA78B907B,Caption
+{Click Next to continue...}
+
+DA33B826-E633-A845-4646-76DFA78B907B,Message
+{Completing configuration file...}
+
+DA33B826-E633-A845-4646-76DFA78B907B,Subtitle
+{}
+
+DA33B826-E633-A845-4646-76DFA78B907B,Title
+Continue
+
+DDBBD8A9-13D7-9509-9202-419E989F60A9,Text
+{Add another Backup Location?}
+
+E0CADC4E-08A6-E429-3B49-BB8CFB7B097F,Text
+{Simple name for this Backup Location (short, no spaces or special characters)}
+
+E161F216-E597-B340-C1A71C476E2C,Message
+<%UninstallLeftoverText%>
+
+E161F216-E597-B340-C1A71C476E2C,Title
+{Uninstall <%BrandName%>}
+
+EA2C57E8-CCFB-CF3D-92CA-83369EFF1B08,Text
+{Add (another) Backup Location after this one?}
+
+EDE364D6-22C7-5108-D398-26FC24E0A55A,Text
+{Enter your Backup Exclusions for this Backup Location...}
+
+F59AF47D-4136-64F8-82C7-4506BD4327FD,Text
+{Add another Backup Location after this one?}
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,Caption
+{Please enter your Account Number.}
+
+F8FD4BD6-F1DF-3F8D-B857-98310E4B1143,UserNameLabel
+{Account Number (like 10005004):}
+
+F98784B1-1965-0F42-6BB0542AE1A9,Caption
+{Installing and starting the TebucoSafe Backup Service...}
+
+F98784B1-1965-0F42-6BB0542AE1A9,Message
+{Click Next to install the TebucoSafe Backup Service as an operating system service on your computer (see services.msc), and start up that service. }
+
+FC678E76-6823-2E55-204CA01C35EF,Text
+<%CreateQuickLaunchShortcutText%>
+
+FF4F6EEA-F4CC-428E-AF33-EB0E88E2147E,Text
+{
+Copyright (c) 2003 - 2006
+ Ben Summers and contributors. All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions
+are met:
+1. Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+2. 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.
+3. All use of this software and associated advertising materials must
+ display the following acknowledgment:
+ This product includes software developed by Ben Summers.
+4. The names of the Authors may not be used to endorse or promote
+ products derived from this software without specific prior written
+ permission.
+
+Where legally impermissible the Authors do not disclaim liability for
+direct physical injury or death caused solely by defects in the software
+unless it is modified by a third party.]
+
+THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``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 AUTHORS 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.
+
+
+ }
+
+}
+::msgcat::mcmset es {
+20CBDBEA-2217-457B-8D98-D692C4F591E9,Message
+<%UninstallCompleteText%>
+
+2BF07B5A-9B06-4C1E-810D-5B5E9303D2C6,Message
+<%InstallationCompleteText%>
+
+B002A311-F8E7-41DE-B039-521391924E5B,Message
+<%InstallingApplicationText%>
+
+B4ED4636-22D8-41DC-9E3D-BD1E1CAD2174,Message
+<%UninstallingApplicationText%>
+
+}
+::msgcat::mcmset fr {
+20CBDBEA-2217-457B-8D98-D692C4F591E9,Message
+<%UninstallCompleteText%>
+
+2BF07B5A-9B06-4C1E-810D-5B5E9303D2C6,Message
+<%InstallationCompleteText%>
+
+B002A311-F8E7-41DE-B039-521391924E5B,Message
+<%InstallingApplicationText%>
+
+B4ED4636-22D8-41DC-9E3D-BD1E1CAD2174,Message
+<%UninstallingApplicationText%>
+
+}
+::msgcat::mcmset pl {
+20CBDBEA-2217-457B-8D98-D692C4F591E9,Message
+<%UninstallCompleteText%>
+
+2BF07B5A-9B06-4C1E-810D-5B5E9303D2C6,Message
+<%InstallationCompleteText%>
+
+B002A311-F8E7-41DE-B039-521391924E5B,Message
+<%InstallingApplicationText%>
+
+B4ED4636-22D8-41DC-9E3D-BD1E1CAD2174,Message
+<%UninstallingApplicationText%>
+
+}
+::msgcat::mcmset pt_br {
+20CBDBEA-2217-457B-8D98-D692C4F591E9,Message
+<%UninstallCompleteText%>
+
+2BF07B5A-9B06-4C1E-810D-5B5E9303D2C6,Message
+<%InstallationCompleteText%>
+
+B002A311-F8E7-41DE-B039-521391924E5B,Message
+<%InstallingApplicationText%>
+
+B4ED4636-22D8-41DC-9E3D-BD1E1CAD2174,Message
+<%UninstallingApplicationText%>
+
+}
+
diff --git a/contrib/windows/installer/tools/InstallService.bat b/contrib/windows/installer/tools/InstallService.bat
new file mode 100755
index 00000000..80a342eb
--- /dev/null
+++ b/contrib/windows/installer/tools/InstallService.bat
@@ -0,0 +1,3 @@
+service.exe -i -S GigaLock
+echo off
+ping 192.168.254.254 -n 5 -w 1000 > nul
diff --git a/contrib/windows/installer/tools/KillBackupProcess.bat b/contrib/windows/installer/tools/KillBackupProcess.bat
new file mode 100755
index 00000000..416d4a79
--- /dev/null
+++ b/contrib/windows/installer/tools/KillBackupProcess.bat
@@ -0,0 +1,3 @@
+control.exe terminate
+echo off
+ping 192.168.254.254 -n 5 -w 1000 > nul
diff --git a/contrib/windows/installer/tools/QueryOutputAll.bat b/contrib/windows/installer/tools/QueryOutputAll.bat
new file mode 100755
index 00000000..2ab30a72
--- /dev/null
+++ b/contrib/windows/installer/tools/QueryOutputAll.bat
@@ -0,0 +1,5 @@
+@ECHO OFF
+: o=old, d=deleted, s=size info, t=timestamp, r=recursive
+set Queryopts=-odstr
+::set Queryopts=-str
+query.exe "list %Queryopts%" quit > QueryOutputAllResults.txt
diff --git a/contrib/windows/installer/tools/QueryOutputCurrent.bat b/contrib/windows/installer/tools/QueryOutputCurrent.bat
new file mode 100755
index 00000000..d59ddbf1
--- /dev/null
+++ b/contrib/windows/installer/tools/QueryOutputCurrent.bat
@@ -0,0 +1,5 @@
+@ECHO OFF
+: o=old, d=deleted, s=size info, t=timestamp, r=recursive
+::set Queryopts=-odstr
+set Queryopts=-str
+query.exe "list %Queryopts%" quit > QueryOutputCurrentResults.txt
diff --git a/contrib/windows/installer/tools/ReloadConfig.bat b/contrib/windows/installer/tools/ReloadConfig.bat
new file mode 100755
index 00000000..5fd44e83
--- /dev/null
+++ b/contrib/windows/installer/tools/ReloadConfig.bat
@@ -0,0 +1,3 @@
+control.exe reload
+echo off
+ping 192.168.254.254 -n 8 -w 1000 > nul
diff --git a/contrib/windows/installer/tools/RemoteControl.exe b/contrib/windows/installer/tools/RemoteControl.exe
new file mode 100755
index 00000000..f7667421
--- /dev/null
+++ b/contrib/windows/installer/tools/RemoteControl.exe
Binary files differ
diff --git a/contrib/windows/installer/tools/RemoveService.bat b/contrib/windows/installer/tools/RemoveService.bat
new file mode 100755
index 00000000..881ec5b1
--- /dev/null
+++ b/contrib/windows/installer/tools/RemoveService.bat
@@ -0,0 +1,3 @@
+@@SERVICEEXENAME@ -r -S GigaLock
+echo off
+ping 192.168.254.254 -n 5 -w 1000 > nul
diff --git a/contrib/windows/installer/tools/RestartService.bat b/contrib/windows/installer/tools/RestartService.bat
new file mode 100755
index 00000000..77092a69
--- /dev/null
+++ b/contrib/windows/installer/tools/RestartService.bat
@@ -0,0 +1,5 @@
+net stop GigaLock
+ping 192.168.254.254 -n 2 -w 1000 > nul
+net start GigaLock
+echo off
+ping 192.168.254.254 -n 5 -w 1000 > nul
diff --git a/contrib/windows/installer/tools/ShowUsage.bat b/contrib/windows/installer/tools/ShowUsage.bat
new file mode 100755
index 00000000..e6f69e9f
--- /dev/null
+++ b/contrib/windows/installer/tools/ShowUsage.bat
@@ -0,0 +1,3 @@
+query.exe usage quit
+ping 192.168.254.254 -n 10 -w 1000 > nul
+
diff --git a/contrib/windows/installer/tools/StartService.bat b/contrib/windows/installer/tools/StartService.bat
new file mode 100755
index 00000000..1771238f
--- /dev/null
+++ b/contrib/windows/installer/tools/StartService.bat
@@ -0,0 +1,3 @@
+net start GigaLock
+echo off
+ping 192.168.254.254 -n 5 -w 1000 > nul
diff --git a/contrib/windows/installer/tools/StopService.bat b/contrib/windows/installer/tools/StopService.bat
new file mode 100755
index 00000000..8e70d68d
--- /dev/null
+++ b/contrib/windows/installer/tools/StopService.bat
@@ -0,0 +1,3 @@
+net stop GigaLock
+echo off
+ping 192.168.254.254 -n 5 -w 1000 > nul
diff --git a/contrib/windows/installer/tools/Sync.bat b/contrib/windows/installer/tools/Sync.bat
new file mode 100755
index 00000000..30a04bec
--- /dev/null
+++ b/contrib/windows/installer/tools/Sync.bat
@@ -0,0 +1,3 @@
+control.exe sync
+echo off
+ping 192.168.254.254 -n 5 -w 1000 > nul