You can subscribe to this list here.
| 2003 |
Jan
|
Feb
(160) |
Mar
(119) |
Apr
(111) |
May
(118) |
Jun
(101) |
Jul
(304) |
Aug
(113) |
Sep
(140) |
Oct
(137) |
Nov
(87) |
Dec
(122) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(78) |
Feb
(125) |
Mar
(131) |
Apr
(59) |
May
(121) |
Jun
(166) |
Jul
(150) |
Aug
(137) |
Sep
(73) |
Oct
(58) |
Nov
(27) |
Dec
(60) |
| 2005 |
Jan
(131) |
Feb
(84) |
Mar
(36) |
Apr
(8) |
May
(28) |
Jun
(20) |
Jul
(10) |
Aug
(72) |
Sep
(76) |
Oct
(34) |
Nov
(3) |
Dec
(29) |
| 2006 |
Jan
(13) |
Feb
(92) |
Mar
(7) |
Apr
(1) |
May
(1) |
Jun
(2) |
Jul
(4) |
Aug
(17) |
Sep
(5) |
Oct
(2) |
Nov
(8) |
Dec
(12) |
| 2007 |
Jan
(28) |
Feb
(15) |
Mar
|
Apr
|
May
(8) |
Jun
(4) |
Jul
(5) |
Aug
(8) |
Sep
(20) |
Oct
(38) |
Nov
(65) |
Dec
(92) |
| 2008 |
Jan
(21) |
Feb
(56) |
Mar
(27) |
Apr
(174) |
May
(25) |
Jun
|
Jul
|
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
|
From: <jgr...@us...> - 2003-02-27 00:40:19
|
Update of /cvsroot/popfile/engine/Classifier
In directory sc8-pr-cvs1:/tmp/cvs-serv24532/Classifier
Modified Files:
Bayes.pm
Log Message:
Walk through and make sure that everytime we use a variable inside a regular expression we surround it with \Q and \E to prevent special characters inside the variable
Index: Bayes.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Classifier/Bayes.pm,v
retrieving revision 1.103
retrieving revision 1.104
diff -C2 -d -r1.103 -r1.104
*** Bayes.pm 24 Feb 2003 23:40:19 -0000 1.103
--- Bayes.pm 27 Feb 2003 00:40:12 -0000 1.104
***************
*** 290,299 ****
if ( $word ne '' ) {
! $word =~ /^(.)/;
! my $i = ord($1);
! $self->{matrix}{$bucket}[$i] = '' if ( !defined($self->{matrix}{$bucket}[$i]) );
! $self->{matrix}{$bucket}[$i] .= "|$word $value|" if ( ( $self->{matrix}{$bucket}[$i] =~ s/\|\Q$word\E (L?[\-\.\d]+)\|/\|$word $value\|/ ) == 0 );
! }
}
--- 290,299 ----
if ( $word ne '' ) {
! $word =~ /^(.)/;
! my $i = ord($1);
! $self->{matrix}{$bucket}[$i] = '' if ( !defined($self->{matrix}{$bucket}[$i]) );
! $self->{matrix}{$bucket}[$i] .= "|$word $value|" if ( ( $self->{matrix}{$bucket}[$i] =~ s/\|\Q$word\E (L?[\-\.\d]+)\|/\|$word $value\|/ ) == 0 );
! }
}
***************
*** 373,381 ****
update_constants($self);
! # unclassified will always have the color black, note that unclassified is not
! # actually a bucket
!
! $self->{colors}{unclassified} = 'black';
!
print "Corpus loaded with $self->{full_total} entries\n" if $self->{debug};
}
--- 373,381 ----
update_constants($self);
! # unclassified will always have the color black, note that unclassified is not
! # actually a bucket
!
! $self->{colors}{unclassified} = 'black';
!
print "Corpus loaded with $self->{full_total} entries\n" if $self->{debug};
}
***************
*** 429,448 ****
if ( /^([^ ]+) (.+)$/ ) {
! my $type = $1;
! my $value = $2;
! $value =~ s/\\(\?|\*|\||\(|\)|\[|\]|\{|\}|\^|\$|\.)/$1/g;
$self->{magnets}{$bucket}{$type}{$value} = 1;
} else {
! # This branch is used to catch the original magnets in an
! # old version of POPFile that were just there for from
! # addresses only
! if ( /^(.+)$/ ) {
! my $value = $1;
! $value =~ s/\\(\?|\*|\||\(|\)|\[|\]|\{|\}|\^|\$|\.)/$1/g;
! $self->{magnets}{$bucket}{from}{$1} = 1;
! }
}
}
--- 429,448 ----
if ( /^([^ ]+) (.+)$/ ) {
! my $type = $1;
! my $value = $2;
! $value =~ s/\\(\?|\*|\||\(|\)|\[|\]|\{|\}|\^|\$|\.)/$1/g;
$self->{magnets}{$bucket}{$type}{$value} = 1;
} else {
! # This branch is used to catch the original magnets in an
! # old version of POPFile that were just there for from
! # addresses only
! if ( /^(.+)$/ ) {
! my $value = $1;
! $value =~ s/\\(\?|\*|\||\(|\)|\[|\]|\{|\}|\^|\$|\.)/$1/g;
! $self->{magnets}{$bucket}{from}{$1} = 1;
! }
}
}
***************
*** 538,544 ****
for my $type (sort keys %{$self->{magnets}{$bucket}}) {
! # You cannot use @ or $ inside a \Q\E regular expression and hence
! # we have to change the $magnet and the text we are comparing against
! # by changing the $ and @ signs to .
my $noattype;
--- 538,544 ----
for my $type (sort keys %{$self->{magnets}{$bucket}}) {
! # You cannot use @ or $ inside a \Q\E regular expression and hence
! # we have to change the $magnet and the text we are comparing against
! # by changing the $ and @ signs to .
my $noattype;
***************
*** 547,551 ****
$noattype =~ s/[@\$]/\./g;
! for my $magnet (sort keys %{$self->{magnets}{$bucket}{$type}}) {
my $regex;
--- 547,551 ----
$noattype =~ s/[@\$]/\./g;
! for my $magnet (sort keys %{$self->{magnets}{$bucket}{$type}}) {
my $regex;
***************
*** 699,703 ****
if ( ( $total != 0 ) && ( $score{$ranking[0]} > log($self->{unclassified} * $total) ) ) {
! $class = $ranking[0];
}
--- 699,703 ----
if ( ( $total != 0 ) && ( $score{$ranking[0]} > log($self->{unclassified} * $total) ) ) {
! $class = $ranking[0];
}
***************
*** 761,775 ****
while ( <$mail> ) {
my $line;
! my $fileline;
$line = $_;
! # This is done so that we remove the network style end of line CR LF
! # and allow Perl to decide on the local system EOL which it will expand
! # out of \n when this gets written to the temp file
!
! $fileline = $line;
! $fileline =~ s/[\r\n]//g;
! $fileline .= "\n";
# Check for an abort
--- 761,775 ----
while ( <$mail> ) {
my $line;
! my $fileline;
$line = $_;
! # This is done so that we remove the network style end of line CR LF
! # and allow Perl to decide on the local system EOL which it will expand
! # out of \n when this gets written to the temp file
!
! $fileline = $line;
! $fileline =~ s/[\r\n]//g;
! $fileline .= "\n";
# Check for an abort
***************
*** 835,839 ****
if ( $self->{configuration}->{configuration}{subject} ) {
# Don't add the classification unless it is not present
! if ( !( $msg_subject =~ /\[$classification\]/ ) &&
( $self->{parameters}{$classification}{subject} == 1 ) &&
( $self->{parameters}{$classification}{quarantine} == 0 ) ) {
--- 835,839 ----
if ( $self->{configuration}->{configuration}{subject} ) {
# Don't add the classification unless it is not present
! if ( !( $msg_subject =~ /\[\Q$classification\E\]/ ) &&
( $self->{parameters}{$classification}{subject} == 1 ) &&
( $self->{parameters}{$classification}{quarantine} == 0 ) ) {
***************
*** 852,856 ****
# Add the XTC header
$msg_head_after .= "X-Text-Classification: $classification$eol" if ( ( $self->{configuration}->{configuration}{xtc} ) &&
! ( $self->{parameters}{$classification}{quarantine} == 0 ) );
# Add the XPL header
--- 852,856 ----
# Add the XTC header
$msg_head_after .= "X-Text-Classification: $classification$eol" if ( ( $self->{configuration}->{configuration}{xtc} ) &&
! ( $self->{parameters}{$classification}{quarantine} == 0 ) );
# Add the XPL header
***************
*** 881,891 ****
print $client "To: $self->{parser}->{to}$eol";
print $client "Date: $self->{parser}->{date}$eol";
! if ( $self->{configuration}->{configuration}{subject} ) {
! # Don't add the classification unless it is not present
! if ( !( $msg_subject =~ /\[$classification\]/ ) &&
! ( $self->{parameters}{$classification}{subject} == 1 ) ) {
! $msg_subject = " [$classification]$msg_subject";
! }
! }
print $client "Subject:$msg_subject$eol";
print $client "X-Text-Classification: $classification$eol" if ( $self->{configuration}->{configuration}{xtc} );
--- 881,891 ----
print $client "To: $self->{parser}->{to}$eol";
print $client "Date: $self->{parser}->{date}$eol";
! if ( $self->{configuration}->{configuration}{subject} ) {
! # Don't add the classification unless it is not present
! if ( !( $msg_subject =~ /\[\Q$classification\E\]/ ) &&
! ( $self->{parameters}{$classification}{subject} == 1 ) ) {
! $msg_subject = " [$classification]$msg_subject";
! }
! }
print $client "Subject:$msg_subject$eol";
print $client "X-Text-Classification: $classification$eol" if ( $self->{configuration}->{configuration}{xtc} );
|
|
From: <jgr...@us...> - 2003-02-27 00:20:15
|
Update of /cvsroot/popfile/windows
In directory sc8-pr-cvs1:/tmp/cvs-serv18469
Modified Files:
installer.nsi
Log Message:
Make the uninstaller ask you to confirm that you want to uninstall before starting; include the change notes in the installer
Index: installer.nsi
===================================================================
RCS file: /cvsroot/popfile/windows/installer.nsi,v
retrieving revision 1.31
retrieving revision 1.32
diff -C2 -d -r1.31 -r1.32
*** installer.nsi 27 Feb 2003 00:05:17 -0000 1.31
--- installer.nsi 27 Feb 2003 00:20:05 -0000 1.32
***************
*** 16,19 ****
--- 16,20 ----
!define MUI_UNINSTALLER
+ !define MUI_UNCONFIRMPAGE
!define MUI_CUSTOMPAGECOMMANDS
***************
*** 140,143 ****
--- 141,145 ----
SetOutPath $INSTDIR
+ File "..\engine\v0.18.1.change"
File "..\engine\*.pl"
File "..\engine\pix.gif"
***************
*** 509,512 ****
--- 511,515 ----
Delete $INSTDIR\*.exe
Delete $INSTDIR\*.dll
+ Delete $INSTDIR\*.change
Delete $INSTDIR\popfile.cfg
|
|
From: <jgr...@us...> - 2003-02-27 00:05:22
|
Update of /cvsroot/popfile/windows
In directory sc8-pr-cvs1:/tmp/cvs-serv13286
Modified Files:
installer.nsi ioB.ini
Log Message:
Remove references to Microsoft Outlook since we only currently support Outlook Express configuration modification:
Index: installer.nsi
===================================================================
RCS file: /cvsroot/popfile/windows/installer.nsi,v
retrieving revision 1.30
retrieving revision 1.31
diff -C2 -d -r1.30 -r1.31
*** installer.nsi 26 Feb 2003 20:54:10 -0000 1.30
--- installer.nsi 27 Feb 2003 00:05:17 -0000 1.31
***************
*** 52,56 ****
Page custom SetOptionsPage ": Options"
!insertmacro MUI_PAGECOMMAND_INSTFILES
! Page custom SetOutlookOrOutlookExpressPage ": Configure Outlook or Outlook Express"
!insertmacro MUI_PAGECOMMAND_FINISH
--- 52,56 ----
Page custom SetOptionsPage ": Options"
!insertmacro MUI_PAGECOMMAND_INSTFILES
! Page custom SetOutlookOrOutlookExpressPage ": Configure Outlook Express"
!insertmacro MUI_PAGECOMMAND_FINISH
***************
*** 327,331 ****
FunctionEnd
! ; This function is used to reconfigure Outlook or Outlook Express accounts
Function SetOutlookOrOutlookExpressPage
--- 327,331 ----
FunctionEnd
! ; This function is used to reconfigure Outlook Express accounts
Function SetOutlookOrOutlookExpressPage
***************
*** 396,400 ****
StrCmp $R6 "127.0.0.1" next_acct_increment
! !insertmacro MUI_HEADER_TEXT "Reconfigure Outlook or Outlook Express" "POPFile can reconfigure Outlook or Outlook Express for you"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 2" "State" "0"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 8" "Text" $R6
--- 396,400 ----
StrCmp $R6 "127.0.0.1" next_acct_increment
! !insertmacro MUI_HEADER_TEXT "Reconfigure Outlook Express" "POPFile can reconfigure Outlook Express for you"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 2" "State" "0"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 8" "Text" $R6
Index: ioB.ini
===================================================================
RCS file: /cvsroot/popfile/windows/ioB.ini,v
retrieving revision 1.3
retrieving revision 1.4
diff -C2 -d -r1.3 -r1.4
*** ioB.ini 26 Feb 2003 04:08:41 -0000 1.3
--- ioB.ini 27 Feb 2003 00:05:18 -0000 1.4
***************
*** 5,9 ****
[Field 1]
Type=label
! Text=POPFile has detected the following Outlook or Outlook Express email account and can automatically configure it to work with POPFile
Left=0
Right=-1
--- 5,9 ----
[Field 1]
Type=label
! Text=POPFile has detected the following Outlook Express email account and can automatically configure it to work with POPFile
Left=0
Right=-1
|
|
From: <jgr...@us...> - 2003-02-27 00:01:00
|
Update of /cvsroot/popfile/engine/UI
In directory sc8-pr-cvs1:/tmp/cvs-serv11450/UI
Modified Files:
HTML.pm
Log Message:
Fix a bug where remove_mail_files was passing in the name of cls files to history_delete_file which would cause a warning about an uninitialized variable
Index: HTML.pm
===================================================================
RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v
retrieving revision 1.92
retrieving revision 1.93
diff -C2 -d -r1.92 -r1.93
*** HTML.pm 25 Feb 2003 06:56:45 -0000 1.92
--- HTML.pm 27 Feb 2003 00:00:50 -0000 1.93
***************
*** 65,76 ****
# The subkeys are
#
! # cull Used internally by load_history_cache (see there for details)
# from The address the email was from
! # short_from Version of from with max 40 characters
! # subject The subject of the email
! # short_subject Version of subject with max 40 characters
! # magnet If a magnet was used to classify the mail contains the magnet string
! # bucket The classification of the mail
! # reclassified 1 if the mail has already been reclassified
#
# The history_keys array stores the list of keys in the history hash and are a
--- 65,76 ----
# The subkeys are
#
! # cull Used internally by load_history_cache (see there for details)
# from The address the email was from
! # short_from Version of from with max 40 characters
! # subject The subject of the email
! # short_subject Version of subject with max 40 characters
! # magnet If a magnet was used to classify the mail contains the magnet string
! # bucket The classification of the mail
! # reclassified 1 if the mail has already been reclassified
#
# The history_keys array stores the list of keys in the history hash and are a
***************
*** 2776,2780 ****
( defined( $self->{form}{clearall} ) ) ||
( defined( $self->{form}{clearpage} ) ) );
-
my $body = '';
--- 2776,2779 ----
***************
*** 3370,3374 ****
if ( $self->{today} > $yesterday ) {
! my @mail_files = glob "$self->{configuration}->{configuration}{msgdir}popfile*=*.???";
foreach my $mail_file (@mail_files) {
--- 3369,3373 ----
if ( $self->{today} > $yesterday ) {
! my @mail_files = glob "$self->{configuration}->{configuration}{msgdir}popfile*=*.msg";
foreach my $mail_file (@mail_files) {
***************
*** 3416,3420 ****
my ( $self, $mail_file, $archive ) = @_;
! $mail_file =~ /(popfile.+\=.+\.msg)$/;
$mail_file = $1;
--- 3415,3419 ----
my ( $self, $mail_file, $archive ) = @_;
! $mail_file =~ /(popfile.+\=.+\.msg)/;
$mail_file = $1;
|
|
From: <jgr...@us...> - 2003-02-26 20:54:17
|
Update of /cvsroot/popfile/windows
In directory sc8-pr-cvs1:/tmp/cvs-serv18418
Modified Files:
installer.nsi
Log Message:
Update to the installer to make it show the Identity name for Outlook Express to make it easier to identify which account is being reconfigured; updated the version number to RC2
Index: installer.nsi
===================================================================
RCS file: /cvsroot/popfile/windows/installer.nsi,v
retrieving revision 1.29
retrieving revision 1.30
diff -C2 -d -r1.29 -r1.30
*** installer.nsi 26 Feb 2003 19:48:41 -0000 1.29
--- installer.nsi 26 Feb 2003 20:54:10 -0000 1.30
***************
*** 4,8 ****
; Modified to work with NSIS v2.0b1
!define MUI_PRODUCT "POPFile"
! !define MUI_VERSION "0.18.1 RC1"
!include "MUI.nsh"
;--------------------------------
--- 4,8 ----
; Modified to work with NSIS v2.0b1
!define MUI_PRODUCT "POPFile"
! !define MUI_VERSION "0.18.1 RC2"
!include "MUI.nsh"
;--------------------------------
***************
*** 331,350 ****
Function SetOutlookOrOutlookExpressPage
! ; In Outlook Express (v5.0 or later) the email account data may appear in
! ; more than one place, depending upon how Outlook Express has been configured.
! ; First we check the "Main Identity" (also known as the "Default Identity")
! ; which is created when Outlook Express is installed. Note that this identity
! ; may no longer be active, as users are free to delete it after creating
! ; an additional identity and switching to the new one.
! ; The Outlook Express "Main Identity" does not use an "identity number"
! StrCpy ${OEIDENT} ""
! Call CheckOutlookExpressAccounts
! ; Now we have to check if any additional identities have been created in
! ; Outlook Express. These identities are kept in HKEY_CURRENT_USER\Identities.
! ; If we find any extra identities, we need to see if any of them have email
! ; accounts we can reconfigure for use with POPFile.
StrCpy ${OEID} 0
--- 331,360 ----
Function SetOutlookOrOutlookExpressPage
! ; More than one "identity" can be created in OE. Each of these identities is
! ; given a GUID and these GUIDs are stored in HKEY_CURRENT_USER\Identities.
! ; Each identity can have several email accounts and the details for these
! ; accounts are grouped according to the GUID which "owns" the accounts.
! ; When OE is first installed it creates a default identity which is given the
! ; name "Main Identity". Although there is a GUID for this default identity,
! ; OE stores the email account data for this account in a different location
! ; from that of any extra identities which are created by the user.
! ; We step through every identity defined in HKEY_CURRENT_USER\Identities and
! ; for each one found check its OE email account data. If an identity with
! ; an "Identity Ordinal" value of 1 is found, we need to look in the area
! ; dedicated to the initial "Main Identity", otherwise we look for email
! ; account data in that GUID's entry in HKEY_CURRENT_USER\Identities.
! ; The email account data for all identities, although stored in different
! ; locations, uses the same structure. The "path" for each identity starts
! ; with "HKEY_CURRENT_USER\" and ends with "\Internet Account Manager\Accounts".
!
! ; All of the OE account data for an identity appears "under" the path defined
! ; above, e.g. if an identity has more than three accounts they are found here:
! ; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000001
! ; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000002
! ; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000003
! ; etc
StrCpy ${OEID} 0
***************
*** 356,388 ****
StrCmp ${ID} "" finished_oe
! ; Now check all of the accounts for this particular identity
! StrCpy ${OEIDENT} "Identities\${ID}\"
! Call CheckOutlookExpressAccounts
!
! ; Now move on to the next identity
! IntOp ${OEID} ${OEID} + 1
! goto next_id
!
! finished_oe:
! FunctionEnd
!
! ; This function checks all the accounts for a particular Outlook Express identity
!
! Function CheckOutlookExpressAccounts
!
! ; Called by SetOutLookExpressPage to check all of the accounts for a given
! ; Outlook Express identity: either the "Main Identity", when ${OEIDENT} is
! ; a null string (""), or one of the "Additional Identities", when ${OEIDENT}
! ; is a string such as "Identities\{AB734464-478F-11D7-81C3-00409545B64C}\"
! ; The email account data for all identities, although stored in different
! ; locations, uses the same structure. The "path" for each identity starts
! ; with "HKEY_CURRENT_USER\" and ends with "\Internet Account Manager\Accounts".
! ; OE account data for each identity appears "under" the path defined above, e.g.
! ; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000001
! ; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000002
! ; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000003
! ; etc
StrCpy $R1 0
--- 366,382 ----
StrCmp ${ID} "" finished_oe
! ; Check if this is the GUID for the first "Main Identity" created by OE as the
! ; account data for this identity is stored separately from the other identities.
! ReadRegDWORD $R4 HKCU "Identities\${ID}" "Identity Ordinal"
! StrCmp $R4 "1" firstID otherID
! firstID:
! StrCpy ${OEIDENT} ""
! goto checkID
! otherID:
! StrCpy ${OEIDENT} "Identities\${ID}\"
! checkID:
! ; Now check all of the accounts for this particular identity
StrCpy $R1 0
***************
*** 405,408 ****
--- 399,409 ----
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 2" "State" "0"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 8" "Text" $R6
+
+ ; Find the Username used by OE for this identity and the OE Account Name
+ ; (so we can unambiguously report which email account we are offering
+ ; to reconfigure).
+
+ ReadRegStr $R7 HKCU "Identities\${ID}\" "Username"
+ StrCpy $R7 $\"$R7$\"
ReadRegStr $R6 HKCU $R5 "SMTP Email Address"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 7" "Text" $R6
***************
*** 410,414 ****
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 9" "Text" $R6
ReadRegStr $R6 HKCU $R5 "Account Name"
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 10" "Text" $R6
Push $R0
InstallOptions::dialog $PLUGINSDIR\ioB.ini
--- 411,416 ----
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 9" "Text" $R6
ReadRegStr $R6 HKCU $R5 "Account Name"
! StrCpy $R6 $\"$R6$\"
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 10" "Text" "$R6 account for the $R7 identity"
Push $R0
InstallOptions::dialog $PLUGINSDIR\ioB.ini
***************
*** 452,455 ****
--- 454,463 ----
finished_this_id:
+ ; Now move on to the next identity
+ IntOp ${OEID} ${OEID} + 1
+ goto next_id
+
+ finished_oe:
+
FunctionEnd
|
|
From: <jgr...@us...> - 2003-02-26 19:48:48
|
Update of /cvsroot/popfile/windows
In directory sc8-pr-cvs1:/tmp/cvs-serv4318
Modified Files:
installer.nsi
Log Message:
Update installer to include and remove the GIF files associated with the Lavish and Sleet skins
Index: installer.nsi
===================================================================
RCS file: /cvsroot/popfile/windows/installer.nsi,v
retrieving revision 1.28
retrieving revision 1.29
diff -C2 -d -r1.28 -r1.29
*** installer.nsi 26 Feb 2003 04:08:41 -0000 1.28
--- installer.nsi 26 Feb 2003 19:48:41 -0000 1.29
***************
*** 285,288 ****
--- 285,292 ----
File "..\engine\skins\*.css"
File "..\engine\skins\*.gif"
+ SetOutPath $INSTDIR\skins\lavishImages
+ File "..\engine\skins\lavishImages\*.gif"
+ SetOutPath $INSTDIR\skins\sleetImages
+ File "..\engine\skins\sleetImages\*.gif"
SectionEnd
***************
*** 538,541 ****
--- 542,549 ----
Delete $INSTDIR\skins\*.css
Delete $INSTDIR\skins\*.gif
+ Delete $INSTDIR\skins\lavishImages\*.gif
+ Delete $INSTDIR\skins\sleetImages\*.gif
+ RMDir $INSTDIR\skins\sleetImages
+ RMDir $INSTDIR\skins\lavishImages
RMDir $INSTDIR\skins
Delete $INSTDIR\manual\en\*.html
|
|
From: <jgr...@us...> - 2003-02-26 19:45:57
|
Update of /cvsroot/popfile/engine/skins
In directory sc8-pr-cvs1:/tmp/cvs-serv2441
Added Files:
smalldefault.css tinydefault.css
Log Message:
Couple of additional small/tiny skins based on default
--- NEW FILE: smalldefault.css ---
H2 {
font-size: 14pt;
font-weight: normal;
}
body {
background-color: white;
border: none;
font-family: tahoma, sans-serif;
font-size: 8pt;
font-weight: normal;
color: #000000;
margin: 3px;
}
table.head {
font-weight: normal;
width: 100%;
}
.top, .bottom, .borderTopLeft, .borderTop, .borderTopRight, .borderLeft, .borderRight, .borderBottomLeft, .borderBottom, .borderBottomRight {
visibility: hidden;
display: none;
}
.head, td.head {
font-weight: bold;
font-size: 14pt;
background-color: #ededca;
color: #666666;
padding-left: 5px;
}
.shell, .shellTop {
border: 2px #cccc99 solid;
background-color: #ededca;
color: #000000;
margin: 0px;
padding: 0px;
}
.head a {
font-size: 12pt;
font-weight: normal;
}
.menu {
font-size: 12pt;
font-weight: normal;
width: 100%;
}
.menuIndent {
width: 5%;
}
.menuSelected, .menuSelected a {
background-color: #cccc99;
color: #000000;
font-size: 14pt;
font-weight: normal;
text-decoration: none;
}
td.menuSelected {
border-left: 2px solid #cccc99;
border-right: 2px solid #cccc99;
border-top: 2px solid #cccc99;
padding-left: 2px;
padding-right: 2px;
margin-left: 2px;
margin-right: 2px;
width: 15%;
}
.menuStandard, .menuStandard a {
background-color: #ededca;
color: #0000ff;
font-size: 14pt;
font-weight: normal;
text-decoration: none;
}
td.menuStandard {
border-left: 2px solid #cccc99;
border-right: 2px solid #cccc99;
border-top: 2px solid #cccc99;
padding-left: 2px;
padding-right: 2px;
margin-left: 2px;
margin-right: 2px;
width: 15%;
}
.menuStandard a:hover {
text-decoration: underline;
}
.rowEven {
background-color: #ededca;
color: #000000;
}
.rowOdd {
background-color: #cccc99;
color: #000000;
}
.rowEven a, .rowOdd a {
text-decoration: none;
}
.rowEven a:hover, .rowOdd a:hover {
color: #000000;
background-color: #ffffcc;
}
tr.rowHighlighted {
background-color: #cccc99;
color: #eeeeee;
}
table.settingsTable {
border: 1px solid #cccc99;
padding: 3px;
margin: 0px;
}
table.openMessageTable, table.lookupResultsTable {
border: 2px solid Black;
padding: 2px;
margin: 0px;
}
td.settingsPanel {
border: 1px solid #cccc99;
padding: 3px;
margin: 0px;
}
td.naked {
padding: 0px;
margin: 0px;
border: none
}
td.accuracy0to49 {
background-color: red;
color: black;
height: 20px;
}
td.accuracy50to93 {
background-color: yellow;
color: black;
height: 20px;
}
td.accuracy94to100 {
background-color: green;
color: black;
height: 20px;
}
div.error01 {
background-color: transparent;
color: red;
font-size: larger;
}
div.error02 {
background-color: transparent;
color: red;
}
td.historyNavigatorTop {
text-align: right;
padding-right: 5px;
}
.historyNavigatorTop a:hover, .historyNavigatorBottom a:hover {
background-color: #eeeeee;
color: #000000;
}
td.openMessageCloser {
text-align: right;
background-color: #eeeeee;
color: #000000;
}
.historyLabel {
font-weight: normal;
font-size: 9pt;
text-decoration: none;
padding-left: 1px;
padding-right: 2px;
}
.historyLabel em {
font-weight: bold;
font-style: normal;
}
a.historyLabel:hover {
text-decoration: underline;
}
.bucketsLabel {
font-weight: bold;
}
.magnetsLabel {
font-weight: bold;
}
.securityLabel {
font-weight: bold;
}
.configurationLabel {
font-weight: normal;
}
.advancedLabel {
font-weight: bold;
}
.passwordLabel {
font-weight: bold;
}
.sessionLabel {
font-weight: bold;
}
table.historyWidgetsTop {
width: 100%;
border-top: 2px solid #cccc99;
border-bottom: 2px solid #cccc99;
}
table.historyWidgetsTop td {
padding-left: 20px;
font-weight: bold;
}
table.historyWidgetsBottom {
width: 100%;
border-bottom: 2px solid #cccc99;
}
table.historyWidgetsBottom td {
padding-left: 20px;
font-weight: bold;
}
table.footer {
width: 100%;
background-color: #ededca;
color: #666666;
border-left: 2px solid #cccc99;
border-right: 2px solid #cccc99;
border-bottom: 2px solid #cccc99;
}
td.footerBody {
text-align: center;
padding-left: 5%;
padding-right: 5%;
font-size: 8pt;
font-weight: bold;
}
.bottomLink {
text-decoration: none;
}
.bottomLink:hover {
background-color: #ffffcc;
color: #000000;
}
input, .submit, select {
font-family: tahoma, sans-serif;
font-size: 8pt;
font-weight: normal;
padding: 0px;
margin: 0px;
}
tt {
font-family: "lucida console", courier, sans-serif;
font-size: 9pt;
font-weight: normal;
}
span.bucketsWidgetState {
font-weight: bold;
}
span.configWidgetState {
font-weight: bold;
}
span.securityWidgetState {
font-weight: bold;
}
--- NEW FILE: tinydefault.css ---
H2 {
font-size: 12pt;
font-weight: normal;}
body {
background-color: white;
border: none;
font-family: tahoma, sans-serif;
font-size: 8pt;
font-weight: normal;
color: #000000;
margin: 0px;}
table.head {
font-weight: normal;
width: 100%;
background-color: #ededca;
color: #666666;}
.top, .bottom, .borderTopLeft, .borderTop, .borderTopRight, .borderLeft, .borderRight, .borderBottomLeft, .borderBottom, .borderBottomRight {
visibility: hidden;
display: none;}
.head, td.head {
font-weight: bold;
font-size: 12pt;
background-color: #ededca;
color: #666666;
padding-left: 5px;}
.shell, .shellTop {
border: 1px #cccc99 solid;
background-color: #ededca;
color: #000000;
margin: 0px;
padding: 0px;}
.head a {
font-size: 10pt;
font-weight: normal;}
.menu {
font-size: 10pt;
font-weight: normal;
width: 100%;}
.menuIndent {
width: 5%;}
.menuSelected, .menuSelected a {
background-color: #cccc99;
color: #000000;
font-size: 10pt;
font-weight: bold;
text-decoration: none;}
td.menuSelected {
border-left: 1px solid #cccc99;
border-right: 1px solid #cccc99;
border-top: 1px solid #cccc99;
padding-left: 1px;
padding-right: 1px;
margin-left: 1px;
margin-right: 1px;
width: 15%;}
.menuStandard, .menuStandard a {
background-color: #ededca;
color: #0000ff;
font-size: 10pt;
font-weight: bold;
text-decoration: none;}
td.menuStandard {
border-left: 1px solid #cccc99;
border-right: 1px solid #cccc99;
border-top: 1px solid #cccc99;
padding-left: 1px;
padding-right: 1px;
margin-left: 1px;
margin-right: 1px;
width: 15%;}
.menuStandard a:hover {
text-decoration: underline;}
.rowEven {
background-color: #ededca;
color: #000000;}
.rowOdd {
background-color: #cccc99;
color: #000000;}
.rowEven a, .rowOdd a {
text-decoration: none;}
.rowEven a:hover, .rowOdd a:hover {
color: #000000;
background-color: #ffffcc;}
tr.rowHighlighted {
background-color: #cccc99;
color: #eeeeee;}
table.settingsTable {
border: 1px solid #cccc99;
padding: 2px;
margin: 0px;}
table.openMessageTable, table.lookupResultsTable {
border: 1px solid Black;
padding: 2px;
margin: 0px;}
td.settingsPanel {
border: 1px solid #cccc99;
padding: 2px;
margin: 0px;}
td.naked {
padding: 0px;
margin: 0px;
border: none}
td.accuracy0to49 {
background-color: red;
color: black;
height: 20px;}
td.accuracy50to93 {
background-color: yellow;
color: black;
height: 20px;}
td.accuracy94to100 {
background-color: green;
color: black;
height: 20px;}
div.error01 {
background-color: transparent;
color: red;
font-size: larger;}
div.error02 {
background-color: transparent;
color: red;}
td.historyNavigatorTop {
text-align: right;
padding-right: 2px;}
.historyNavigatorTop a:hover, .historyNavigatorBottom a:hover {
background-color: #eeeeee;
color: #000000;}
td.openMessageCloser {
text-align: right;
background-color: #eeeeee;
color: #000000;}
.historyLabel {
font-size: 9pt;
font-weight: normal;
text-decoration: none;
padding-left: 1px;
padding-right: 1px;}
.historyLabel em {
font-weight: bold;
font-style: normal;}
a.historyLabel:hover {
text-decoration: underline;}
.bucketsLabel {
font-weight: bold;}
.magnetsLabel {
font-weight: bold;}
.securityLabel {
font-weight: bold;}
.configurationLabel {
font-weight: normal;}
.advancedLabel {
font-weight: bold;}
.passwordLabel {
font-weight: bold;}
.sessionLabel {
font-weight: bold;}
table.historyWidgetsTop {
width: 100%;
border-top: 1px solid #cccc99;
border-bottom: 1px solid #cccc99;}
table.historyWidgetsTop td {
padding-left: 20px;
font-weight: bold;}
table.historyWidgetsBottom {
width: 100%;
border-bottom: 2px solid #cccc99;}
table.historyWidgetsBottom td {
padding-left: 20px;
font-weight: bold;}
table.footer {
width: 100%;
background-color: #ededca;
color: #666666;
border-left: 1px solid #cccc99;
border-right: 1px solid #cccc99;
border-bottom: 1px solid #cccc99;}
td.footerBody {
text-align: center;
padding-left: 5%;
padding-right: 5%;
font-size: 8pt;
font-weight: bold;}
.bottomLink {
text-decoration: none;}
.bottomLink:hover {
background-color: #ffffcc;
color: #000000;}
input, .submit, select {
font-family: tahoma, sans-serif;
font-size: 8pt;
font-weight: normal;
padding: 0px;
margin: 0px;}
tt {
font-family: "lucida console", courier, sans-serif;
font-size: 9pt;
font-weight: normal;
}
span.bucketsWidgetState {
font-weight: bold;
}
span.configWidgetState {
font-weight: bold;
}
span.securityWidgetState {
font-weight: bold;
}
|
|
From: <jgr...@us...> - 2003-02-26 17:39:39
|
Update of /cvsroot/popfile/engine/manual/en In directory sc8-pr-cvs1:/tmp/cvs-serv20350/en Modified Files: email.html Log Message: There were two remaining references to screen shots on the web site when they should have been local Index: email.html =================================================================== RCS file: /cvsroot/popfile/engine/manual/en/email.html,v retrieving revision 1.2 retrieving revision 1.3 diff -C2 -d -r1.2 -r1.3 *** email.html 5 Feb 2003 15:48:47 -0000 1.2 --- email.html 26 Feb 2003 17:39:34 -0000 1.3 *************** *** 145,153 **** <ul> ! <li>In Outlook select the Tools->Email Accounts... menu option. The E-mail Accounts dialog will appear. <a href=http://popfile.sourceforge.net/manual/o_popfile1.gif>[screenshot]</a> <li>Click View or change existing e-mail accounts and click Next. Choose the account you want to use POPFile with and click Change... ! Make a note of the Incoming mail server (POP3) server name and the User Name. <a href=http://popfile.sourceforge.net/manual/o_popfile2.gif>[screenshot]</a> <li>Change the Incoming mail server (POP3) server name to <b>127.0.0.1</b> and change the User Name to the combination of the original --- 145,153 ---- <ul> ! <li>In Outlook select the Tools->Email Accounts... menu option. The E-mail Accounts dialog will appear. <a href=../o_popfile1.gif>[screenshot]</a> <li>Click View or change existing e-mail accounts and click Next. Choose the account you want to use POPFile with and click Change... ! Make a note of the Incoming mail server (POP3) server name and the User Name. <a href=../o_popfile2.gif>[screenshot]</a> <li>Change the Incoming mail server (POP3) server name to <b>127.0.0.1</b> and change the User Name to the combination of the original |
|
From: <jgr...@us...> - 2003-02-26 17:37:16
|
Update of /cvsroot/popfile/engine/languages In directory sc8-pr-cvs1:/tmp/cvs-serv18931 Modified Files: English.msg Log Message: Small change that makes the filter magnetized and unclassified have no capitals at the start Index: English.msg =================================================================== RCS file: /cvsroot/popfile/engine/languages/English.msg,v retrieving revision 1.21 retrieving revision 1.22 diff -C2 -d -r1.21 -r1.22 *** English.msg 24 Feb 2003 23:08:52 -0000 1.21 --- English.msg 26 Feb 2003 17:37:11 -0000 1.22 *************** *** 127,131 **** History_SearchMessage Search From/Subject History_NoMessages No messages ! History_ShowMagnet Magnetized History_Magnet (just showing magnet classified messages) History_ResetSearch Reset --- 127,131 ---- History_SearchMessage Search From/Subject History_NoMessages No messages ! History_ShowMagnet magnetized History_Magnet (just showing magnet classified messages) History_ResetSearch Reset |
|
From: <jgr...@us...> - 2003-02-26 05:05:32
|
Update of /cvsroot/popfile/engine/POPFile
In directory sc8-pr-cvs1:/tmp/cvs-serv32530
Added Files:
Module.pm
Log Message:
Initial commit of the base class that will be used post v0.18.1 for all POPFile Loadable Modules; doing this mainly because my machine is acting up and I don't want to lose work
--- NEW FILE: Module.pm ---
package POPFile::Module;
# ---------------------------------------------------------------------------------------------
#
# This module implements the base class for all POPFile Loadable Modules and
# contains collection of methods that are common to all POPFile modules and only
# selected ones need be overriden by subclasses
#
# POPFile is constructed from a collection of classes which all have special
# interface functions:
#
# initialize() - called after the class is created to set default values for internal
# variables and global configuration information
#
# start() - called once all configuration has been read and POPFile is ready to start
# operating
#
# stop() - called when POPFile is shutting down
#
# service() - called by the main POPFile process to allow a submodule to do its own
# work (this is optional for modules that do not need to perform any service)
#
# forked() - called when a module has forked the process. This is called within the child
# process and should be used to clean up
#
# reaper() - called when a process has terminated to give a module a chance to do
# whatever clean up is needed
#
# name() - returns a simple name for the module by which other modules can get access
# through the %components hash. The name returned here will be the name
# used as the key for this module in %components
#
# A note on the naming
#
# A method or variable that ends with an underscore is PRIVATE and should not be accessed
# from outside the class (or subclass; in C++ its protected), to access a PRIVATE variable
# you will find an equivalent getter/setter method with no underscore.
#
# For example
#
# $c->foo_() is a private method
# $c->{foo_} is a private variable
# $c->foo() is a public method that modifies $c->{foo_} it always returns the current
# value of the variable it is referencing and if passed a value sets that corresponding
# variable
#
# Copyright (c) 2001-2003 John Graham-Cumming
#
# ---------------------------------------------------------------------------------------------
#----------------------------------------------------------------------------
# new
#
# Class new() function, all real work gets done by initialize and
# the things set up here are more for documentation purposes than
# anything so that you know that they exists
#
#----------------------------------------------------------------------------
sub new
{
my $type = shift;
my $self;
# A reference to the POPFile::Configuration module, every module is
# able to get configuration information through this, note that it
# is valid when initialize is called, however, the configuration is not
# read from disk until after initialize has been called
$self->{configuration_} = 0;
# A reference to the POPFile::Logger module
$self->{logger_} = 0;
# Used to tell any loops to terminate
$self->{alive_} = 1;
# This is a reference to the pipeready() function in popfile.pl that it used
# to determine if a pipe is ready for reading in a cross platform way
$self->{pipeready_} = 0;
# This is a reference to a function (forker) in popfile.pl that performs a fork
# and informs modules that a fork has occurred
$self->{forker_} = 0;
return bless $self, $type;
}
# ---------------------------------------------------------------------------------------------
#
# initialize
#
# Called to initialize the module, the main task that this function should perform is
# setting up the default values of the configuration options for this object. This is done
# through the configuration_ hash value that will point the configuration module.
#
# Note that the configuration is not loaded from disk until after every module's initialize
# has been called, so do not use any of these values until start() is called as they may
# change
#
# The method should return 1 to indicate that it initialized correctly, if it returns
# 0 then POPFile will abort loading immediately
#
# ---------------------------------------------------------------------------------------------
sub initialize
{
my ( $self ) = @_;
return 1;
}
# ---------------------------------------------------------------------------------------------
#
# start
#
# Called when all configuration information has been loaded from disk.
#
# The method should return 1 to indicate that it started correctly, if it returns
# 0 then POPFile will abort loading immediately
#
# ---------------------------------------------------------------------------------------------
sub start
{
my ( $self ) = @_;
return 1;
}
# ---------------------------------------------------------------------------------------------
#
# stop
#
# Called when POPFile is closing down, this is the last method that will get called before
# the object is destroyed. There is not return value from stop().
#
# ---------------------------------------------------------------------------------------------
sub stop
{
my ( $self ) = @_;
}
# ---------------------------------------------------------------------------------------------
#
# name
#
# Called to get the simple name for this module, this is the name use to hook various
# module's together in popfile.pl and should be a simple lower case name. This is the only
# pure abstract function in POPFile::Module and will abort POPFile immediately if ever
# called.
#
# It should return a string containing the proposed name
#
# ---------------------------------------------------------------------------------------------
sub name
{
my ( $self ) = @_;
# Pure virtual
print "\nPOPFile::Module::name called; this function is pure virtual";
exit(1);
}
# ---------------------------------------------------------------------------------------------
#
# reaper
#
# Called when a child process terminates somewhere in POPFile. The object should check
# to see if it was one of its children and do any necessary processing by calling waitpid()
# on any child handles it has
#
# There is no return value from this method
#
# ---------------------------------------------------------------------------------------------
sub reaper
{
my ( $self ) = @_;
}
# ---------------------------------------------------------------------------------------------
#
# service
#
# service() is a called periodically to give the module a chance to do housekeeping work.
#
# If any problem occurs that requires POPFile to shutdown service() should return 0 and
# the top level process will gracefully terminate POPFile including calling all stop()
# methods. In normal operation return 1.
#
# ---------------------------------------------------------------------------------------------
sub service
{
my ( $self ) = @_;
return 1;
}
# ---------------------------------------------------------------------------------------------
#
# forked
#
# This is called when some module forks POPFile and is within the context of the child
# process so that this module can close any duplicated file handles that are not needed.
#
# There is no return value from this method
#
# ---------------------------------------------------------------------------------------------
sub forked
{
my ( $self ) = @_;
}
# GETTER/SETTER methods. Note that I do not expect documentation of these unless they
# are non-trivial since the documentation would be a waste of space
#
# The only thing to note is the idiom used, stick to that and there's no need to
# document these
#
# sub foo
# {
# my ( $self, $value ) = @_;
#
# if ( defined( $value ) ) {
# $self->{foo_} = $value;
# }
#
# return $self->{foo_};
# }
#
# This method access the foo_ variable for reading or writing, $c->foo() read foo_ and
# $c->foo( 'foo' ) writes foo_
sub configuration
{
my ( $self, $value ) = @_;
if ( defined( $value ) ) {
$self->{configuration_} = $value;
}
return $self->{configuration_};
}
sub forker
{
my ( $self, $value ) = @_;
if ( defined( $value ) ) {
$self->{forker_} = $value;
}
return $self->{forker_};
}
sub logger
{
my ( $self, $value ) = @_;
if ( defined( $value ) ) {
$self->{logger_} = $value;
}
return $self->{logger_};
}
sub pipeready
{
my ( $self, $value ) = @_;
if ( defined( $value ) ) {
$self->{pipeready_} = $value;
}
return $self->{pipeready_};
}
sub alive
{
my ( $self, $value ) = @_;
if ( defined( $value ) ) {
$self->{alive_} = $value;
}
return $self->{alive_};
}
1;
|
|
From: <jgr...@us...> - 2003-02-26 04:35:15
|
Update of /cvsroot/popfile/engine/Proxy
In directory sc8-pr-cvs1:/tmp/cvs-serv24019/Proxy
Modified Files:
POP3.pm
Log Message:
A user was confused about how toptoo was implemented (a sure sign of bad commenting) so I improved the comment to make it clear
Index: POP3.pm
===================================================================
RCS file: /cvsroot/popfile/engine/Proxy/POP3.pm,v
retrieving revision 1.39
retrieving revision 1.40
diff -C2 -d -r1.39 -r1.40
*** POP3.pm 24 Feb 2003 23:08:49 -0000 1.39
--- POP3.pm 26 Feb 2003 04:35:12 -0000 1.40
***************
*** 135,139 ****
if ( !defined( $self->{server} ) ) {
! print <<EOM;
\nCouldn't start the POP3 proxy because POPFile could not bind to the
--- 135,139 ----
if ( !defined( $self->{server} ) ) {
! print <<EOM;
\nCouldn't start the POP3 proxy because POPFile could not bind to the
***************
*** 145,149 ****
EOM
! return 0;
}
--- 145,149 ----
EOM
! return 0;
}
***************
*** 234,238 ****
if ( $stats_changed ) {
! $self->{ui}->invalidate_history_cache();
$self->{configuration}->save_configuration();
$self->{classifier}->write_parameters();
--- 234,238 ----
if ( $stats_changed ) {
! $self->{ui}->invalidate_history_cache();
$self->{configuration}->save_configuration();
$self->{classifier}->write_parameters();
***************
*** 490,495 ****
}
! # Note the horrible hack here where we detect a command of the form TOP x 99999999 this
! # is done so that fetchmail can be used with POPFile.
if ( $command =~ /TOP (.*) (.*)/i ) {
if ( $2 ne '99999999' ) {
--- 490,524 ----
}
! # TOP handling is rather special because we have three cases that we handle
! #
! # 1. If the client sends TOP x 99999999 then it is most likely to be
! # fetchmail and the intent of fetchmail is to actually get the message
! # but for its own reasons it does not use RETR. We use RETR as the clue
! # to place a message in the history, so we have a hack. If the client
! # looks like fetchmail then TOP x 99999999 is actually implemented
! # using RETR
! #
! # 2. The toptoo configuration controls whether email downloaded using the
! # TOP command is classified or not (note that it is *never* placed in
! # the history; with the expection of (1) above). There are two cases:
! #
! # 2a If toptoo is 0 then POPFile will pass a TOP from the client through
! # as a TOP and do no classification on the message.
! #
! # 2b If toptoo is 1 then POPFile first does a RETR on the message without
! # saving it in the history so that it can get the classification on the
! # message which is stores in $class. Then it gets the message again
! # by sending the TOP command and passing the result through
! # classify_and_modify passing in the $class determined above. This means
! # that the message gets the right classification and the client only
! # gets the headers requested plus so many lines of body, but they will
! # get subject modification, and the XTC and XPL headers add. Note that
! # TOP always returns the full headers and then n lines of the body so
! # we are guaranteed to be able to do our header modifications.
! #
! # NOTE using toptoo=1 on a slow link could cause performance problems,
! # it is only intended for use where there is high bandwidth between
! # POPFile and the POP3 server.
!
if ( $command =~ /TOP (.*) (.*)/i ) {
if ( $2 ne '99999999' ) {
|
|
From: <jgr...@us...> - 2003-02-26 04:08:44
|
Update of /cvsroot/popfile/windows
In directory sc8-pr-cvs1:/tmp/cvs-serv13576
Modified Files:
installer.nsi ioB.ini
Log Message:
The installer now restores the values of registry keys that it changes by storing the values in the file popfile.reg and then reading it when uninstalling; changed the text associated with Outlook Express because I have confirmed that the same code will reconfigure Internet email accounts configured in Outlook as well; made this the RC1 installer
Index: installer.nsi
===================================================================
RCS file: /cvsroot/popfile/windows/installer.nsi,v
retrieving revision 1.27
retrieving revision 1.28
diff -C2 -d -r1.27 -r1.28
*** installer.nsi 26 Feb 2003 02:40:02 -0000 1.27
--- installer.nsi 26 Feb 2003 04:08:41 -0000 1.28
***************
*** 50,56 ****
!insertmacro MUI_PAGECOMMAND_COMPONENTS
!insertmacro MUI_PAGECOMMAND_DIRECTORY
! Page custom SetOptionsPage "Options"
!insertmacro MUI_PAGECOMMAND_INSTFILES
! Page custom SetOutlookExpressPage "Configure Outlook Express"
!insertmacro MUI_PAGECOMMAND_FINISH
--- 50,56 ----
!insertmacro MUI_PAGECOMMAND_COMPONENTS
!insertmacro MUI_PAGECOMMAND_DIRECTORY
! Page custom SetOptionsPage ": Options"
!insertmacro MUI_PAGECOMMAND_INSTFILES
! Page custom SetOutlookOrOutlookExpressPage ": Configure Outlook or Outlook Express"
!insertmacro MUI_PAGECOMMAND_FINISH
***************
*** 261,269 ****
WriteINIStr "$SMPROGRAMS\POPFile\Manual.url" \
"InternetShortcut" "URL" "file://$INSTDIR/manual/en/manual.html"
SetOutPath $SMPROGRAMS\POPFile\Support
WriteINIStr "$SMPROGRAMS\POPFile\Support\POPFile Home Page.url" \
"InternetShortcut" "URL" "http://popfile.sourceforge.net/"
- WriteINIStr "$SMPROGRAMS\POPFile\Support\POPFile Manual.url" \
- "InternetShortcut" "URL" "http://popfile.sourceforge.net/manual.html"
StrCmp ${STARTUP} "1" 0 skip_autostart_set
--- 261,269 ----
WriteINIStr "$SMPROGRAMS\POPFile\Manual.url" \
"InternetShortcut" "URL" "file://$INSTDIR/manual/en/manual.html"
+ WriteINIStr "$SMPROGRAMS\POPFile\FAQ.url" \
+ "InternetShortcut" "URL" "http://sourceforge.net/docman/display_doc.php?docid=14421&group_id=63137"
SetOutPath $SMPROGRAMS\POPFile\Support
WriteINIStr "$SMPROGRAMS\POPFile\Support\POPFile Home Page.url" \
"InternetShortcut" "URL" "http://popfile.sourceforge.net/"
StrCmp ${STARTUP} "1" 0 skip_autostart_set
***************
*** 323,329 ****
FunctionEnd
! ; This function is used to reconfigure Outlook Express accounts
! Function SetOutlookExpressPage
; In Outlook Express (v5.0 or later) the email account data may appear in
--- 323,329 ----
FunctionEnd
! ; This function is used to reconfigure Outlook or Outlook Express accounts
! Function SetOutlookOrOutlookExpressPage
; In Outlook Express (v5.0 or later) the email account data may appear in
***************
*** 398,402 ****
StrCmp $R6 "127.0.0.1" next_acct_increment
! !insertmacro MUI_HEADER_TEXT "Reconfigure Outlook Express" "POPFile can reconfigure Outlook Express for you"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 2" "State" "0"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 8" "Text" $R6
--- 398,402 ----
StrCmp $R6 "127.0.0.1" next_acct_increment
! !insertmacro MUI_HEADER_TEXT "Reconfigure Outlook or Outlook Express" "POPFile can reconfigure Outlook or Outlook Express for you"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 2" "State" "0"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 8" "Text" $R6
***************
*** 421,424 ****
--- 421,443 ----
ReadRegStr $R6 HKCU $R5 "POP3 User Name"
ReadRegStr $R7 HKCU $R5 "POP3 Server"
+
+ ; To be able to restore the registry to previous settings when we uninstall we
+ ; write a special file called popfile.reg containing the registry settings
+ ; prior to modification in the form of lines consisting of
+ ;
+ ; the\key
+ ; thesubkey
+ ; the\value
+
+ FileOpen ${CFG} $INSTDIR\popfile.reg a
+ FileSeek ${CFG} 0 END
+ FileWrite ${CFG} "$R5$\n"
+ FileWrite ${CFG} "POP3 User Name$\n"
+ FileWrite ${CFG} "$R6$\n"
+ FileWrite ${CFG} "$R5$\n"
+ FileWrite ${CFG} "POP3 Server$\n"
+ FileWrite ${CFG} "$R7$\n"
+ FileClose ${CFG}
+
WriteRegStr HKCU $R5 "POP3 User Name" "$R7:$R6"
WriteRegStr HKCU $R5 "POP3 Server" "127.0.0.1"
***************
*** 431,434 ****
--- 450,476 ----
FunctionEnd
+ ; TrimNewlines
+ ; input, top of stack (e.g. whatever$\r$\n)
+ ; output, top of stack (replaces, with e.g. whatever)
+ ; modifies no other variables.
+
+ Function un.TrimNewlines
+ Exch $R0
+ Push $R1
+ Push $R2
+ StrCpy $R1 0
+ loop:
+ IntOp $R1 $R1 - 1
+ StrCpy $R2 $R0 1 $R1
+ StrCmp $R2 "$\r" loop
+ StrCmp $R2 "$\n" loop
+ IntOp $R1 $R1 + 1
+
+ StrCpy $R0 $R0 $R1
+ Pop $R2
+ Pop $R1
+ Exch $R0
+ FunctionEnd
+
;--------------------------------
;Uninstaller Section
***************
*** 456,459 ****
--- 498,528 ----
Delete $INSTDIR\*.dll
Delete $INSTDIR\popfile.cfg
+
+ ; Read the registry settings found in popfile.reg and restore them
+ ; it there are any. All are assumed to be in HKCU
+ FileOpen ${CFG} $INSTDIR\popfile.reg r
+ IfErrors skip_registry_restore
+ restore_loop:
+ FileRead ${CFG} $R5
+ Push $R5
+ Call un.TrimNewlines
+ Pop $R5
+ IfErrors skip_registry_restore
+ FileRead ${CFG} $R6
+ Push $R6
+ Call un.TrimNewlines
+ Pop $R6
+ IfErrors skip_registry_restore
+ FileRead ${CFG} $R7
+ Push $R7
+ Call un.TrimNewlines
+ Pop $R7
+ IfErrors skip_registry_restore
+ WriteRegStr HKCU $R5 $R6 $R7
+ goto restore_loop
+
+ skip_registry_restore:
+ FileClose ${CFG}
+ Delete $INSTDIR\popfile.reg
Delete $INSTDIR\Proxy\*.pm
Index: ioB.ini
===================================================================
RCS file: /cvsroot/popfile/windows/ioB.ini,v
retrieving revision 1.2
retrieving revision 1.3
diff -C2 -d -r1.2 -r1.3
*** ioB.ini 25 Feb 2003 01:48:51 -0000 1.2
--- ioB.ini 26 Feb 2003 04:08:41 -0000 1.3
***************
*** 5,9 ****
[Field 1]
Type=label
! Text=POPFile has detected the following Outlook Express email account and can automatically configure it to work with POPFile
Left=0
Right=-1
--- 5,9 ----
[Field 1]
Type=label
! Text=POPFile has detected the following Outlook or Outlook Express email account and can automatically configure it to work with POPFile
Left=0
Right=-1
***************
*** 45,49 ****
[Field 6]
Type=label
! Text=If you uninstall POPFile the original settings will be restored (NOT YET IMPLEMENTED)
Left=0
Right=-1
--- 45,49 ----
[Field 6]
Type=label
! Text=If you uninstall POPFile the original settings will be restored
Left=0
Right=-1
|
|
From: <jgr...@us...> - 2003-02-26 02:40:07
|
Update of /cvsroot/popfile/windows
In directory sc8-pr-cvs1:/tmp/cvs-serv9854
Modified Files:
installer.nsi
Log Message:
The installer.nsi file came back from the previous patch with a large number of extra CRLF sequences in it, these have now been removed, but we need to ensure that all checkins do not have CR in them and I will be adding a script to do this automatically
Index: installer.nsi
===================================================================
RCS file: /cvsroot/popfile/windows/installer.nsi,v
retrieving revision 1.26
retrieving revision 1.27
diff -C2 -d -r1.26 -r1.27
*** installer.nsi 26 Feb 2003 01:30:52 -0000 1.26
--- installer.nsi 26 Feb 2003 02:40:02 -0000 1.27
***************
*** 1,132 ****
! ;
! ; Copyright (c) 2001-2003 John Graham-Cumming
! ;
! ; Modified to work with NSIS v2.0b1
! !define MUI_PRODUCT "POPFile"
! !define MUI_VERSION "0.18.1"
! !include "MUI.nsh"
! ;--------------------------------
! ;Configuration
!
! !define MUI_WELCOMEPAGE
! !define MUI_COMPONENTSPAGE
! !define MUI_DIRECTORYPAGE
! !define MUI_ABORTWARNING
! !define MUI_FINISHPAGE
!
! !define MUI_UNINSTALLER
!
! !define MUI_CUSTOMPAGECOMMANDS
! ; Support for 20 user variables is provided by NSIS. They recommend using
! ; variables $0 to $9 as global variables and reserving $R0 to $R9 for
! ; use as local variables.
!
! !define POP3 $0
! !define GUI $1
! !define STARTUP $2
! !define CFG $3
! !define LNE $4
! !define CMPRE $5
! !define OEID $6
! !define ID $7
! !define OEIDENT $8
! !define ACCTID $9
!
! ;Language
! !insertmacro MUI_LANGUAGEFILE_STRING MUI_TEXT_WELCOME_INFO_TEXT "This wizard will guide you through the installation of ${MUI_PRODUCT}.\r\n\r\nIt is recommended that you close all other applications before starting Setup.\r\n\r\n"
! !insertmacro MUI_LANGUAGE "English"
!
! ;General
OutFile "setup.exe"
;Install Options pages
;Header
LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Install Options Page"
! LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "Options"
;Page order
!insertmacro MUI_PAGECOMMAND_WELCOME
!insertmacro MUI_PAGECOMMAND_COMPONENTS
!insertmacro MUI_PAGECOMMAND_DIRECTORY
Page custom SetOptionsPage "Options"
!insertmacro MUI_PAGECOMMAND_INSTFILES
Page custom SetOutlookExpressPage "Configure Outlook Express"
!insertmacro MUI_PAGECOMMAND_FINISH
! ;Component-selection page
;Descriptions
LangString DESC_SecPOPFile ${LANG_ENGLISH} "Installs the core files needed by POPFile, including a minimal version of Perl."
LangString DESC_SecSkins ${LANG_ENGLISH} "Installs POPFile skins that allow you to change the look and feel of the POPFile user interface."
LangString DESC_SecLangs ${LANG_ENGLISH} "Installs non-English language versions of the POPFile UI."
! ;Folder-selection page
InstallDir "$PROGRAMFILES\${MUI_PRODUCT}"
InstallDirRegKey HKLM SOFTWARE\POPFile InstallLocation
;Things that need to be extracted on startup (keep these lines before any File command!)
;Only useful for BZIP2 compression
;Use ReserveFile for your own Install Options ini files too!
! !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
!insertmacro MUI_RESERVEFILE_WELCOMEFINISHPAGE
ReserveFile "ioA.ini"
ReserveFile "ioB.ini"
! Function .onInit
! ; See if we can get the current pop3 and gui port
; from an existing configuration
FileOpen ${CFG} $INSTDIR\popfile.cfg r
! loop:
FileRead ${CFG} ${LNE}
IfErrors done
! StrCpy ${CMPRE} ${LNE} 5
StrCmp ${CMPRE} "port " got_port not_port
got_port:
StrCpy ${POP3} ${LNE} 5 5
goto loop
not_port:
StrCpy ${CMPRE} ${LNE} 8
StrCmp ${CMPRE} "ui_port " got_ui_port loop
got_ui_port:
StrCpy ${GUI} ${LNE} 5 8
goto loop
! done:
FileClose ${CFG}
! ; If the POP3 port is undefined then default it to 110
StrCmp ${POP3} "" 0 skip_pop3_set
StrCpy ${POP3} "110"
skip_pop3_set:
! ; If the GUI port is undefined then default it to 8080
StrCmp ${GUI} "" 0 skip_gui_set
StrCpy ${GUI} "8080"
skip_gui_set:
! InitPluginsDir
File /oname=$PLUGINSDIR\ioA.ini ioA.ini
File /oname=$PLUGINSDIR\ioB.ini ioB.ini
! FunctionEnd
! ;--------------------------------
;Modern UI System
! !insertmacro MUI_SYSTEM
! ;--------------------------------
;Installer Sections
! Section "POPFile" SecPOPFile
; Make this section mandatory (i.e. it is always installed)
SectionIn RO
! ; Retrieve the POP3 and GUI ports from the ini and get whether we install the
; POPFile run in the Startup group
!insertmacro MUI_INSTALLOPTIONS_READ ${POP3} "ioA.ini" "Field 2" "State"
!insertmacro MUI_INSTALLOPTIONS_READ ${GUI} "ioA.ini" "Field 4" "State"
!insertmacro MUI_INSTALLOPTIONS_READ ${STARTUP} "ioA.ini" "Field 5" "State"
! WriteRegStr HKLM SOFTWARE\POPFile InstallLocation $INSTDIR
! ; Install the POPFile Core files
! SetOutPath $INSTDIR
File "..\engine\*.pl"
File "..\engine\pix.gif"
File "..\engine\black.gif"
FileOpen ${CFG} $INSTDIR\popfile.cfg a
FileSeek ${CFG} 0 END
FileWrite ${CFG} "port ${POP3}$\n"
FileWrite ${CFG} "ui_port ${GUI}$\n"
FileClose ${CFG}
! SetOutPath $INSTDIR\Classifier
File "..\engine\Classifier\Bayes.pm"
File "..\engine\Classifier\WordMangle.pm"
File "..\engine\Classifier\MailParse.pm"
SetOutPath $INSTDIR\POPFile
File "..\engine\POPFile\Logger.pm"
File "..\engine\POPFile\Configuration.pm"
SetOutPath $INSTDIR\Proxy
File "..\engine\Proxy\POP3.pm"
SetOutPath $INSTDIR\UI
File "..\engine\UI\HTML.pm"
! SetOutPath $INSTDIR\manual
File "..\engine\manual\*.gif"
SetOutPath $INSTDIR\manual\en
File "..\engine\manual\en\*.html"
! SetOutPath $INSTDIR\languages
File "..\engine\languages\English.msg"
! ; Install the Minimal Perl files
! SetOutPath $INSTDIR
File "C:\Perl58\bin\perl.exe"
File "C:\Perl58\bin\wperl.exe"
File "C:\Perl58\bin\perl58.dll"
File "C:\Perl58\lib\AutoLoader.pm"
File "C:\Perl58\lib\Carp.pm"
File "C:\Perl58\lib\Config.pm"
File "C:\Perl58\lib\DynaLoader.pm"
File "C:\Perl58\lib\Errno.pm"
File "C:\Perl58\lib\Exporter.pm"
File "C:\Perl58\lib\IO.pm"
File "C:\Perl58\lib\integer.pm"
File "C:\Perl58\lib\locale.pm"
File "C:\Perl58\lib\POSIX.pm"
File "C:\Perl58\lib\SelectSaver.pm"
File "C:\Perl58\lib\Socket.pm"
File "C:\Perl58\lib\strict.pm"
File "C:\Perl58\lib\Symbol.pm"
File "C:\Perl58\lib\vars.pm"
File "C:\Perl58\lib\warnings.pm"
File "C:\Perl58\lib\XSLoader.pm"
! SetOutPath $INSTDIR\Carp
File "C:\Perl58\lib\Carp\*"
! SetOutPath $INSTDIR\Exporter
File "C:\Perl58\lib\Exporter\*"
! SetOutPath $INSTDIR\MIME
File "C:\Perl58\lib\MIME\*"
! SetOutPath $INSTDIR\IO
File "C:\Perl58\lib\IO\*"
! SetOutPath $INSTDIR\Sys
File "C:\Perl58\lib\Sys\*"
! SetOutPath $INSTDIR\Text
File "C:\Perl58\lib\Text\ParseWords.pm"
! SetOutPath $INSTDIR\IO\Socket
File "C:\Perl58\lib\IO\Socket\*"
! SetOutPath $INSTDIR\auto\DynaLoader
File "C:\Perl58\lib\auto\DynaLoader\*"
SetOutPath $INSTDIR\auto\File\Glob
File "C:\Perl58\lib\auto\File\Glob\*"
! SetOutPath $INSTDIR\auto\MIME\Base64
File "C:\Perl58\lib\auto\MIME\Base64\*"
! SetOutPath $INSTDIR\auto\IO
File "C:\Perl58\lib\auto\IO\*"
! SetOutPath $INSTDIR\auto\Socket
File "C:\Perl58\lib\auto\Socket\*"
! SetOutPath $INSTDIR\auto\Sys\Hostname
File "C:\Perl58\lib\auto\Sys\Hostname\*"
! SetOutPath $INSTDIR\auto\POSIX
File "C:\Perl58\lib\auto\POSIX\POSIX.dll"
File "C:\Perl58\lib\auto\POSIX\autosplit.ix"
File "C:\Perl58\lib\auto\POSIX\load_imports.al"
! SetOutPath $INSTDIR\File
File "C:\Perl58\lib\File\Glob.pm"
! SetOutPath $INSTDIR\warnings
File "C:\Perl58\lib\warnings\register.pm"
! ; Create the START MENU entries
! SetOutPath $SMPROGRAMS\POPFile
SetOutPath $INSTDIR
CreateShortCut "$SMPROGRAMS\POPFile\Run POPFile.lnk" \
"$INSTDIR\perl.exe" popfile.pl
CreateShortCut "$SMPROGRAMS\POPFile\Run POPFile in background.lnk" \
"$INSTDIR\wperl.exe" popfile.pl
CreateShortCut "$SMPROGRAMS\POPFile\Uninstall POPFile.lnk" \
"$INSTDIR\uninstall.exe"
SetOutPath $SMPROGRAMS\POPFile
WriteINIStr "$SMPROGRAMS\POPFile\POPFile User Interface.url" \
"InternetShortcut" "URL" "http://127.0.0.1:${GUI}/"
WriteINIStr "$SMPROGRAMS\POPFile\Shutdown POPFile.url" \
"InternetShortcut" "URL" "http://127.0.0.1:${GUI}/shutdown"
WriteINIStr "$SMPROGRAMS\POPFile\Manual.url" \
"InternetShortcut" "URL" "file://$INSTDIR/manual/en/manual.html"
SetOutPath $SMPROGRAMS\POPFile\Support
WriteINIStr "$SMPROGRAMS\POPFile\Support\POPFile Home Page.url" \
"InternetShortcut" "URL" "http://popfile.sourceforge.net/"
WriteINIStr "$SMPROGRAMS\POPFile\Support\POPFile Manual.url" \
"InternetShortcut" "URL" "http://popfile.sourceforge.net/manual.html"
! StrCmp ${STARTUP} "1" 0 skip_autostart_set
SetOutPath $SMSTARTUP
SetOutPath $INSTDIR
CreateShortCut "$SMSTARTUP\Run POPFile in background.lnk" \
"$INSTDIR\wperl.exe" popfile.pl
skip_autostart_set:
SetOutPath $INSTDIR
Delete $INSTDIR\uninstall.exe
WriteUninstaller $INSTDIR\uninstall.exe
! SectionEnd
! Section "Skins" SecSkins
! SetOutPath $INSTDIR\skins
File "..\engine\skins\*.css"
File "..\engine\skins\*.gif"
! SectionEnd
! Section "Languages" SecLangs
! SetOutPath $INSTDIR\languages
File "..\engine\languages\*.msg"
! SectionEnd
! ;--------------------------------
;Descriptions
! !insertmacro MUI_FUNCTIONS_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecPOPFile} $(DESC_SecPOPFile)
!insertmacro MUI_DESCRIPTION_TEXT ${SecSkins} $(DESC_SecSkins)
!insertmacro MUI_DESCRIPTION_TEXT ${SecLangs} $(DESC_SecLangs)
!insertmacro MUI_FUNCTIONS_DESCRIPTION_END
! ;--------------------------------
;Installer Functions
! Function SetOptionsPage
!insertmacro MUI_HEADER_TEXT "POPFile Installation Options" "Leave these options unchanged unless you need to change them"
!insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioA.ini" "Field 2" "ListItems"
StrCpy $R5 $R5|${POP3}
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 2" "ListItems" $R5
!insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioA.ini" "Field 4" "ListItems"
StrCpy $R5 $R5|${GUI}
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 4" "ListItems" $R5
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 2" "State" ${POP3}
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 4" "State" ${GUI}
! Push $R0
InstallOptions::dialog $PLUGINSDIR\ioA.ini
Pop $R0
FunctionEnd
! ; This function is used to reconfigure Outlook Express accounts
! Function SetOutlookExpressPage
! ; In Outlook Express (v5.0 or later) the email account data may appear in
; more than one place, depending upon how Outlook Express has been configured.
! ; First we check the "Main Identity" (also known as the "Default Identity")
; which is created when Outlook Express is installed. Note that this identity
; may no longer be active, as users are free to delete it after creating
; an additional identity and switching to the new one.
! ; The Outlook Express "Main Identity" does not use an "identity number"
StrCpy ${OEIDENT} ""
Call CheckOutlookExpressAccounts
! ; Now we have to check if any additional identities have been created in
; Outlook Express. These identities are kept in HKEY_CURRENT_USER\Identities.
; If we find any extra identities, we need to see if any of them have email
; accounts we can reconfigure for use with POPFile.
! StrCpy ${OEID} 0
; Get the next identity from the registry
! next_id:
EnumRegKey ${ID} HKCU "Identities" ${OEID}
StrCmp ${ID} "" finished_oe
! ; Now check all of the accounts for this particular identity
StrCpy ${OEIDENT} "Identities\${ID}\"
Call CheckOutlookExpressAccounts
! ; Now move on to the next identity
IntOp ${OEID} ${OEID} + 1
goto next_id
! finished_oe:
FunctionEnd
! ; This function checks all the accounts for a particular Outlook Express identity
! Function CheckOutlookExpressAccounts
! ; Called by SetOutLookExpressPage to check all of the accounts for a given
; Outlook Express identity: either the "Main Identity", when ${OEIDENT} is
; a null string (""), or one of the "Additional Identities", when ${OEIDENT}
; is a string such as "Identities\{AB734464-478F-11D7-81C3-00409545B64C}\"
! ; The email account data for all identities, although stored in different
; locations, uses the same structure. The "path" for each identity starts
; with "HKEY_CURRENT_USER\" and ends with "\Internet Account Manager\Accounts".
! ; OE account data for each identity appears "under" the path defined above, e.g.
; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000001
; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000002
; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000003
; etc
! StrCpy $R1 0
; Get the next set of OE account data for the specified OE Identity
! next_acct:
EnumRegKey ${ACCTID} HKCU "${OEIDENT}Software\Microsoft\Internet Account Manager\Accounts" $R1
StrCmp ${ACCTID} "" finished_this_id
! ; Now extract the POP3 Server, if this does not exist then this account is
; not configured for mail so move on
StrCpy $R5 "${OEIDENT}Software\Microsoft\Internet Account Manager\Accounts\${ACCTID}"
ReadRegStr $R6 HKCU $R5 "POP3 Server"
StrCmp $R6 "" next_acct_increment
StrCmp $R6 "127.0.0.1" next_acct_increment
! !insertmacro MUI_HEADER_TEXT "Reconfigure Outlook Express" "POPFile can reconfigure Outlook Express for you"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 2" "State" "0"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 8" "Text" $R6
ReadRegStr $R6 HKCU $R5 "SMTP Email Address"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 7" "Text" $R6
ReadRegStr $R6 HKCU $R5 "POP3 User Name"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 9" "Text" $R6
ReadRegStr $R6 HKCU $R5 "Account Name"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 10" "Text" $R6
Push $R0
InstallOptions::dialog $PLUGINSDIR\ioB.ini
Pop $R0
StrCmp $R0 "cancel" finished_this_id
StrCmp $R0 "back" finished_this_id
! !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioB.ini" "Field 2" "State"
StrCmp $R5 "1" change_oe next_acct_increment
! change_oe:
StrCpy $R5 "${OEIDENT}Software\Microsoft\Internet Account Manager\Accounts\${ACCTID}"
ReadRegStr $R6 HKCU $R5 "POP3 User Name"
ReadRegStr $R7 HKCU $R5 "POP3 Server"
WriteRegStr HKCU $R5 "POP3 User Name" "$R7:$R6"
WriteRegStr HKCU $R5 "POP3 Server" "127.0.0.1"
! next_acct_increment:
IntOp $R1 $R1 + 1
goto next_acct
! finished_this_id:
FunctionEnd
! ;--------------------------------
;Uninstaller Section
! Section "Uninstall"
! IfFileExists $INSTDIR\popfile.pl skip_confirmation
MessageBox MB_YESNO "It does not appear that POPFile is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)" IDYES skip_confirmation
Abort "Uninstall aborted by user"
skip_confirmation:
! Delete $SMPROGRAMS\POPFile\Support\*.url
RMDir $SMPROGRAMS\POPFile\Support
! Delete $SMPROGRAMS\POPFile\*.lnk
Delete $SMPROGRAMS\POPFile\*.url
Delete "$SMSTARTUP\Run POPFile in background.lnk"
RMDir $SMPROGRAMS\POPFile
! Delete $INSTDIR\*.log
Delete $INSTDIR\*.pl
Delete $INSTDIR\*.gif
Delete $INSTDIR\*.pm
Delete $INSTDIR\*.exe
Delete $INSTDIR\*.dll
Delete $INSTDIR\popfile.cfg
Delete $INSTDIR\Proxy\*.pm
RMDir $INSTDIR\Proxy
Delete $INSTDIR\UI\*.pm
RMDir $INSTDIR\UI
Delete $INSTDIR\POPFile\*.pm
RMDir $INSTDIR\POPFile
Delete $INSTDIR\Classifier\*.pm
RMDir $INSTDIR\Classifier
Delete $INSTDIR\Exporter\*.*
RMDir $INSTDIR\Exporter
Delete $INSTDIR\skins\*.css
Delete $INSTDIR\skins\*.gif
RMDir $INSTDIR\skins
Delete $INSTDIR\manual\en\*.html
RMDir $INSTDIR\manual\en
Delete $INSTDIR\manual\*.gif
RMDir $INSTDIR\manual
Delete $INSTDIR\languages\*.msg
RMDir $INSTDIR\languages
! Delete $INSTDIR\MIME\*.*
RMDir $INSTDIR\MIME
Delete $INSTDIR\IO\*.*
Delete $INSTDIR\IO\Socket\*.*
RMDir /r $INSTDIR\IO
Delete $INSTDIR\Carp\*.*
RMDir /r $INSTDIR\Carp
Delete $INSTDIR\Sys\Hostname\*.*
RMDir /r $INSTDIR\Sys\Hostname
RMDir /r $INSTDIR\Sys
Delete $INSTDIR\Text\*.pm
RMDir /r $INSTDIR\Text
Delete $INSTDIR\auto\POSIX\*.*
Delete $INSTDIR\auto\DynaLoader\*.*
Delete $INSTDIR\auto\File\Glob\*.*
Delete $INSTDIR\auto\MIME\Base64\*.*
Delete $INSTDIR\auto\IO\*.*
Delete $INSTDIR\auto\Socket\*.*
Delete $INSTDIR\auto\Sys\*.*
RMDir /r $INSTDIR\auto
Delete $INSTDIR\File\*.*
RMDir $INSTDIR\File
Delete $INSTDIR\warnings\*.*
RMDir $INSTDIR\warnings
Delete "$INSTDIR\modern.exe"
Delete "$INSTDIR\Uninstall.exe"
! RMDir $INSTDIR
! DeleteRegKey HKLM SOFTWARE\POPFile
! ; if $INSTDIR was removed, skip these next ones
IfFileExists $INSTDIR 0 Removed
MessageBox MB_YESNO|MB_ICONQUESTION \
"Do you want to remove all files in your POPFile directory? (If you have anything \
you created that you want to keep, click No)" IDNO Removed
Delete $INSTDIR\*.* ; this would be skipped if the user hits no
RMDir /r $INSTDIR
IfFileExists $INSTDIR 0 Removed
MessageBox MB_OK|MB_ICONEXCLAMATION \
"Note: $INSTDIR could not be removed."
Removed:
! !insertmacro MUI_UNFINISHHEADER
! SectionEnd
! ;eof
--- 1,528 ----
! ;
! ; Copyright (c) 2001-2003 John Graham-Cumming
! ;
! ; Modified to work with NSIS v2.0b1
! !define MUI_PRODUCT "POPFile"
! !define MUI_VERSION "0.18.1 RC1"
! !include "MUI.nsh"
! ;--------------------------------
! ;Configuration
!
! !define MUI_WELCOMEPAGE
! !define MUI_COMPONENTSPAGE
! !define MUI_DIRECTORYPAGE
! !define MUI_ABORTWARNING
! !define MUI_FINISHPAGE
!
! !define MUI_UNINSTALLER
!
! !define MUI_CUSTOMPAGECOMMANDS
! ; Support for 20 user variables is provided by NSIS. They recommend using
! ; variables $0 to $9 as global variables and reserving $R0 to $R9 for
! ; use as local variables.
!
! !define POP3 $0
! !define GUI $1
! !define STARTUP $2
! !define CFG $3
! !define LNE $4
! !define CMPRE $5
! !define OEID $6
! !define ID $7
! !define OEIDENT $8
! !define ACCTID $9
!
! ;Language
! !insertmacro MUI_LANGUAGEFILE_STRING MUI_TEXT_WELCOME_INFO_TEXT "This wizard will guide you through the installation of ${MUI_PRODUCT}.\r\n\r\nIt is recommended that you close all other applications before starting Setup.\r\n\r\n"
! !insertmacro MUI_LANGUAGE "English"
!
! ;General
! OutFile "setup.exe"
!
! ;Install Options pages
!
! ;Header
! LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Install Options Page"
! LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "Options"
!
! ;Page order
! !insertmacro MUI_PAGECOMMAND_WELCOME
! !insertmacro MUI_PAGECOMMAND_COMPONENTS
! !insertmacro MUI_PAGECOMMAND_DIRECTORY
! Page custom SetOptionsPage "Options"
! !insertmacro MUI_PAGECOMMAND_INSTFILES
! Page custom SetOutlookExpressPage "Configure Outlook Express"
! !insertmacro MUI_PAGECOMMAND_FINISH
!
! ;Component-selection page
! ;Descriptions
! LangString DESC_SecPOPFile ${LANG_ENGLISH} "Installs the core files needed by POPFile, including a minimal version of Perl."
! LangString DESC_SecSkins ${LANG_ENGLISH} "Installs POPFile skins that allow you to change the look and feel of the POPFile user interface."
! LangString DESC_SecLangs ${LANG_ENGLISH} "Installs non-English language versions of the POPFile UI."
!
! ;Folder-selection page
! InstallDir "$PROGRAMFILES\${MUI_PRODUCT}"
! InstallDirRegKey HKLM SOFTWARE\POPFile InstallLocation
!
! ;Things that need to be extracted on startup (keep these lines before any File command!)
! ;Only useful for BZIP2 compression
! ;Use ReserveFile for your own Install Options ini files too!
!
! !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
! !insertmacro MUI_RESERVEFILE_WELCOMEFINISHPAGE
! ReserveFile "ioA.ini"
! ReserveFile "ioB.ini"
!
! Function .onInit
!
! ; See if we can get the current pop3 and gui port
! ; from an existing configuration
! FileOpen ${CFG} $INSTDIR\popfile.cfg r
!
! loop:
! FileRead ${CFG} ${LNE}
! IfErrors done
!
! StrCpy ${CMPRE} ${LNE} 5
! StrCmp ${CMPRE} "port " got_port not_port
! got_port:
! StrCpy ${POP3} ${LNE} 5 5
! goto loop
!
! not_port:
! StrCpy ${CMPRE} ${LNE} 8
! StrCmp ${CMPRE} "ui_port " got_ui_port loop
! got_ui_port:
! StrCpy ${GUI} ${LNE} 5 8
!
! goto loop
!
! done:
! FileClose ${CFG}
!
! ; If the POP3 port is undefined then default it to 110
! StrCmp ${POP3} "" 0 skip_pop3_set
! StrCpy ${POP3} "110"
! skip_pop3_set:
!
! ; If the GUI port is undefined then default it to 8080
! StrCmp ${GUI} "" 0 skip_gui_set
! StrCpy ${GUI} "8080"
! skip_gui_set:
!
! InitPluginsDir
! File /oname=$PLUGINSDIR\ioA.ini ioA.ini
! File /oname=$PLUGINSDIR\ioB.ini ioB.ini
!
! FunctionEnd
!
! ;--------------------------------
! ;Modern UI System
!
! !insertmacro MUI_SYSTEM
!
! ;--------------------------------
! ;Installer Sections
!
! Section "POPFile" SecPOPFile
! ; Make this section mandatory (i.e. it is always installed)
! SectionIn RO
!
! ; Retrieve the POP3 and GUI ports from the ini and get whether we install the
! ; POPFile run in the Startup group
! !insertmacro MUI_INSTALLOPTIONS_READ ${POP3} "ioA.ini" "Field 2" "State"
! !insertmacro MUI_INSTALLOPTIONS_READ ${GUI} "ioA.ini" "Field 4" "State"
! !insertmacro MUI_INSTALLOPTIONS_READ ${STARTUP} "ioA.ini" "Field 5" "State"
!
! WriteRegStr HKLM SOFTWARE\POPFile InstallLocation $INSTDIR
!
! ; Install the POPFile Core files
!
! SetOutPath $INSTDIR
! File "..\engine\*.pl"
! File "..\engine\pix.gif"
! File "..\engine\black.gif"
!
! FileOpen ${CFG} $INSTDIR\popfile.cfg a
! FileSeek ${CFG} 0 END
! FileWrite ${CFG} "port ${POP3}$\n"
! FileWrite ${CFG} "ui_port ${GUI}$\n"
! FileClose ${CFG}
!
! SetOutPath $INSTDIR\Classifier
! File "..\engine\Classifier\Bayes.pm"
! File "..\engine\Classifier\WordMangle.pm"
! File "..\engine\Classifier\MailParse.pm"
! SetOutPath $INSTDIR\POPFile
! File "..\engine\POPFile\Logger.pm"
! File "..\engine\POPFile\Configuration.pm"
! SetOutPath $INSTDIR\Proxy
! File "..\engine\Proxy\POP3.pm"
! SetOutPath $INSTDIR\UI
! File "..\engine\UI\HTML.pm"
!
! SetOutPath $INSTDIR\manual
! File "..\engine\manual\*.gif"
! SetOutPath $INSTDIR\manual\en
! File "..\engine\manual\en\*.html"
!
! SetOutPath $INSTDIR\languages
! File "..\engine\languages\English.msg"
!
! ; Install the Minimal Perl files
!
! SetOutPath $INSTDIR
! File "C:\Perl58\bin\perl.exe"
! File "C:\Perl58\bin\wperl.exe"
! File "C:\Perl58\bin\perl58.dll"
! File "C:\Perl58\lib\AutoLoader.pm"
! File "C:\Perl58\lib\Carp.pm"
! File "C:\Perl58\lib\Config.pm"
! File "C:\Perl58\lib\DynaLoader.pm"
! File "C:\Perl58\lib\Errno.pm"
! File "C:\Perl58\lib\Exporter.pm"
! File "C:\Perl58\lib\IO.pm"
! File "C:\Perl58\lib\integer.pm"
! File "C:\Perl58\lib\locale.pm"
! File "C:\Perl58\lib\POSIX.pm"
! File "C:\Perl58\lib\SelectSaver.pm"
! File "C:\Perl58\lib\Socket.pm"
! File "C:\Perl58\lib\strict.pm"
! File "C:\Perl58\lib\Symbol.pm"
! File "C:\Perl58\lib\vars.pm"
! File "C:\Perl58\lib\warnings.pm"
! File "C:\Perl58\lib\XSLoader.pm"
!
! SetOutPath $INSTDIR\Carp
! File "C:\Perl58\lib\Carp\*"
!
! SetOutPath $INSTDIR\Exporter
! File "C:\Perl58\lib\Exporter\*"
!
! SetOutPath $INSTDIR\MIME
! File "C:\Perl58\lib\MIME\*"
!
! SetOutPath $INSTDIR\IO
! File "C:\Perl58\lib\IO\*"
!
! SetOutPath $INSTDIR\Sys
! File "C:\Perl58\lib\Sys\*"
!
! SetOutPath $INSTDIR\Text
! File "C:\Perl58\lib\Text\ParseWords.pm"
!
! SetOutPath $INSTDIR\IO\Socket
! File "C:\Perl58\lib\IO\Socket\*"
!
! SetOutPath $INSTDIR\auto\DynaLoader
! File "C:\Perl58\lib\auto\DynaLoader\*"
!
! SetOutPath $INSTDIR\auto\File\Glob
! File "C:\Perl58\lib\auto\File\Glob\*"
!
! SetOutPath $INSTDIR\auto\MIME\Base64
! File "C:\Perl58\lib\auto\MIME\Base64\*"
!
! SetOutPath $INSTDIR\auto\IO
! File "C:\Perl58\lib\auto\IO\*"
!
! SetOutPath $INSTDIR\auto\Socket
! File "C:\Perl58\lib\auto\Socket\*"
!
! SetOutPath $INSTDIR\auto\Sys\Hostname
! File "C:\Perl58\lib\auto\Sys\Hostname\*"
!
! SetOutPath $INSTDIR\auto\POSIX
! File "C:\Perl58\lib\auto\POSIX\POSIX.dll"
! File "C:\Perl58\lib\auto\POSIX\autosplit.ix"
! File "C:\Perl58\lib\auto\POSIX\load_imports.al"
!
! SetOutPath $INSTDIR\File
! File "C:\Perl58\lib\File\Glob.pm"
!
! SetOutPath $INSTDIR\warnings
! File "C:\Perl58\lib\warnings\register.pm"
!
! ; Create the START MENU entries
!
! SetOutPath $SMPROGRAMS\POPFile
! SetOutPath $INSTDIR
! CreateShortCut "$SMPROGRAMS\POPFile\Run POPFile.lnk" \
! "$INSTDIR\perl.exe" popfile.pl
! CreateShortCut "$SMPROGRAMS\POPFile\Run POPFile in background.lnk" \
! "$INSTDIR\wperl.exe" popfile.pl
! CreateShortCut "$SMPROGRAMS\POPFile\Uninstall POPFile.lnk" \
! "$INSTDIR\uninstall.exe"
! SetOutPath $SMPROGRAMS\POPFile
! WriteINIStr "$SMPROGRAMS\POPFile\POPFile User Interface.url" \
! "InternetShortcut" "URL" "http://127.0.0.1:${GUI}/"
! WriteINIStr "$SMPROGRAMS\POPFile\Shutdown POPFile.url" \
! "InternetShortcut" "URL" "http://127.0.0.1:${GUI}/shutdown"
! WriteINIStr "$SMPROGRAMS\POPFile\Manual.url" \
! "InternetShortcut" "URL" "file://$INSTDIR/manual/en/manual.html"
! SetOutPath $SMPROGRAMS\POPFile\Support
! WriteINIStr "$SMPROGRAMS\POPFile\Support\POPFile Home Page.url" \
! "InternetShortcut" "URL" "http://popfile.sourceforge.net/"
! WriteINIStr "$SMPROGRAMS\POPFile\Support\POPFile Manual.url" \
! "InternetShortcut" "URL" "http://popfile.sourceforge.net/manual.html"
!
! StrCmp ${STARTUP} "1" 0 skip_autostart_set
! SetOutPath $SMSTARTUP
! SetOutPath $INSTDIR
! CreateShortCut "$SMSTARTUP\Run POPFile in background.lnk" \
! "$INSTDIR\wperl.exe" popfile.pl
! skip_autostart_set:
!
! SetOutPath $INSTDIR
! Delete $INSTDIR\uninstall.exe
! WriteUninstaller $INSTDIR\uninstall.exe
!
! SectionEnd
!
! Section "Skins" SecSkins
!
! SetOutPath $INSTDIR\skins
! File "..\engine\skins\*.css"
! File "..\engine\skins\*.gif"
!
! SectionEnd
!
! Section "Languages" SecLangs
!
! SetOutPath $INSTDIR\languages
! File "..\engine\languages\*.msg"
!
! SectionEnd
!
! ;--------------------------------
! ;Descriptions
!
! !insertmacro MUI_FUNCTIONS_DESCRIPTION_BEGIN
! !insertmacro MUI_DESCRIPTION_TEXT ${SecPOPFile} $(DESC_SecPOPFile)
! !insertmacro MUI_DESCRIPTION_TEXT ${SecSkins} $(DESC_SecSkins)
! !insertmacro MUI_DESCRIPTION_TEXT ${SecLangs} $(DESC_SecLangs)
! !insertmacro MUI_FUNCTIONS_DESCRIPTION_END
!
! ;--------------------------------
! ;Installer Functions
!
! Function SetOptionsPage
! !insertmacro MUI_HEADER_TEXT "POPFile Installation Options" "Leave these options unchanged unless you need to change them"
! !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioA.ini" "Field 2" "ListItems"
! StrCpy $R5 $R5|${POP3}
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 2" "ListItems" $R5
! !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioA.ini" "Field 4" "ListItems"
! StrCpy $R5 $R5|${GUI}
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 4" "ListItems" $R5
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 2" "State" ${POP3}
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 4" "State" ${GUI}
!
! Push $R0
! InstallOptions::dialog $PLUGINSDIR\ioA.ini
! Pop $R0
! FunctionEnd
!
! ; This function is used to reconfigure Outlook Express accounts
!
! Function SetOutlookExpressPage
!
! ; In Outlook Express (v5.0 or later) the email account data may appear in
! ; more than one place, depending upon how Outlook Express has been configured.
!
! ; First we check the "Main Identity" (also known as the "Default Identity")
! ; which is created when Outlook Express is installed. Note that this identity
! ; may no longer be active, as users are free to delete it after creating
! ; an additional identity and switching to the new one.
!
! ; The Outlook Express "Main Identity" does not use an "identity number"
! StrCpy ${OEIDENT} ""
! Call CheckOutlookExpressAccounts
!
! ; Now we have to check if any additional identities have been created in
! ; Outlook Express. These identities are kept in HKEY_CURRENT_USER\Identities.
! ; If we find any extra identities, we need to see if any of them have email
! ; accounts we can reconfigure for use with POPFile.
!
! StrCpy ${OEID} 0
!
! ; Get the next identity from the registry
!
! next_id:
! EnumRegKey ${ID} HKCU "Identities" ${OEID}
! StrCmp ${ID} "" finished_oe
!
! ; Now check all of the accounts for this particular identity
! StrCpy ${OEIDENT} "Identities\${ID}\"
! Call CheckOutlookExpressAccounts
!
! ; Now move on to the next identity
! IntOp ${OEID} ${OEID} + 1
! goto next_id
!
! finished_oe:
! FunctionEnd
!
! ; This function checks all the accounts for a particular Outlook Express identity
!
! Function CheckOutlookExpressAccounts
!
! ; Called by SetOutLookExpressPage to check all of the accounts for a given
! ; Outlook Express identity: either the "Main Identity", when ${OEIDENT} is
! ; a null string (""), or one of the "Additional Identities", when ${OEIDENT}
! ; is a string such as "Identities\{AB734464-478F-11D7-81C3-00409545B64C}\"
!
! ; The email account data for all identities, although stored in different
! ; locations, uses the same structure. The "path" for each identity starts
! ; with "HKEY_CURRENT_USER\" and ends with "\Internet Account Manager\Accounts".
!
! ; OE account data for each identity appears "under" the path defined above, e.g.
! ; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000001
! ; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000002
! ; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000003
! ; etc
!
! StrCpy $R1 0
!
! ; Get the next set of OE account data for the specified OE Identity
!
! next_acct:
! EnumRegKey ${ACCTID} HKCU "${OEIDENT}Software\Microsoft\Internet Account Manager\Accounts" $R1
! StrCmp ${ACCTID} "" finished_this_id
!
! ; Now extract the POP3 Server, if this does not exist then this account is
! ; not configured for mail so move on
!
! StrCpy $R5 "${OEIDENT}Software\Microsoft\Internet Account Manager\Accounts\${ACCTID}"
! ReadRegStr $R6 HKCU $R5 "POP3 Server"
! StrCmp $R6 "" next_acct_increment
! StrCmp $R6 "127.0.0.1" next_acct_increment
!
! !insertmacro MUI_HEADER_TEXT "Reconfigure Outlook Express" "POPFile can reconfigure Outlook Express for you"
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 2" "State" "0"
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 8" "Text" $R6
! ReadRegStr $R6 HKCU $R5 "SMTP Email Address"
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 7" "Text" $R6
! ReadRegStr $R6 HKCU $R5 "POP3 User Name"
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 9" "Text" $R6
! ReadRegStr $R6 HKCU $R5 "Account Name"
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 10" "Text" $R6
! Push $R0
! InstallOptions::dialog $PLUGINSDIR\ioB.ini
! Pop $R0
!
! StrCmp $R0 "cancel" finished_this_id
! StrCmp $R0 "back" finished_this_id
!
! !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioB.ini" "Field 2" "State"
! StrCmp $R5 "1" change_oe next_acct_increment
!
! change_oe:
! StrCpy $R5 "${OEIDENT}Software\Microsoft\Internet Account Manager\Accounts\${ACCTID}"
! ReadRegStr $R6 HKCU $R5 "POP3 User Name"
! ReadRegStr $R7 HKCU $R5 "POP3 Server"
! WriteRegStr HKCU $R5 "POP3 User Name" "$R7:$R6"
! WriteRegStr HKCU $R5 "POP3 Server" "127.0.0.1"
!
! next_acct_increment:
! IntOp $R1 $R1 + 1
! goto next_acct
!
! finished_this_id:
! FunctionEnd
!
! ;--------------------------------
! ;Uninstaller Section
!
! Section "Uninstall"
!
! IfFileExists $INSTDIR\popfile.pl skip_confirmation
! MessageBox MB_YESNO "It does not appear that POPFile is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)" IDYES skip_confirmation
! Abort "Uninstall aborted by user"
! skip_confirmation:
!
! Delete $SMPROGRAMS\POPFile\Support\*.url
! RMDir $SMPROGRAMS\POPFile\Support
!
! Delete $SMPROGRAMS\POPFile\*.lnk
! Delete $SMPROGRAMS\POPFile\*.url
! Delete "$SMSTARTUP\Run POPFile in background.lnk"
! RMDir $SMPROGRAMS\POPFile
!
! Delete $INSTDIR\*.log
! Delete $INSTDIR\*.pl
! Delete $INSTDIR\*.gif
! Delete $INSTDIR\*.pm
! Delete $INSTDIR\*.exe
! Delete $INSTDIR\*.dll
! Delete $INSTDIR\popfile.cfg
!
! Delete $INSTDIR\Proxy\*.pm
! RMDir $INSTDIR\Proxy
! Delete $INSTDIR\UI\*.pm
! RMDir $INSTDIR\UI
! Delete $INSTDIR\POPFile\*.pm
! RMDir $INSTDIR\POPFile
! Delete $INSTDIR\Classifier\*.pm
! RMDir $INSTDIR\Classifier
! Delete $INSTDIR\Exporter\*.*
! RMDir $INSTDIR\Exporter
! Delete $INSTDIR\skins\*.css
! Delete $INSTDIR\skins\*.gif
! RMDir $INSTDIR\skins
! Delete $INSTDIR\manual\en\*.html
! RMDir $INSTDIR\manual\en
! Delete $INSTDIR\manual\*.gif
! RMDir $INSTDIR\manual
! Delete $INSTDIR\languages\*.msg
! RMDir $INSTDIR\languages
!
! Delete $INSTDIR\MIME\*.*
! RMDir $INSTDIR\MIME
! Delete $INSTDIR\IO\*.*
! Delete $INSTDIR\IO\Socket\*.*
! RMDir /r $INSTDIR\IO
! Delete $INSTDIR\Carp\*.*
! RMDir /r $INSTDIR\Carp
! Delete $INSTDIR\Sys\Hostname\*.*
! RMDir /r $INSTDIR\Sys\Hostname
! RMDir /r $INSTDIR\Sys
! Delete $INSTDIR\Text\*.pm
! RMDir /r $INSTDIR\Text
! Delete $INSTDIR\auto\POSIX\*.*
! Delete $INSTDIR\auto\DynaLoader\*.*
! Delete $INSTDIR\auto\File\Glob\*.*
! Delete $INSTDIR\auto\MIME\Base64\*.*
! Delete $INSTDIR\auto\IO\*.*
! Delete $INSTDIR\auto\Socket\*.*
! Delete $INSTDIR\auto\Sys\*.*
! RMDir /r $INSTDIR\auto
! Delete $INSTDIR\File\*.*
! RMDir $INSTDIR\File
! Delete $INSTDIR\warnings\*.*
! RMDir $INSTDIR\warnings
!
! Delete "$INSTDIR\modern.exe"
! Delete "$INSTDIR\Uninstall.exe"
!
! RMDir $INSTDIR
!
! DeleteRegKey HKLM SOFTWARE\POPFile
!
! ; if $INSTDIR was removed, skip these next ones
! IfFileExists $INSTDIR 0 Removed
! MessageBox MB_YESNO|MB_ICONQUESTION \
! "Do you want to remove all files in your POPFile directory? (If you have anything \
! you created that you want to keep, click No)" IDNO Removed
! Delete $INSTDIR\*.* ; this would be skipped if the user hits no
! RMDir /r $INSTDIR
! IfFileExists $INSTDIR 0 Removed
! MessageBox MB_OK|MB_ICONEXCLAMATION \
! "Note: $INSTDIR could not be removed."
! Removed:
!
! !insertmacro MUI_UNFINISHHEADER
!
! SectionEnd
!
! ;eof
!
|
|
From: <jgr...@us...> - 2003-02-26 01:30:56
|
Update of /cvsroot/popfile/windows
In directory sc8-pr-cvs1:/tmp/cvs-serv16488
Modified Files:
installer.nsi
Log Message:
The installer.nsi file came back from the previous patch with a large number of extra CRLF sequences in it, these have now been removed, but we need to ensure that all checkins do not have CR in them and I will be adding a script to do this automatically
Index: installer.nsi
===================================================================
RCS file: /cvsroot/popfile/windows/installer.nsi,v
retrieving revision 1.25
retrieving revision 1.26
diff -C2 -d -r1.25 -r1.26
*** installer.nsi 26 Feb 2003 01:18:16 -0000 1.25
--- installer.nsi 26 Feb 2003 01:30:52 -0000 1.26
***************
*** 2,13 ****
; Copyright (c) 2001-2003 John Graham-Cumming
;
-
; Modified to work with NSIS v2.0b1
-
!define MUI_PRODUCT "POPFile"
!define MUI_VERSION "0.18.1"
-
!include "MUI.nsh"
-
;--------------------------------
;Configuration
--- 2,9 ----
***************
*** 22,26 ****
!define MUI_CUSTOMPAGECOMMANDS
-
; Support for 20 user variables is provided by NSIS. They recommend using
; variables $0 to $9 as global variables and reserving $R0 to $R9 for
--- 18,21 ----
***************
*** 40,533 ****
;Language
!insertmacro MUI_LANGUAGEFILE_STRING MUI_TEXT_WELCOME_INFO_TEXT "This wizard will guide you through the installation of ${MUI_PRODUCT}.\r\n\r\nIt is recommended that you close all other applications before starting Setup.\r\n\r\n"
! !insertmacro MUI_LANGUAGE "English"
!
! ;General
! OutFile "setup.exe"
!
! ;Install Options pages
!
! ;Header
! LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Install Options Page"
! LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "Options"
!
! ;Page order
! !insertmacro MUI_PAGECOMMAND_WELCOME
! !insertmacro MUI_PAGECOMMAND_COMPONENTS
! !insertmacro MUI_PAGECOMMAND_DIRECTORY
! Page custom SetOptionsPage "Options"
! !insertmacro MUI_PAGECOMMAND_INSTFILES
! Page custom SetOutlookExpressPage "Configure Outlook Express"
! !insertmacro MUI_PAGECOMMAND_FINISH
!
! ;Component-selection page
! ;Descriptions
! LangString DESC_SecPOPFile ${LANG_ENGLISH} "Installs the core files needed by POPFile, including a minimal version of Perl."
! LangString DESC_SecSkins ${LANG_ENGLISH} "Installs POPFile skins that allow you to change the look and feel of the POPFile user interface."
! LangString DESC_SecLangs ${LANG_ENGLISH} "Installs non-English language versions of the POPFile UI."
!
! ;Folder-selection page
! InstallDir "$PROGRAMFILES\${MUI_PRODUCT}"
! InstallDirRegKey HKLM SOFTWARE\POPFile InstallLocation
!
! ;Things that need to be extracted on startup (keep these lines before any File command!)
! ;Only useful for BZIP2 compression
! ;Use ReserveFile for your own Install Options ini files too!
!
! !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
! !insertmacro MUI_RESERVEFILE_WELCOMEFINISHPAGE
! ReserveFile "ioA.ini"
! ReserveFile "ioB.ini"
!
Function .onInit
!
! ; See if we can get the current pop3 and gui port
! ; from an existing configuration
! FileOpen ${CFG} $INSTDIR\popfile.cfg r
!
! loop:
! FileRead ${CFG} ${LNE}
! IfErrors done
!
! StrCpy ${CMPRE} ${LNE} 5
! StrCmp ${CMPRE} "port " got_port not_port
! got_port:
! StrCpy ${POP3} ${LNE} 5 5
! goto loop
!
! not_port:
! StrCpy ${CMPRE} ${LNE} 8
! StrCmp ${CMPRE} "ui_port " got_ui_port loop
! got_ui_port:
! StrCpy ${GUI} ${LNE} 5 8
!
! goto loop
!
! done:
! FileClose ${CFG}
!
! ; If the POP3 port is undefined then default it to 110
! StrCmp ${POP3} "" 0 skip_pop3_set
! StrCpy ${POP3} "110"
! skip_pop3_set:
!
! ; If the GUI port is undefined then default it to 8080
! StrCmp ${GUI} "" 0 skip_gui_set
! StrCpy ${GUI} "8080"
! skip_gui_set:
!
! InitPluginsDir
! File /oname=$PLUGINSDIR\ioA.ini ioA.ini
! File /oname=$PLUGINSDIR\ioB.ini ioB.ini
!
FunctionEnd
!
! ;--------------------------------
! ;Modern UI System
!
!insertmacro MUI_SYSTEM
!
! ;--------------------------------
! ;Installer Sections
!
! Section "POPFile" SecPOPFile
! ; Make this section mandatory (i.e. it is always installed)
! SectionIn RO
!
! ; Retrieve the POP3 and GUI ports from the ini and get whether we install the
! ; POPFile run in the Startup group
! !insertmacro MUI_INSTALLOPTIONS_READ ${POP3} "ioA.ini" "Field 2" "State"
! !insertmacro MUI_INSTALLOPTIONS_READ ${GUI} "ioA.ini" "Field 4" "State"
! !insertmacro MUI_INSTALLOPTIONS_READ ${STARTUP} "ioA.ini" "Field 5" "State"
!
WriteRegStr HKLM SOFTWARE\POPFile InstallLocation $INSTDIR
-
; Install the POPFile Core files
!
! SetOutPath $INSTDIR
! File "..\engine\*.pl"
! File "..\engine\pix.gif"
! File "..\engine\black.gif"
!
! FileOpen ${CFG} $INSTDIR\popfile.cfg a
! FileSeek ${CFG} 0 END
! FileWrite ${CFG} "port ${POP3}$\n"
! FileWrite ${CFG} "ui_port ${GUI}$\n"
! FileClose ${CFG}
!
! SetOutPath $INSTDIR\Classifier
! File "..\engine\Classifier\Bayes.pm"
! File "..\engine\Classifier\WordMangle.pm"
! File "..\engine\Classifier\MailParse.pm"
! SetOutPath $INSTDIR\POPFile
! File "..\engine\POPFile\Logger.pm"
! File "..\engine\POPFile\Configuration.pm"
! SetOutPath $INSTDIR\Proxy
! File "..\engine\Proxy\POP3.pm"
! SetOutPath $INSTDIR\UI
! File "..\engine\UI\HTML.pm"
!
! SetOutPath $INSTDIR\manual
! File "..\engine\manual\*.gif"
! SetOutPath $INSTDIR\manual\en
! File "..\engine\manual\en\*.html"
!
! SetOutPath $INSTDIR\languages
! File "..\engine\languages\English.msg"
!
; Install the Minimal Perl files
!
! SetOutPath $INSTDIR
! File "C:\Perl58\bin\perl.exe"
! File "C:\Perl58\bin\wperl.exe"
! File "C:\Perl58\bin\perl58.dll"
! File "C:\Perl58\lib\AutoLoader.pm"
! File "C:\Perl58\lib\Carp.pm"
! File "C:\Perl58\lib\Config.pm"
! File "C:\Perl58\lib\DynaLoader.pm"
! File "C:\Perl58\lib\Errno.pm"
! File "C:\Perl58\lib\Exporter.pm"
! File "C:\Perl58\lib\IO.pm"
! File "C:\Perl58\lib\integer.pm"
! File "C:\Perl58\lib\locale.pm"
! File "C:\Perl58\lib\POSIX.pm"
! File "C:\Perl58\lib\SelectSaver.pm"
! File "C:\Perl58\lib\Socket.pm"
! File "C:\Perl58\lib\strict.pm"
! File "C:\Perl58\lib\Symbol.pm"
! File "C:\Perl58\lib\vars.pm"
! File "C:\Perl58\lib\warnings.pm"
! File "C:\Perl58\lib\XSLoader.pm"
!
! SetOutPath $INSTDIR\Carp
! File "C:\Perl58\lib\Carp\*"
!
! SetOutPath $INSTDIR\Exporter
! File "C:\Perl58\lib\Exporter\*"
!
! SetOutPath $INSTDIR\MIME
! File "C:\Perl58\lib\MIME\*"
!
! SetOutPath $INSTDIR\IO
! File "C:\Perl58\lib\IO\*"
!
! SetOutPath $INSTDIR\Sys
! File "C:\Perl58\lib\Sys\*"
!
! SetOutPath $INSTDIR\Text
! File "C:\Perl58\lib\Text\ParseWords.pm"
!
! SetOutPath $INSTDIR\IO\Socket
! File "C:\Perl58\lib\IO\Socket\*"
!
! SetOutPath $INSTDIR\auto\DynaLoader
! File "C:\Perl58\lib\auto\DynaLoader\*"
!
! SetOutPath $INSTDIR\auto\File\Glob
! File "C:\Perl58\lib\auto\File\Glob\*"
!
! SetOutPath $INSTDIR\auto\MIME\Base64
! File "C:\Perl58\lib\auto\MIME\Base64\*"
!
! SetOutPath $INSTDIR\auto\IO
! File "C:\Perl58\lib\auto\IO\*"
!
! SetOutPath $INSTDIR\auto\Socket
! File "C:\Perl58\lib\auto\Socket\*"
!
! SetOutPath $INSTDIR\auto\Sys\Hostname
! File "C:\Perl58\lib\auto\Sys\Hostname\*"
!
! SetOutPath $INSTDIR\auto\POSIX
! File "C:\Perl58\lib\auto\POSIX\POSIX.dll"
! File "C:\Perl58\lib\auto\POSIX\autosplit.ix"
! File "C:\Perl58\lib\auto\POSIX\load_imports.al"
!
! SetOutPath $INSTDIR\File
! File "C:\Perl58\lib\File\Glob.pm"
!
! SetOutPath $INSTDIR\warnings
! File "C:\Perl58\lib\warnings\register.pm"
!
; Create the START MENU entries
!
! SetOutPath $SMPROGRAMS\POPFile
! SetOutPath $INSTDIR
! CreateShortCut "$SMPROGRAMS\POPFile\Run POPFile.lnk" \
! "$INSTDIR\perl.exe" popfile.pl
! CreateShortCut "$SMPROGRAMS\POPFile\Run POPFile in background.lnk" \
! "$INSTDIR\wperl.exe" popfile.pl
! CreateShortCut "$SMPROGRAMS\POPFile\Uninstall POPFile.lnk" \
! "$INSTDIR\uninstall.exe"
! SetOutPath $SMPROGRAMS\POPFile
! WriteINIStr "$SMPROGRAMS\POPFile\POPFile User Interface.url" \
! "InternetShortcut" "URL" "http://127.0.0.1:${GUI}/"
! WriteINIStr "$SMPROGRAMS\POPFile\Shutdown POPFile.url" \
! "InternetShortcut" "URL" "http://127.0.0.1:${GUI}/shutdown"
! WriteINIStr "$SMPROGRAMS\POPFile\Manual.url" \
! "InternetShortcut" "URL" "file://$INSTDIR/manual/en/manual.html"
! SetOutPath $SMPROGRAMS\POPFile\Support
! WriteINIStr "$SMPROGRAMS\POPFile\Support\POPFile Home Page.url" \
! "InternetShortcut" "URL" "http://popfile.sourceforge.net/"
! WriteINIStr "$SMPROGRAMS\POPFile\Support\POPFile Manual.url" \
! "InternetShortcut" "URL" "http://popfile.sourceforge.net/manual.html"
!
! StrCmp ${STARTUP} "1" 0 skip_autostart_set
! SetOutPath $SMSTARTUP
! SetOutPath $INSTDIR
! CreateShortCut "$SMSTARTUP\Run POPFile in background.lnk" \
! "$INSTDIR\wperl.exe" popfile.pl
! skip_autostart_set:
!
! SetOutPath $INSTDIR
! Delete $INSTDIR\uninstall.exe
! WriteUninstaller $INSTDIR\uninstall.exe
!
SectionEnd
-
Section "Skins" SecSkins
!
! SetOutPath $INSTDIR\skins
! File "..\engine\skins\*.css"
! File "..\engine\skins\*.gif"
!
SectionEnd
-
Section "Languages" SecLangs
!
! SetOutPath $INSTDIR\languages
! File "..\engine\languages\*.msg"
!
SectionEnd
!
! ;--------------------------------
! ;Descriptions
!
! !insertmacro MUI_FUNCTIONS_DESCRIPTION_BEGIN
! !insertmacro MUI_DESCRIPTION_TEXT ${SecPOPFile} $(DESC_SecPOPFile)
! !insertmacro MUI_DESCRIPTION_TEXT ${SecSkins} $(DESC_SecSkins)
! !insertmacro MUI_DESCRIPTION_TEXT ${SecLangs} $(DESC_SecLangs)
! !insertmacro MUI_FUNCTIONS_DESCRIPTION_END
!
! ;--------------------------------
! ;Installer Functions
!
! Function SetOptionsPage
! !insertmacro MUI_HEADER_TEXT "POPFile Installation Options" "Leave these options unchanged unless you need to change them"
! !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioA.ini" "Field 2" "ListItems"
! StrCpy $R5 $R5|${POP3}
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 2" "ListItems" $R5
! !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioA.ini" "Field 4" "ListItems"
! StrCpy $R5 $R5|${GUI}
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 4" "ListItems" $R5
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 2" "State" ${POP3}
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 4" "State" ${GUI}
!
! Push $R0
! InstallOptions::dialog $PLUGINSDIR\ioA.ini
! Pop $R0
! FunctionEnd
!
; This function is used to reconfigure Outlook Express accounts
-
Function SetOutlookExpressPage
!
! ; In Outlook Express (v5.0 or later) the email account data may appear in
! ; more than one place, depending upon how Outlook Express has been configured.
!
! ; First we check the "Main Identity" (also known as the "Default Identity")
! ; which is created when Outlook Express is installed. Note that this identity
! ; may no longer be active, as users are free to delete it after creating
! ; an additional identity and switching to the new one.
!
! ; The Outlook Express "Main Identity" does not use an "identity number"
! StrCpy ${OEIDENT} ""
! Call CheckOutlookExpressAccounts
!
! ; Now we have to check if any additional identities have been created in
! ; Outlook Express. These identities are kept in HKEY_CURRENT_USER\Identities.
! ; If we find any extra identities, we need to see if any of them have email
! ; accounts we can reconfigure for use with POPFile.
!
! StrCpy ${OEID} 0
!
! ; Get the next identity from the registry
!
! next_id:
! EnumRegKey ${ID} HKCU "Identities" ${OEID}
! StrCmp ${ID} "" finished_oe
!
! ; Now check all of the accounts for this particular identity
! StrCpy ${OEIDENT} "Identities\${ID}\"
! Call CheckOutlookExpressAccounts
!
! ; Now move on to the next identity
! IntOp ${OEID} ${OEID} + 1
! goto next_id
!
! finished_oe:
! FunctionEnd
!
; This function checks all the accounts for a particular Outlook Express identity
-
Function CheckOutlookExpressAccounts
!
! ; Called by SetOutLookExpressPage to check all of the accounts for a given
! ; Outlook Express identity: either the "Main Identity", when ${OEIDENT} is
! ; a null string (""), or one of the "Additional Identities", when ${OEIDENT}
! ; is a string such as "Identities\{AB734464-478F-11D7-81C3-00409545B64C}\"
!
! ; The email account data for all identities, although stored in different
! ; locations, uses the same structure. The "path" for each identity starts
! ; with "HKEY_CURRENT_USER\" and ends with "\Internet Account Manager\Accounts".
!
! ; OE account data for each identity appears "under" the path defined above, e.g.
! ; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000001
! ; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000002
! ; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000003
! ; etc
!
! StrCpy $R1 0
!
! ; Get the next set of OE account data for the specified OE Identity
!
! next_acct:
! EnumRegKey ${ACCTID} HKCU "${OEIDENT}Software\Microsoft\Internet Account Manager\Accounts" $R1
! StrCmp ${ACCTID} "" finished_this_id
!
! ; Now extract the POP3 Server, if this does not exist then this account is
! ; not configured for mail so move on
!
! StrCpy $R5 "${OEIDENT}Software\Microsoft\Internet Account Manager\Accounts\${ACCTID}"
! ReadRegStr $R6 HKCU $R5 "POP3 Server"
! StrCmp $R6 "" next_acct_increment
! StrCmp $R6 "127.0.0.1" next_acct_increment
!
! !insertmacro MUI_HEADER_TEXT "Reconfigure Outlook Express" "POPFile can reconfigure Outlook Express for you"
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 2" "State" "0"
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 8" "Text" $R6
! ReadRegStr $R6 HKCU $R5 "SMTP Email Address"
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 7" "Text" $R6
! ReadRegStr $R6 HKCU $R5 "POP3 User Name"
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 9" "Text" $R6
! ReadRegStr $R6 HKCU $R5 "Account Name"
! !insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 10" "Text" $R6
! Push $R0
! InstallOptions::dialog $PLUGINSDIR\ioB.ini
! Pop $R0
!
! StrCmp $R0 "cancel" finished_this_id
! StrCmp $R0 "back" finished_this_id
!
! !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioB.ini" "Field 2" "State"
! StrCmp $R5 "1" change_oe next_acct_increment
!
! change_oe:
! StrCpy $R5 "${OEIDENT}Software\Microsoft\Internet Account Manager\Accounts\${ACCTID}"
! ReadRegStr $R6 HKCU $R5 "POP3 User Name"
! ReadRegStr $R7 HKCU $R5 "POP3 Server"
! WriteRegStr HKCU $R5 "POP3 User Name" "$R7:$R6"
! WriteRegStr HKCU $R5 "POP3 Server" "127.0.0.1"
!
! next_acct_increment:
! IntOp $R1 $R1 + 1
! goto next_acct
!
! finished_this_id:
! FunctionEnd
!
! ;--------------------------------
! ;Uninstaller Section
!
Section "Uninstall"
!
! IfFileExists $INSTDIR\popfile.pl skip_confirmation
! MessageBox MB_YESNO "It does not appear that POPFile is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)" IDYES skip_confirmation
! Abort "Uninstall aborted by user"
! skip_confirmation:
!
! Delete $SMPROGRAMS\POPFile\Support\*.url
! RMDir $SMPROGRAMS\POPFile\Support
!
! Delete $SMPROGRAMS\POPFile\*.lnk
! Delete $SMPROGRAMS\POPFile\*.url
! Delete "$SMSTARTUP\Run POPFile in background.lnk"
! RMDir $SMPROGRAMS\POPFile
!
! Delete $INSTDIR\*.log
! Delete $INSTDIR\*.pl
! Delete $INSTDIR\*.gif
! Delete $INSTDIR\*.pm
! Delete $INSTDIR\*.exe
! Delete $INSTDIR\*.dll
! Delete $INSTDIR\popfile.cfg
!
! Delete $INSTDIR\Proxy\*.pm
! RMDir $INSTDIR\Proxy
! Delete $INSTDIR\UI\*.pm
! RMDir $INSTDIR\UI
! Delete $INSTDIR\POPFile\*.pm
! RMDir $INSTDIR\POPFile
! Delete $INSTDIR\Classifier\*.pm
! RMDir $INSTDIR\Classifier
! Delete $INSTDIR\Exporter\*.*
! RMDir $INSTDIR\Exporter
! Delete $INSTDIR\skins\*.css
! Delete $INSTDIR\skins\*.gif
! RMDir $INSTDIR\skins
! Delete $INSTDIR\manual\en\*.html
! RMDir $INSTDIR\manual\en
! Delete $INSTDIR\manual\*.gif
! RMDir $INSTDIR\manual
! Delete $INSTDIR\languages\*.msg
! RMDir $INSTDIR\languages
!
! Delete $INSTDIR\MIME\*.*
! RMDir $INSTDIR\MIME
! Delete $INSTDIR\IO\*.*
! Delete $INSTDIR\IO\Socket\*.*
! RMDir /r $INSTDIR\IO
! Delete $INSTDIR\Carp\*.*
! RMDir /r $INSTDIR\Carp
! Delete $INSTDIR\Sys\Hostname\*.*
! RMDir /r $INSTDIR\Sys\Hostname
! RMDir /r $INSTDIR\Sys
! Delete $INSTDIR\Text\*.pm
! RMDir /r $INSTDIR\Text
! Delete $INSTDIR\auto\POSIX\*.*
! Delete $INSTDIR\auto\DynaLoader\*.*
! Delete $INSTDIR\auto\File\Glob\*.*
! Delete $INSTDIR\auto\MIME\Base64\*.*
! Delete $INSTDIR\auto\IO\*.*
! Delete $INSTDIR\auto\Socket\*.*
! Delete $INSTDIR\auto\Sys\*.*
! RMDir /r $INSTDIR\auto
! Delete $INSTDIR\File\*.*
! RMDir $INSTDIR\File
! Delete $INSTDIR\warnings\*.*
! RMDir $INSTDIR\warnings
!
! Delete "$INSTDIR\modern.exe"
! Delete "$INSTDIR\Uninstall.exe"
!
RMDir $INSTDIR
-
DeleteRegKey HKLM SOFTWARE\POPFile
!
! ; if $INSTDIR was removed, skip these next ones
! IfFileExists $INSTDIR 0 Removed
! MessageBox MB_YESNO|MB_ICONQUESTION \
! "Do you want to remove all files in your POPFile directory? (If you have anything \
! you created that you want to keep, click No)" IDNO Removed
! Delete $INSTDIR\*.* ; this would be skipped if the user hits no
! RMDir /r $INSTDIR
! IfFileExists $INSTDIR 0 Removed
! MessageBox MB_OK|MB_ICONEXCLAMATION \
! "Note: $INSTDIR could not be removed."
! Removed:
!
!insertmacro MUI_UNFINISHHEADER
-
SectionEnd
-
;eof
-
--- 35,132 ----
;Language
!insertmacro MUI_LANGUAGEFILE_STRING MUI_TEXT_WELCOME_INFO_TEXT "This wizard will guide you through the installation of ${MUI_PRODUCT}.\r\n\r\nIt is recommended that you close all other applications before starting Setup.\r\n\r\n"
! !insertmacro MUI_LANGUAGE "English"
!
! ;General
OutFile "setup.exe"
;Install Options pages
;Header
LangString TEXT_IO_TITLE ${LANG_ENGLISH} "Install Options Page"
! LangString TEXT_IO_SUBTITLE ${LANG_ENGLISH} "Options"
;Page order
!insertmacro MUI_PAGECOMMAND_WELCOME
!insertmacro MUI_PAGECOMMAND_COMPONENTS
!insertmacro MUI_PAGECOMMAND_DIRECTORY
Page custom SetOptionsPage "Options"
!insertmacro MUI_PAGECOMMAND_INSTFILES
Page custom SetOutlookExpressPage "Configure Outlook Express"
!insertmacro MUI_PAGECOMMAND_FINISH
! ;Component-selection page
;Descriptions
LangString DESC_SecPOPFile ${LANG_ENGLISH} "Installs the core files needed by POPFile, including a minimal version of Perl."
LangString DESC_SecSkins ${LANG_ENGLISH} "Installs POPFile skins that allow you to change the look and feel of the POPFile user interface."
LangString DESC_SecLangs ${LANG_ENGLISH} "Installs non-English language versions of the POPFile UI."
! ;Folder-selection page
InstallDir "$PROGRAMFILES\${MUI_PRODUCT}"
InstallDirRegKey HKLM SOFTWARE\POPFile InstallLocation
;Things that need to be extracted on startup (keep these lines before any File command!)
;Only useful for BZIP2 compression
;Use ReserveFile for your own Install Options ini files too!
! !insertmacro MUI_RESERVEFILE_INSTALLOPTIONS
!insertmacro MUI_RESERVEFILE_WELCOMEFINISHPAGE
ReserveFile "ioA.ini"
ReserveFile "ioB.ini"
Function .onInit
! ; See if we can get the current pop3 and gui port
; from an existing configuration
FileOpen ${CFG} $INSTDIR\popfile.cfg r
! loop:
FileRead ${CFG} ${LNE}
IfErrors done
! StrCpy ${CMPRE} ${LNE} 5
StrCmp ${CMPRE} "port " got_port not_port
got_port:
StrCpy ${POP3} ${LNE} 5 5
goto loop
not_port:
StrCpy ${CMPRE} ${LNE} 8
StrCmp ${CMPRE} "ui_port " got_ui_port loop
got_ui_port:
StrCpy ${GUI} ${LNE} 5 8
goto loop
! done:
FileClose ${CFG}
! ; If the POP3 port is undefined then default it to 110
StrCmp ${POP3} "" 0 skip_pop3_set
StrCpy ${POP3} "110"
skip_pop3_set:
! ; If the GUI port is undefined then default it to 8080
StrCmp ${GUI} "" 0 skip_gui_set
StrCpy ${GUI} "8080"
skip_gui_set:
! InitPluginsDir
File /oname=$PLUGINSDIR\ioA.ini ioA.ini
File /oname=$PLUGINSDIR\ioB.ini ioB.ini
FunctionEnd
! ;--------------------------------
;Modern UI System
!insertmacro MUI_SYSTEM
! ;--------------------------------
;Installer Sections
! Section "POPFile" SecPOPFile
; Make this section mandatory (i.e. it is always installed)
SectionIn RO
! ; Retrieve the POP3 and GUI ports from the ini and get whether we install the
; POPFile run in the Startup group
!insertmacro MUI_INSTALLOPTIONS_READ ${POP3} "ioA.ini" "Field 2" "State"
!insertmacro MUI_INSTALLOPTIONS_READ ${GUI} "ioA.ini" "Field 4" "State"
!insertmacro MUI_INSTALLOPTIONS_READ ${STARTUP} "ioA.ini" "Field 5" "State"
WriteRegStr HKLM SOFTWARE\POPFile InstallLocation $INSTDIR
; Install the POPFile Core files
! SetOutPath $INSTDIR
File "..\engine\*.pl"
File "..\engine\pix.gif"
File "..\engine\black.gif"
FileOpen ${CFG} $INSTDIR\popfile.cfg a
FileSeek ${CFG} 0 END
FileWrite ${CFG} "port ${POP3}$\n"
FileWrite ${CFG} "ui_port ${GUI}$\n"
FileClose ${CFG}
! SetOutPath $INSTDIR\Classifier
File "..\engine\Classifier\Bayes.pm"
File "..\engine\Classifier\WordMangle.pm"
File "..\engine\Classifier\MailParse.pm"
SetOutPath $INSTDIR\POPFile
File "..\engine\POPFile\Logger.pm"
File "..\engine\POPFile\Configuration.pm"
SetOutPath $INSTDIR\Proxy
File "..\engine\Proxy\POP3.pm"
SetOutPath $INSTDIR\UI
File "..\engine\UI\HTML.pm"
! SetOutPath $INSTDIR\manual
File "..\engine\manual\*.gif"
SetOutPath $INSTDIR\manual\en
File "..\engine\manual\en\*.html"
! SetOutPath $INSTDIR\languages
File "..\engine\languages\English.msg"
; Install the Minimal Perl files
! SetOutPath $INSTDIR
File "C:\Perl58\bin\perl.exe"
File "C:\Perl58\bin\wperl.exe"
File "C:\Perl58\bin\perl58.dll"
File "C:\Perl58\lib\AutoLoader.pm"
File "C:\Perl58\lib\Carp.pm"
File "C:\Perl58\lib\Config.pm"
File "C:\Perl58\lib\DynaLoader.pm"
File "C:\Perl58\lib\Errno.pm"
File "C:\Perl58\lib\Exporter.pm"
File "C:\Perl58\lib\IO.pm"
File "C:\Perl58\lib\integer.pm"
File "C:\Perl58\lib\locale.pm"
File "C:\Perl58\lib\POSIX.pm"
File "C:\Perl58\lib\SelectSaver.pm"
File "C:\Perl58\lib\Socket.pm"
File "C:\Perl58\lib\strict.pm"
File "C:\Perl58\lib\Symbol.pm"
File "C:\Perl58\lib\vars.pm"
File "C:\Perl58\lib\warnings.pm"
File "C:\Perl58\lib\XSLoader.pm"
! SetOutPath $INSTDIR\Carp
File "C:\Perl58\lib\Carp\*"
! SetOutPath $INSTDIR\Exporter
File "C:\Perl58\lib\Exporter\*"
! SetOutPath $INSTDIR\MIME
File "C:\Perl58\lib\MIME\*"
! SetOutPath $INSTDIR\IO
File "C:\Perl58\lib\IO\*"
! SetOutPath $INSTDIR\Sys
File "C:\Perl58\lib\Sys\*"
! SetOutPath $INSTDIR\Text
File "C:\Perl58\lib\Text\ParseWords.pm"
! SetOutPath $INSTDIR\IO\Socket
File "C:\Perl58\lib\IO\Socket\*"
! SetOutPath $INSTDIR\auto\DynaLoader
File "C:\Perl58\lib\auto\DynaLoader\*"
SetOutPath $INSTDIR\auto\File\Glob
File "C:\Perl58\lib\auto\File\Glob\*"
! SetOutPath $INSTDIR\auto\MIME\Base64
File "C:\Perl58\lib\auto\MIME\Base64\*"
! SetOutPath $INSTDIR\auto\IO
File "C:\Perl58\lib\auto\IO\*"
! SetOutPath $INSTDIR\auto\Socket
File "C:\Perl58\lib\auto\Socket\*"
! SetOutPath $INSTDIR\auto\Sys\Hostname
File "C:\Perl58\lib\auto\Sys\Hostname\*"
! SetOutPath $INSTDIR\auto\POSIX
File "C:\Perl58\lib\auto\POSIX\POSIX.dll"
File "C:\Perl58\lib\auto\POSIX\autosplit.ix"
File "C:\Perl58\lib\auto\POSIX\load_imports.al"
! SetOutPath $INSTDIR\File
File "C:\Perl58\lib\File\Glob.pm"
! SetOutPath $INSTDIR\warnings
File "C:\Perl58\lib\warnings\register.pm"
; Create the START MENU entries
! SetOutPath $SMPROGRAMS\POPFile
SetOutPath $INSTDIR
CreateShortCut "$SMPROGRAMS\POPFile\Run POPFile.lnk" \
"$INSTDIR\perl.exe" popfile.pl
CreateShortCut "$SMPROGRAMS\POPFile\Run POPFile in background.lnk" \
"$INSTDIR\wperl.exe" popfile.pl
CreateShortCut "$SMPROGRAMS\POPFile\Uninstall POPFile.lnk" \
"$INSTDIR\uninstall.exe"
SetOutPath $SMPROGRAMS\POPFile
WriteINIStr "$SMPROGRAMS\POPFile\POPFile User Interface.url" \
"InternetShortcut" "URL" "http://127.0.0.1:${GUI}/"
WriteINIStr "$SMPROGRAMS\POPFile\Shutdown POPFile.url" \
"InternetShortcut" "URL" "http://127.0.0.1:${GUI}/shutdown"
WriteINIStr "$SMPROGRAMS\POPFile\Manual.url" \
"InternetShortcut" "URL" "file://$INSTDIR/manual/en/manual.html"
SetOutPath $SMPROGRAMS\POPFile\Support
WriteINIStr "$SMPROGRAMS\POPFile\Support\POPFile Home Page.url" \
"InternetShortcut" "URL" "http://popfile.sourceforge.net/"
WriteINIStr "$SMPROGRAMS\POPFile\Support\POPFile Manual.url" \
"InternetShortcut" "URL" "http://popfile.sourceforge.net/manual.html"
! StrCmp ${STARTUP} "1" 0 skip_autostart_set
SetOutPath $SMSTARTUP
SetOutPath $INSTDIR
CreateShortCut "$SMSTARTUP\Run POPFile in background.lnk" \
"$INSTDIR\wperl.exe" popfile.pl
skip_autostart_set:
SetOutPath $INSTDIR
Delete $INSTDIR\uninstall.exe
WriteUninstaller $INSTDIR\uninstall.exe
SectionEnd
Section "Skins" SecSkins
! SetOutPath $INSTDIR\skins
File "..\engine\skins\*.css"
File "..\engine\skins\*.gif"
SectionEnd
Section "Languages" SecLangs
! SetOutPath $INSTDIR\languages
File "..\engine\languages\*.msg"
SectionEnd
! ;--------------------------------
;Descriptions
! !insertmacro MUI_FUNCTIONS_DESCRIPTION_BEGIN
!insertmacro MUI_DESCRIPTION_TEXT ${SecPOPFile} $(DESC_SecPOPFile)
!insertmacro MUI_DESCRIPTION_TEXT ${SecSkins} $(DESC_SecSkins)
!insertmacro MUI_DESCRIPTION_TEXT ${SecLangs} $(DESC_SecLangs)
!insertmacro MUI_FUNCTIONS_DESCRIPTION_END
! ;--------------------------------
;Installer Functions
! Function SetOptionsPage
!insertmacro MUI_HEADER_TEXT "POPFile Installation Options" "Leave these options unchanged unless you need to change them"
!insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioA.ini" "Field 2" "ListItems"
StrCpy $R5 $R5|${POP3}
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 2" "ListItems" $R5
!insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioA.ini" "Field 4" "ListItems"
StrCpy $R5 $R5|${GUI}
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 4" "ListItems" $R5
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 2" "State" ${POP3}
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioA.ini" "Field 4" "State" ${GUI}
! Push $R0
InstallOptions::dialog $PLUGINSDIR\ioA.ini
Pop $R0
FunctionEnd
; This function is used to reconfigure Outlook Express accounts
Function SetOutlookExpressPage
! ; In Outlook Express (v5.0 or later) the email account data may appear in
; more than one place, depending upon how Outlook Express has been configured.
! ; First we check the "Main Identity" (also known as the "Default Identity")
; which is created when Outlook Express is installed. Note that this identity
; may no longer be active, as users are free to delete it after creating
; an additional identity and switching to the new one.
! ; The Outlook Express "Main Identity" does not use an "identity number"
StrCpy ${OEIDENT} ""
Call CheckOutlookExpressAccounts
! ; Now we have to check if any additional identities have been created in
; Outlook Express. These identities are kept in HKEY_CURRENT_USER\Identities.
; If we find any extra identities, we need to see if any of them have email
; accounts we can reconfigure for use with POPFile.
! StrCpy ${OEID} 0
; Get the next identity from the registry
! next_id:
EnumRegKey ${ID} HKCU "Identities" ${OEID}
StrCmp ${ID} "" finished_oe
! ; Now check all of the accounts for this particular identity
StrCpy ${OEIDENT} "Identities\${ID}\"
Call CheckOutlookExpressAccounts
! ; Now move on to the next identity
IntOp ${OEID} ${OEID} + 1
goto next_id
! finished_oe:
FunctionEnd
; This function checks all the accounts for a particular Outlook Express identity
Function CheckOutlookExpressAccounts
! ; Called by SetOutLookExpressPage to check all of the accounts for a given
; Outlook Express identity: either the "Main Identity", when ${OEIDENT} is
; a null string (""), or one of the "Additional Identities", when ${OEIDENT}
; is a string such as "Identities\{AB734464-478F-11D7-81C3-00409545B64C}\"
! ; The email account data for all identities, although stored in different
; locations, uses the same structure. The "path" for each identity starts
; with "HKEY_CURRENT_USER\" and ends with "\Internet Account Manager\Accounts".
! ; OE account data for each identity appears "under" the path defined above, e.g.
; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000001
; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000002
; HKEY_CURRENT_USER\...\Internet Account Manager\Accounts\00000003
; etc
! StrCpy $R1 0
; Get the next set of OE account data for the specified OE Identity
! next_acct:
EnumRegKey ${ACCTID} HKCU "${OEIDENT}Software\Microsoft\Internet Account Manager\Accounts" $R1
StrCmp ${ACCTID} "" finished_this_id
! ; Now extract the POP3 Server, if this does not exist then this account is
; not configured for mail so move on
StrCpy $R5 "${OEIDENT}Software\Microsoft\Internet Account Manager\Accounts\${ACCTID}"
ReadRegStr $R6 HKCU $R5 "POP3 Server"
StrCmp $R6 "" next_acct_increment
StrCmp $R6 "127.0.0.1" next_acct_increment
! !insertmacro MUI_HEADER_TEXT "Reconfigure Outlook Express" "POPFile can reconfigure Outlook Express for you"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 2" "State" "0"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 8" "Text" $R6
ReadRegStr $R6 HKCU $R5 "SMTP Email Address"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 7" "Text" $R6
ReadRegStr $R6 HKCU $R5 "POP3 User Name"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 9" "Text" $R6
ReadRegStr $R6 HKCU $R5 "Account Name"
!insertmacro MUI_INSTALLOPTIONS_WRITE "ioB.ini" "Field 10" "Text" $R6
Push $R0
InstallOptions::dialog $PLUGINSDIR\ioB.ini
Pop $R0
StrCmp $R0 "cancel" finished_this_id
StrCmp $R0 "back" finished_this_id
! !insertmacro MUI_INSTALLOPTIONS_READ $R5 "ioB.ini" "Field 2" "State"
StrCmp $R5 "1" change_oe next_acct_increment
! change_oe:
StrCpy $R5 "${OEIDENT}Software\Microsoft\Internet Account Manager\Accounts\${ACCTID}"
ReadRegStr $R6 HKCU $R5 "POP3 User Name"
ReadRegStr $R7 HKCU $R5 "POP3 Server"
WriteRegStr HKCU $R5 "POP3 User Name" "$R7:$R6"
WriteRegStr HKCU $R5 "POP3 Server" "127.0.0.1"
! next_acct_increment:
IntOp $R1 $R1 + 1
goto next_acct
! finished_this_id:
FunctionEnd
! ;--------------------------------
;Uninstaller Section
Section "Uninstall"
! IfFileExists $INSTDIR\popfile.pl skip_confirmation
MessageBox MB_YESNO "It does not appear that POPFile is installed in the directory '$INSTDIR'.$\r$\nContinue anyway (not recommended)" IDYES skip_confirmation
Abort "Uninstall aborted by user"
skip_confirmation:
! Delete $SMPROGRAMS\POPFile\Support\*.url
RMDir $SMPROGRAMS\POPFile\Support
! Delete $SMPROGRAMS\POPFile\*.lnk
Delete $SMPROGRAMS\POPFile\*.url
Delete "$SMSTARTUP\Run POPFile in background.lnk"
RMDir $SMPROGRAMS\POPFile
! Delete $INSTDIR\*.log
Delete $INSTDIR\*.pl
Delete $INSTDIR\*.gif
Delete $INSTDIR\*.pm
Delete $INSTDIR\*.exe
Delete $INSTDIR\*.dll
Delete $INSTDIR\popfile.cfg
Delete $INSTDIR\Proxy\*.pm
RMDir $INSTDIR\Proxy
Delete $INSTDIR\UI\*.pm
RMDir $INSTDIR\UI
Delete $INSTDIR\POPFile\*.pm
RMDir $INSTDIR\POPFile
Delete $INSTDIR\Classifier\*.pm
RMDir $INSTDIR\Classifier
Delete $INSTDIR\Exporter\*.*
RMDir $INSTDIR\Exporter
Delete $INSTDIR\skins\*.css
Delete $INSTDIR\skins\*.gif
RMDir $INSTDIR\skins
Delete $INSTDIR\manual\en\*.html
RMDir $INSTDIR\manual\en
Delete $INSTDIR\manual\*.gif
RMDir $INSTDIR\manual
Delete $INSTDIR\languages\*.msg
RMDir $INSTDIR\languages
! Delete $INSTDIR\MIME\*.*
RMDir $INSTDIR\MIME
Delete $INSTDIR\IO\*.*
Delete $INSTDIR\IO\Socket\*.*
RMDir /r $INSTDIR\IO
Delete $INSTDIR\Carp\*.*
RMDir /r $INSTDIR\Carp
Delete $INSTDIR\Sys\Hostname\*.*
RMDir /r $INSTDIR\Sys\Hostname
RMDir /r $INSTDIR\Sys
Delete $INSTDIR\Text\*.pm
RMDir /r $INSTDIR\Text
Delete $INSTDIR\auto\POSIX\*.*
Delete $INSTDIR\auto\DynaLoader\*.*
Delete $INSTDIR\auto\File\Glob\*.*
Delete $INSTDIR\auto\MIME\Base64\*.*
Delete $INSTDIR\auto\IO\*.*
Delete $INSTDIR\auto\Socket\*.*
Delete $INSTDIR\auto\Sys\*.*
RMDir /r $INSTDIR\auto
Delete $INSTDIR\File\*.*
RMDir $INSTDIR\File
Delete $INSTDIR\warnings\*.*
RMDir $INSTDIR\warnings
Delete "$INSTDIR\modern.exe"
Delete "$INSTDIR\Uninstall.exe"
RMDir $INSTDIR
DeleteRegKey HKLM SOFTWARE\POPFile
! ; if $INSTDIR was removed, skip these next ones
IfFileExists $INSTDIR 0 Removed
MessageBox MB_YESNO|MB_ICONQUESTION \
"Do you want to remove all files in your POPFile directory? (If you have anything \
you created that you want to keep, click No)" IDNO Removed
Delete $INSTDIR\*.* ; this would be skipped if the user hits no
RMDir /r $INSTDIR
IfFileExists $INSTDIR 0 Removed
MessageBox MB_OK|MB_ICONEXCLAMATION \
"Note: $INSTDIR could not be removed."
Removed:
!insertmacro MUI_UNFINISHHEADER
SectionEnd
;eof
|
|
From: <jgr...@us...> - 2003-02-26 01:18:23
|
Update of /cvsroot/popfile/windows In directory sc8-pr-cvs1:/tmp/cvs-serv12450 Modified Files: installer.nsi Log Message: Merge patch 691405 that improves the splash screen of the installer so that it does not mention system files since we don't touch system files Index: installer.nsi =================================================================== RCS file: /cvsroot/popfile/windows/installer.nsi,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** installer.nsi 25 Feb 2003 01:48:51 -0000 1.24 --- installer.nsi 26 Feb 2003 01:18:16 -0000 1.25 *************** *** 1,532 **** ! ; ! ; Copyright (c) 2001-2003 John Graham-Cumming ! ; ! ! ; Modified to work with NSIS v2.0b1 ! ! !define MUI_PRODUCT "POPFile" ! !define MUI_VERSION "0.18.1" ! ! !include "MUI.nsh" [...1036 lines suppressed...] ! DeleteRegKey HKLM SOFTWARE\POPFile ! ! ; if $INSTDIR was removed, skip these next ones ! IfFileExists $INSTDIR 0 Removed ! MessageBox MB_YESNO|MB_ICONQUESTION \ ! "Do you want to remove all files in your POPFile directory? (If you have anything \ ! you created that you want to keep, click No)" IDNO Removed ! Delete $INSTDIR\*.* ; this would be skipped if the user hits no ! RMDir /r $INSTDIR ! IfFileExists $INSTDIR 0 Removed ! MessageBox MB_OK|MB_ICONEXCLAMATION \ ! "Note: $INSTDIR could not be removed." ! Removed: ! ! !insertmacro MUI_UNFINISHHEADER ! ! SectionEnd ! ! ;eof ! |
|
From: <sta...@us...> - 2003-02-26 00:26:08
|
Update of /cvsroot/popfile/engine/skins
In directory sc8-pr-cvs1:/tmp/cvs-serv24364
Modified Files:
SimplyBlue.css
Log Message:
skin code cleanup by D. Smith -- see forum msg. # 1899204 for details -- fonts relatively-sized
Index: SimplyBlue.css
===================================================================
RCS file: /cvsroot/popfile/engine/skins/SimplyBlue.css,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** SimplyBlue.css 19 Feb 2003 21:31:08 -0000 1.4
--- SimplyBlue.css 26 Feb 2003 00:26:04 -0000 1.5
***************
*** 1,158 ****
body {
! background-color: #FFFFFF;
! font-family: sans-serif;
! margin: 10px 20px 20px 20px;
! color: #000000;
}
! .shell, .shellTop {
! background-color: #bcd5ea;
! border: 3px #88b5dd solid;
! border-style: groove;
! border-color: #FFFFFF;
! border-width: 2px;
! margin: 0px 0px 0px 0px;
! color: #000000;
}
! table.head {
! width: 100%;
}
! td.head {
! font-weight: normal;
! font-size: 22pt;
}
! .menu {
! font-size: 14pt;
! font-weight: bold;
! width: 100%;
}
! .menuSelected {
! background-color: #88b5dd;
! width: 14%;
! border-color: #ffffff;
! border-style: groove groove none groove;
! border-width: 2px;
! color: #000000;
}
! .menuStandard {
! background-color: #bcd5ea;
! width: 14%;
! border-color: #ffffff;
! border-style: groove groove none groove;
! border-width: 2px;
! color: #000000;
}
! .menuIndent {
! width: 8%;
}
! hr {
! color: #88b5dd;
! background-color: transparent;
}
! a.changeSettingLink {
! background-color: transparent;
! color: blue;
}
! a:link {
! color: #000000;
! background-color: transparent;
! text-decoration: underline;
! }
! a:visited {
! color: #333333;
! background-color: transparent;
! text-decoration: underline;
! }
! a:hover {
! color: #000000;
! background-color: transparent;
! text-decoration: none;
! }
! tr.rowEven {
! background-color: #bcd5ea;
! color: #000000;
}
! tr.rowOdd {
! background-color: #88b5dd;
! color: #000000;
}
! tr.rowHighlighted {
! background-color: #29abff;
! color: #eeeeee;
}
! table.footer {
! width: 100%;
}
table.settingsTable {
! border: 1px solid #88b5dd;
}
! table.openMessageTable, table.lookupResultsTable {
! border: 3px solid #88b5dd;
}
td.openMessageCloser {
! text-align: right;
}
td.openMessageBody {
! text-align: left;
}
! td.settingsPanel {
! border: 1px solid #88b5dd;
}
! td.naked {
! padding: 0px;
! margin: 0px;
! border: none
}
td.accuracy0to49 {
! background-color: red;
! color: black;
}
td.accuracy50to93 {
! background-color: yellow;
! color: black;
}
!
td.accuracy94to100 {
! background-color: green;
! color: black;
}
! div.error01 {
! background-color: transparent;
! color: red;
! font-size: larger;
! }
!
! div.error02 {
! background-color: transparent;
! color: red;
}
! span.graphFont {
! font-size: x-small;
! }
.historyLabel {
--- 1,174 ----
+ /*********************************************************/
+ /* Main Body */
+
body {
! color: #000000;
! background-color: #ffffff;
! font-family: sans-serif;
! font-size: 100%;
! margin: 10px 20px 20px 20px;
}
! /*********************************************************/
! /* General element settings */
!
! hr {
! color: #88b5dd;
! background-color: transparent;
}
! a:link {
! color: #000000;
! background-color: transparent;
! text-decoration: underline;
}
! a:visited {
! color: #333333;
! background-color: transparent;
! text-decoration: underline;
}
! a:hover {
! color: #000000;
! background-color: transparent;
! text-decoration: none;
}
! /*********************************************************/
! /* Shell structure */
!
! .shell, .shellTop {
! color: #000000;
! background-color: #bcd5ea;
! /*order: 3px #88b5dd solid; */
! border: 2px #ffffff groove;
! margin: 0;
}
! td.naked {
! padding: 0px;
! margin: 0px;
! border: none
}
! table.head {
! width: 100%;
}
! td.head {
! font-weight: normal;
! font-size: 1.8em;
}
! table.footer {
! width: 100%;
}
! td.footerBody {
! text-align: center;
! }
! td.logo2menuSpace {
! height: 0.8em;
! }
! /*********************************************************/
! /* Menu Settings */
! .menu {
! font-size: 1.2em;
! font-weight: bold;
! width: 100%;
}
! .menuSelected {
! color: #000000;
! background-color: #88b5dd;
! width: 14%;
! border-color: #ffffff;
! border-style: groove groove none groove;
! border-width: 2px;
}
! .menuStandard {
! color: #000000;
! background-color: #bcd5ea;
! width: 14%;
! border-color: #ffffff;
! border-style: groove groove none groove;
! border-width: 2px;
}
! .menuIndent {
! width: 8%;
}
+ /*********************************************************/
+ /* Table Settings */
+
table.settingsTable {
! border: 1px solid #88b5dd;
}
! td.settingsPanel {
! border: 1px solid #88b5dd;
! }
!
! table.openMessageTable {
! border: 3px solid #88b5dd;
}
td.openMessageCloser {
! text-align: right;
}
td.openMessageBody {
! text-align: left;
}
! tr.rowEven {
! background-color: #bcd5ea;
! color: #000000;
}
! tr.rowOdd {
! background-color: #88b5dd;
! color: #000000;
}
+ tr.rowHighlighted {
+ background-color: #29abff;
+ color: #eeeeee;
+ }
+
+ table.lookupResultsTable {
+ border: 3px solid #88b5dd;
+ }
+
+ /*********************************************************/
+ /* Graphics */
+
td.accuracy0to49 {
! background-color: red;
! color: black;
}
td.accuracy50to93 {
! background-color: yellow;
! color: black;
}
!
td.accuracy94to100 {
! background-color: green;
! color: black;
}
! span.graphFont {
! font-size: x-small;
}
! /*********************************************************/
! /* Form Labels */
.historyLabel {
***************
*** 166,234 ****
.bucketsLabel {
! font-weight: bold;
}
.magnetsLabel {
! font-weight: bold;
}
.securityLabel {
! font-weight: bold;
}
.configurationLabel {
! font-weight: bold;
}
-
.advancedLabel {
! font-weight: bold;
}
!
.passwordLabel {
! font-weight: bold;
}
.sessionLabel {
! font-weight: bold;
}
! td.logo2menuSpace {
! height: 0.8em;
}
! td.footerBody {
! text-align: center;
! }
!
table.historyWidgetsTop {
! width: 100%;
! margin-left: 1.5em;
! margin-top: 0.6em;
! margin-bottom: 1.0em;
}
table.historyWidgetsBottom {
! width: 100%;
! margin-top: 0.6em;
}
td.historyNavigatorTop {
! text-align: right;
}
td.historyNavigatorBottom {
! text-align: right;
}
! span.bucketsWidgetState {
! font-weight: bold;
}
! span.configWidgetState {
! font-weight: bold;
}
- span.securityWidgetState {
- font-weight: bold;
- }
\ No newline at end of file
--- 182,259 ----
.bucketsLabel {
! font-weight: bold;
}
.magnetsLabel {
! font-weight: bold;
}
.securityLabel {
! font-weight: bold;
}
.configurationLabel {
! font-weight: bold;
}
.advancedLabel {
! font-weight: bold;
}
!
.passwordLabel {
! font-weight: bold;
}
.sessionLabel {
! font-weight: bold;
}
! .bucketsWidgetStateOn, .bucketsWidgetStateOff {
! font-weight: bold;
}
! .configWidgetStateOn, .configWidgetStateOff {
! font-weight: bold;
! }
!
! .securityWidgetStateOn, .securityWidgetStateOff {
! font-weight: bold;
! }
!
! /*********************************************************/
! /* Positioning */
!
table.historyWidgetsTop {
! width: 100%;
! margin-left: 1.5em;
! margin-top: 0.6em;
! margin-bottom: 1.0em;
}
table.historyWidgetsBottom {
! width: 100%;
! margin-top: 0.6em;
}
td.historyNavigatorTop {
! text-align: right;
}
td.historyNavigatorBottom {
! text-align: right;
}
! /*********************************************************/
! /* Errors */
!
! div.error01 {
! background-color: transparent;
! color: red;
! font-size: larger;
}
! div.error02 {
! background-color: transparent;
! color: red;
}
|
|
From: <sta...@us...> - 2003-02-25 23:52:08
|
Update of /cvsroot/popfile/engine/skins
In directory sc8-pr-cvs1:/tmp/cvs-serv10993
Modified Files:
smallgrey.css
Log Message:
updates by P. Karlin for 0.18.1 - uses new classes, works better at small sizes - patch # 692933
Index: smallgrey.css
===================================================================
RCS file: /cvsroot/popfile/engine/skins/smallgrey.css,v
retrieving revision 1.4
retrieving revision 1.5
diff -C2 -d -r1.4 -r1.5
*** smallgrey.css 20 Feb 2003 10:37:25 -0000 1.4
--- smallgrey.css 25 Feb 2003 23:52:05 -0000 1.5
***************
*** 1,4 ****
H2 {
! font-size: 14pt;
font-weight: normal;
}
--- 1,4 ----
H2 {
! font-size: 170%;
font-weight: normal;
}
***************
*** 8,12 ****
border: none;
font-family: tahoma, sans-serif;
! font-size: 8pt;
font-weight: normal;
color: #000000;
--- 8,12 ----
border: none;
font-family: tahoma, sans-serif;
! font-size: 66%;
font-weight: normal;
color: #000000;
***************
*** 21,25 ****
}
! .top, .bottom, .borderTopLeft, .borderTop, .borderTopRight, .borderLeft, .borderRight, .borderBottomLeft, .borderBottom, .borderBottomRight {
visibility: hidden;
display: none;
--- 21,35 ----
}
! .shutdownLink {
! color: #990000;
! background-color: inherit;
! text-decoration: none;
! }
!
! .shutdownLink:hover {
! text-decoration: underline;
! }
!
! .shellTopRow, .shellLeft, .shellBottomRow, .shellRight {
visibility: hidden;
display: none;
***************
*** 28,32 ****
.head, td.head {
font-weight: bold;
! font-size: 14pt;
background-color: #eeeeee;
color: #666666;
--- 38,42 ----
.head, td.head {
font-weight: bold;
! font-size: 140%;
background-color: #eeeeee;
color: #666666;
***************
*** 36,52 ****
.shell, .shellTop {
border: 2px #cccccc solid;
- background-color: #ffffff;
- color: #000000;
margin: 0px;
padding: 0px;
}
.head a {
! font-size: 12pt;
font-weight: normal;
}
.menu {
! font-size: 12pt;
font-weight: normal;
width: 100%;
--- 46,70 ----
.shell, .shellTop {
border: 2px #cccccc solid;
margin: 0px;
padding: 0px;
}
+ .shell {
+ color: #000000;
+ background-color: #ffffff;
+ }
+
+ .shellTop {
+ color: #000000;
+ background-color: #eeeeee;
+ }
+
.head a {
! font-size: 120%;
font-weight: normal;
}
.menu {
! font-size: 120%;
font-weight: normal;
width: 100%;
***************
*** 60,64 ****
background-color: #cccccc;
color: #000000;
! font-size: 14pt;
font-weight: normal;
text-decoration: none;
--- 78,82 ----
background-color: #cccccc;
color: #000000;
! font-size: 123%;
font-weight: normal;
text-decoration: none;
***************
*** 79,83 ****
background-color: #efefef;
color: #0000ff;
! font-size: 14pt;
font-weight: normal;
text-decoration: none;
--- 97,101 ----
background-color: #efefef;
color: #0000ff;
! font-size: 123%;
font-weight: normal;
text-decoration: none;
***************
*** 118,121 ****
--- 136,162 ----
}
+ .colorChooserImg {
+ height: 100%;
+ width: 0.7em;
+ }
+
+ .colorChooserTable a:hover {
+ background-color: transparent;
+ color: inherit;
+ }
+
+ .bucketsTable td {
+ border-top: 1px solid #ffffff;
+ border-bottom: 1px solid #ffffff;
+ }
+
+ table.bucketsTable {
+ margin: 3px;
+ }
+
+ .lineImg {
+ width: 4px;
+ }
+
tr.rowHighlighted {
background-color: #ffffcc;
***************
*** 123,130 ****
}
! table.settingsTable {
border: 1px solid #cccccc;
padding: 3px;
! margin: 0px;
}
--- 164,175 ----
}
! table.settingsTable, td.settingsPanel {
border: 1px solid #cccccc;
padding: 3px;
! margin: 2px;
! }
!
! .settingsPanel form {
! padding-top: 8px;
}
***************
*** 135,148 ****
}
- td.settingsPanel {
- border: 1px solid #cccccc;
- padding: 3px;
- margin: 0px;
- }
-
td.naked {
padding: 0px;
margin: 0px;
! border: none
}
--- 180,187 ----
}
td.naked {
padding: 0px;
margin: 0px;
! border: none;
}
***************
*** 192,201 ****
}
! .historyLabel {
! font-weight: normal;
! font-size: 9pt;
text-decoration: none;
- padding-left: 1px;
- padding-right: 2px;
}
--- 231,238 ----
}
! .historyLabel, .historyLabel a {
! font-weight: bold;
! font-size: 110%;
text-decoration: none;
}
***************
*** 203,209 ****
font-weight: bold;
font-style: normal;
}
! a.historyLabel:hover {
text-decoration: underline;
}
--- 240,248 ----
font-weight: bold;
font-style: normal;
+ color: #000000;
+ background-color: #ffffcc;
}
! .historyLabel a:hover {
text-decoration: underline;
}
***************
*** 241,249 ****
border-top: 2px solid #cccccc;
border-bottom: 2px solid #cccccc;
}
! table.historyWidgetsTop td {
! padding-left: 20px;
! font-weight: bold;
}
--- 280,293 ----
border-top: 2px solid #cccccc;
border-bottom: 2px solid #cccccc;
+ text-align: center;
}
! form {
! margin-top: 5px;
! margin-bottom: 5px;
! }
!
! .historyWidgetsTop .submit {
! margin-right: 1.5em;
}
***************
*** 254,258 ****
table.historyWidgetsBottom td {
! padding-left: 20px;
font-weight: bold;
}
--- 298,302 ----
table.historyWidgetsBottom td {
! padding-left: 1em;
font-weight: bold;
}
***************
*** 269,275 ****
td.footerBody {
text-align: center;
! padding-left: 5%;
! padding-right: 5%;
! font-size: 8pt;
font-weight: bold;
}
--- 313,319 ----
td.footerBody {
text-align: center;
! padding-left: 1%;
! padding-right: 1%;
! font-size: 100%;
font-weight: bold;
}
***************
*** 286,290 ****
input, .submit, select {
font-family: tahoma, sans-serif;
! font-size: 8pt;
font-weight: normal;
padding: 0px;
--- 330,334 ----
input, .submit, select {
font-family: tahoma, sans-serif;
! font-size: 100%;
font-weight: normal;
padding: 0px;
***************
*** 294,310 ****
tt {
font-family: "lucida console", courier, sans-serif;
! font-size: 9pt;
font-weight: normal;
}
! span.bucketsWidgetState {
font-weight: bold;
}
! span.configWidgetState {
font-weight: bold;
}
! span.securityWidgetState {
font-weight: bold;
! }
\ No newline at end of file
--- 338,394 ----
tt {
font-family: "lucida console", courier, sans-serif;
! font-size: 105%;
font-weight: normal;
}
! span.bucketsWidgetStateOn {
font-weight: bold;
}
! span.configWidgetStateOn {
font-weight: bold;
}
! span.securityWidgetStateOn {
font-weight: bold;
! }
!
! span.bucketsWidgetStateOff {
! background-color: inherit;
! color: #666666;
! }
!
! span.configWidgetStateOff {
! background-color: inherit;
! color: #666666;
! }
!
! span.securityWidgetStateOff {
! background-color: inherit;
! color: #666666;
! }
!
! .toggleOn {
! background-color: #dddddd;
! color: #000000;
! }
!
! .toggleOff {
! background-color: #bbbbbb;
! color: #000000;
! }
!
! .bucketsTable input {
! font-size: 90%;
! border: 1px;
! }
!
! button, .submit, .reclassifyButton {
! background-color: #dddddd;
! color: #000000;
! }
!
! .deleteButton, .historyWidgetsBottom .submit {
! background-color: #bbbbbb;
! color: #000000;
! }
|
|
From: <jgr...@us...> - 2003-02-25 22:17:43
|
Update of /cvsroot/popfile/engine
In directory sc8-pr-cvs1:/tmp/cvs-serv32719
Modified Files:
popfile.pl
Log Message:
Check that the pipe handle is valid in pipeready
Index: popfile.pl
===================================================================
RCS file: /cvsroot/popfile/engine/popfile.pl,v
retrieving revision 1.203
retrieving revision 1.204
diff -C2 -d -r1.203 -r1.204
*** popfile.pl 24 Feb 2003 23:08:45 -0000 1.203
--- popfile.pl 25 Feb 2003 22:17:40 -0000 1.204
***************
*** 101,104 ****
--- 101,110 ----
my ( $pipe ) = @_;
+ # Check that the $pipe is still a valid handle
+
+ if ( !defined( $pipe ) ) {
+ return 0;
+ }
+
if ( $on_windows ) {
|
|
From: <sta...@us...> - 2003-02-25 20:45:47
|
Update of /cvsroot/popfile/engine/skins
In directory sc8-pr-cvs1:/tmp/cvs-serv24291
Added Files:
StrawberryRose.css
Log Message:
new skin by David Smith
--- NEW FILE: StrawberryRose.css ---
/*********************************************************/
/* da Big Kahuna */
body {
background-color: #FAC;
border: none;
font-family: verdana, arial, sans-serif;
color: black;
font-size: 80%;
margin: 10px 20px 20px 20px;
}
/*********************************************************/
/* General element settings */
h2 {
font-family: verdana, arial, sans-serif;
font-size: 1.2em;
font-weight: bold;
color: #000000;
background-color: transparent;
}
hr {
color: black;
background-color: black;
}
th {
font-family: verdana, arial, sans-serif;
font-weight: normal;
}
td {
font-family: verdana, arial, sans-serif;
}
/* An undecorated table cell - center of shell tables */
td.naked {
padding: 0;
margin: 0;
border: none
}
/* Text input and drop-down selections */
input, select {
color: #000000;
background-color: #F2F0F0;
border: 1px #000000 solid;
font-weight: bold;
font-family: verdana, arial, sans-serif;
}
/* Checkboxes */
.checkbox {
color: #000000;
background-color: transparent;
border: 0;
}
/*********************************************************/
/* Button settings */
/* All buttons */
.submit, .toggleOn, .toggleOff, .reclassifyButton, .deleteButton, .undoButton {
color: #FFFFFF;
font-weight: bold;
font-family: verdana, arial, sans-serif;
padding-left:0;
padding-right:0;
}
.submit:active, .toggleOn:active, .toggleOff:active, .reclassifyButton:active,
.deleteButton:active, .undoButton:active {
color: #FFFFFF;
}
/* Basic Buttons (input tags with class "submit") */
.submit {
background-color: rgb(135,7,1);
border: 2px gray outset;
}
.submit:active {
background-color: rgb(135,7,1);
border: 2px gray inset;
}
/* Toggle Buttons */
.toggleOn {
background-color: green;
border: 2px gray outset;
}
.toggleOn:active {
background-color: green;
border: 2px gray inset;
}
.toggleOff {
background-color: rgb(223,32,32);
border: 2px gray outset;
}
.toggleOff:active {
background-color: rgb(223,32,32);
border: 2px gray inset;
}
/* Delete buttons */
.deleteButton {
background-color: rgb(135,7,1);
border: 2px gray outset;
}
.deleteButton:active {
background-color: rgb(135,7,1);
border: 2px gray inset;
}
/* Undo buttons */
.undoButton {
background-color: rgb(0,0,200);
border: 2px gray outset;
}
.undoButton:active {
background-color: rgb(0,0,200);
border: 2px gray inset;
}
.reclassifyButton {
background-color: rgb(0,0,255);
border: 2px gray outset;
}
.reclassifyButton:active {
background-color: rgb(0,0,255);
border: 2px gray inset;
}
/* *** Button Fixes *** */
/* Fix width of security toggle buttons for IE */
.securitySwitch .toggleOn {
width: 9em;
}
.securitySwitch .toggleOff {
width: 9em;
}
/* Reverse the color for these specific buttons */
#securityAcceptPOP3Off {
color: #FFFFFF;
background-color: green;
width: 17em;
}
#securityAcceptPOP3On {
color: #FFFFFF;
background-color: rgb(223,32,32);
}
#securityAcceptHTTPOff {
color: #FFFFFF;
background-color: green;
width: 17em;
}
#securityAcceptHTTPOn {
color: #FFFFFF;
background-color: rgb(223,32,32);
}
/*********************************************************/
/* Global link rules */
:link, :visited {
text-decoration: none;
}
:link:focus, :visited:focus {
color: #000000;
background-color: #DB6479;
}
:link {
color: #000000;
background-color: transparent;
}
:visited {
color: #000000;
background-color: transparent;
}
:link:hover, :visited:hover {
color: #000000;
background-color: #DB6479;
}
:link:active, :visited:active {
color: #000000;
background-color: #DB6479;
}
/*********************************************************/
/* Custom Link Rules */
/* The big Shutdown link */
.shutdownLink {
font-weight: bold;
color: black;
background-color: transparent;
}
/* For links in the menu tabs */
.menuLink {
font-weight:bold;
color: black;
background-color: transparent;
display: block;
width: 100%;
}
/* For column headers (for sorting) on the History page */
.historyLabel :link:focus, .historyLabel :visited:focus {
color: #630601;
background-color: #FFAACC;
}
.historyLabel :link {
color: #630601;
background-color: #DB6479;
}
.historyLabel :visited {
color: #630601;
background-color: #DB6479;
}
.historyLabel :link:hover, .historyLabel :visited:hover {
color: #630601;
background-color: #FFAACC;
}
.historyLabel :link:active, .historyLabel :visited:active {
color: #630601;
background-color: #FFAACC;
}
/* For the navigation pages on the History page */
td.historyNavigatorTop :link, td.historyNavigatorBottom :link,
td.historyNavigatorTop :visited, td.historyNavigatorBottom :visited {
color: rgb(99, 6, 1);
background-color: rgb(220, 90, 110);
}
td.historyNavigatorTop :link:hover, td.historyNavigatorBottom :link:hover,
td.historyNavigatorTop :visited:hover, td.historyNavigatorBottom :visited:hover {
color: rgb(99, 6, 1);
background-color: rgb(255, 170, 204);
}
/* For viewing messages on the History page */
.messageLink {
text-decoration: underline;
}
/* To prevent the background color from overriding the color in the color picker table */
.colorChooserLink:link:focus, .colorChooserLink:visited:focus {
color: black;
background-color: transparent;
}
.colorChooserLink:link:hover, .colorChooserLink:visited:hover {
color: black;
background-color: transparent;
}
.colorChooserLink:link:active, .colorChooserLink:visited:active {
color: black;
background-color: transparent;
}
/* For wordlist page */
.wordListLink:link:hover, .wordListLink:visited:hover {
color: black;
background-color: #FFAACC;
}
/*********************************************************/
/* Major layout elements */
/* Main tables, except footer */
.shell, .shellTop {
color: #EEEEEE;
background-color: #CC1133;
border-style: ridge;
border-color: #FFFFFF;
border-width: 2px;
margin: 0;
}
/* The header table inside a shell table at the top of the page */
table.head {
width: 100%;
color: #808080;
font-family: verdana, arial, sans-serif;
font-weight: bold;
background: #FFF;
border-style: groove;
border-color: #EEE;
border-width: 2px;
margin: 0;
}
td.head {
font-weight: bold;
font-size: 1em;
}
/* Spacing between header and main */
td.logo2menuSpace {
height: 0.8em;
}
/* The footer table at the bottom of the page */
table.footer {
width: 100%;
color: #808080;
background-color: #FFFFFF;
border-style: ridge;
border-color: #EEE;
border-width: 2px;
margin: 1em 0px 0px 0px;
}
td.footerBody {
text-align: center;
padding-left: 5%;
padding-right: 5%;
}
/*********************************************************/
/* Main Menu Navigation */
/* Menu Tabs' Table */
.menu {
font-size: 1em;
font-weight: bold;
width: 100%;
}
/* Spacing on either side of tabs */
.menuIndent {
width: 8%;
}
/* Spacing in between tabs (usually automatic) */
.menuSpacer {
}
/* All tabs except currently active tab */
.menuStandard {
background-color: #DBDF37;
width: 14%;
border-color: #FFFFFF;
border-style: ridge ridge none ridge;
border-width: 2px;
color: black;
}
/* Currently active tab */
.menuSelected {
background-color: #7CE238;
width: 14%;
border-color: #FFFFFF;
border-style: ridge ridge none ridge;
border-width: 2px;
color: black;
}
/*********************************************************/
/* General settings tables and panels */
table.settingsTable {
border: 1px solid black;
}
td.settingsPanel {
border: 1px solid black;
color: #EEEEEE;
background-color: #DB6479;
}
/*********************************************************/
/* History page settings */
table.historyWidgetsTop {
width: 100%;
margin-left: 1.5em;
margin-top: 0.6em;
margin-bottom: 1.0em;
}
table.historyWidgetsBottom {
width: 100%;
margin-top: 0.6em;
}
td.historyNavigatorTop {
text-align: right;
}
td.historyNavigatorBottom {
text-align: right;
}
table.historyTable {
border-collapse: collapse;
border: 0 solid;
}
tr.rowHighlighted {
color: black;
background-color: #7CE238;
}
.historyTable td {
border-right: 2px solid #C13;
}
/* Don't put borders in the top20 table */
.top20 td {
border-right: 0 solid;
}
/* Open message table */
table.openMessageTable {
border: 2px solid black;
}
/* Don't put borders in the openMessage table */
table.openMessageTable td {
border-right: 0 solid;
}
td.openMessageBody {
color: black;
background-color: rgb(250,220,220);
font-size: 1.2em;
}
td.openMessageCloser {
text-align: right;
color: black;
background-color: #7CE238;
font-weight: bold;
}
/* Top-20 stuff */
.top20Buckets {
width: 100%;
color: black;
background-color: rgb(250,220,220);
}
.top20Words {
width: 100%;
color: black;
background-color: rgb(250,220,220);
}
/*********************************************************/
/* Graphic colors, bars, etc */
/* Bucket and history listings alternating row colors */
tr.rowOdd {
color: black;
background-color: #C2DC87;
}
tr.rowEven {
color: black;
background-color: #A4CA4A;
}
/* Accuracy statistics bar colors*/
.accuracy0to49 {
color: black;
background-color: red;
}
.accuracy50to93 {
color: black;
background-color: yellow;
}
.accuracy94to100 {
color: black;
background-color: green;
}
.lineImg {
width: 0.3em;
}
/* Bar chart legend font */
span.graphFont {
font-size: x-small;
}
/*********************************************************/
/* Labels */
.historyLabelSort {
font-weight: bold;
font-style: normal;
}
.bucketsLabel {
font-weight: bold;
}
.magnetsLabel {
font-weight: bold;
}
.securityLabel {
font-weight: bold;
}
.configurationLabel {
font-weight: bold;
}
.advancedLabel {
font-weight: bold;
}
.passwordLabel {
font-weight: bold;
}
.sessionLabel {
font-weight: bold;
}
.configWidgetStateOn, .bucketsWidgetStateOn, .securityWidgetStateOn {
font-weight: bold;
}
/*********************************************************/
/* Errors */
div.error01 {
color: red;
background-color: black;
font-size: larger;
}
div.error02 {
color: red;
background-color: black;
}
/*********************************************************/
/* Other stuff */
.advancedWidgets {
margin-top: 1em;
}
|
|
From: <sta...@us...> - 2003-02-25 06:56:49
|
Update of /cvsroot/popfile/engine/UI
In directory sc8-pr-cvs1:/tmp/cvs-serv29631
Modified Files:
HTML.pm
Log Message:
D.Smith fix adds a label to each Remove checkbox on the History page
Index: HTML.pm
===================================================================
RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v
retrieving revision 1.91
retrieving revision 1.92
diff -C2 -d -r1.91 -r1.92
*** HTML.pm 25 Feb 2003 06:39:36 -0000 1.91
--- HTML.pm 25 Feb 2003 06:56:45 -0000 1.92
***************
*** 2949,2953 ****
$body .= "</td>\n<td>\n";
! $body .= "<input type=\"checkbox\" class=\"checkbox\" name=\"remove\" value=\"" . ( $i+1 ) . "\" />$self->{language}{Remove}\n";
$body .= "</td>\n</tr>\n";
--- 2949,2954 ----
$body .= "</td>\n<td>\n";
! $body .= "<label class=\"removeLabel\" for=\"remove_" . ( $i+1 ) . "\">$self->{language}{Remove}</label>\n";
! $body .= "<input type=\"checkbox\" id=\"remove_" . ( $i+1 ) . "\" class=\"checkbox\" name=\"remove\" value=\"" . ( $i+1 ) . "\" />\n";
$body .= "</td>\n</tr>\n";
|
|
From: <sta...@us...> - 2003-02-25 06:39:39
|
Update of /cvsroot/popfile/engine/UI
In directory sc8-pr-cvs1:/tmp/cvs-serv22322
Modified Files:
HTML.pm
Log Message:
restored spaces that had changed to tab characters; restored D.Smith's amp fixes in lines 2211-2223
Index: HTML.pm
===================================================================
RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v
retrieving revision 1.90
retrieving revision 1.91
diff -C2 -d -r1.90 -r1.91
*** HTML.pm 25 Feb 2003 03:39:18 -0000 1.90
--- HTML.pm 25 Feb 2003 06:39:36 -0000 1.91
***************
*** 65,76 ****
# The subkeys are
#
! # cull Used internally by load_history_cache (see there for details)
! # from The address the email was from
! # short_from Version of from with max 40 characters
! # subject The subject of the email
! # short_subject Version of subject with max 40 characters
! # magnet If a magnet was used to classify the mail contains the magnet string
! # bucket The classification of the mail
! # reclassified 1 if the mail has already been reclassified
[...1105 lines suppressed...]
! # TODO This may be UNSAFE, please write a better comment that explains
! # why this might be unsafe. What does unsafe mean in this context?
! $self->history_copy_file( "$self->{configuration}->{configuration}{msgdir}$mail_file", $path, $mail_file );
! }
! }
! # Before deleting the file make sure that the appropriate entry in the
! # history cache is also remove
! delete $self->{history_}{$mail_file};
! # Now remove the files from the disk, remove both the msg file containing
! # the mail message and its associated CLS file
! unlink( "$self->{configuration}->{configuration}{msgdir}$mail_file" );
! $mail_file =~ s/msg$/cls/;
! unlink( "$self->{configuration}->{configuration}{msgdir}$mail_file" );
}
|
|
From: <sta...@us...> - 2003-02-25 04:38:36
|
Update of /cvsroot/popfile/engine/skins
In directory sc8-pr-cvs1:/tmp/cvs-serv21473
Modified Files:
default.css
Log Message:
D. Smith rewrite/update
Index: default.css
===================================================================
RCS file: /cvsroot/popfile/engine/skins/default.css,v
retrieving revision 1.9
retrieving revision 1.10
diff -C2 -d -r1.9 -r1.10
*** default.css 19 Feb 2003 17:30:36 -0000 1.9
--- default.css 25 Feb 2003 04:38:32 -0000 1.10
***************
*** 1,189 ****
body {
! background-color: #FFFFFF;
! font-family: sans-serif;
! color: #000000;
}
.shell, .shellTop {
! background-color: #ededca;
! border: 3px #cccc99 solid;
! color: #000000;
}
table.head {
width: 100%;
! }
td.head {
font-weight: normal;
! font-size: 22pt;
}
! .menu {
! font-size: 14pt;
! font-weight: bold;
! width: 100%;
}
! .menuSelected {
! background-color: #cccc99;
! width: 14%;
! color: #000000;
}
! .menuStandard {
! background-color: #ededca;
! width: 14%;
! color: #000000;
}
! .menuIndent {
! width: 8%;
}
! tr.rowEven {
! background-color: #ededca;
! color: #000000;
}
! tr.rowOdd {
! background-color: #dfdfaf;
! color: #000000;
}
! tr.rowHighlighted {
! background-color: #cccc99;
! color: #eeeeee;
}
! table.footer {
! width: 100%;
}
.settingsTable {
! border: 1px solid #cccc99;
}
! .openMessageTable, .lookupResultsTable {
! border: 3px solid #cccc99;
}
! td.openMessageCloser {
! text-align: right;
}
td.openMessageBody {
! text-align: left;
}
! .settingsPanel {
! border: 1px solid #cccc99;
}
! td.naked {
! padding: 0px;
! margin: 0px;
! border: none
}
! a.changeSettingLink {
! background-color: transparent;
! color: blue;
}
td.accuracy0to49 {
! background-color: red;
! color: black;
}
td.accuracy50to93 {
! background-color: yellow;
! color: black;
}
td.accuracy94to100 {
! background-color: green;
! color: black;
}
div.error01 {
! background-color: transparent;
! color: red;
! font-size: larger;
}
div.error02 {
! background-color: transparent;
! color: red;
}
! span.graphFont {
! font-size: x-small;
! }
.historyLabel {
! font-weight: bold;
}
.bucketsLabel {
! font-weight: bold;
}
.magnetsLabel {
! font-weight: bold;
}
.securityLabel {
! font-weight: bold;
}
.configurationLabel {
! font-weight: bold;
}
-
.advancedLabel {
! font-weight: bold;
}
.passwordLabel {
! font-weight: bold;
}
.sessionLabel {
! font-weight: bold;
}
! td.logo2menuSpace {
! height: 0.8em;
}
! td.footerBody {
! text-align: center;
! }
!
! table.historyWidgetsTop {
! width: 100%;
! margin-left: 1.5em;
! margin-top: 0.6em;
! margin-bottom: 1.0em;
}
! table.historyWidgetsBottom {
! width: 100%;
! margin-top: 0.6em;
}
! td.historyNavigatorTop {
! text-align: right;
}
! td.historyNavigatorBottom {
! text-align: right;
}
! .historyLabel em {
! font-weight: bold;
! font-style: normal;
}
--- 1,220 ----
+ /*********************************************************/
+ /* Main Body */
+
body {
! color: #000000;
! background-color: #FFFFFF;
! font-family: sans-serif;
! font-size: 100%;
}
+ /*********************************************************/
+ /* Shell structure */
+
.shell, .shellTop {
! color: #000000;
! background-color: #EDEDCA;
! border: 3px #CCCC99 solid;
}
table.head {
width: 100%;
! }
td.head {
font-weight: normal;
! font-size: 1.8em;
}
! table.footer {
! width: 100%;
}
! td.footerBody {
! text-align: center;
}
! td.naked {
! padding: 0;
! margin: 0;
! border: 0;
}
! td.logo2menuSpace {
! height: 0.8em;
}
! /*********************************************************/
! /* Menu Settings */
!
! .menu {
! font-size: 1.2em;
! font-weight: bold;
! width: 100%;
}
! .menuSelected {
! color: #000000;
! background-color: #CCCC99;
! width: 14%;
}
! .menuStandard {
! color: #000000;
! background-color: #EDEDCA;
! width: 14%;
}
! .menuIndent {
! width: 8%;
}
+ /*********************************************************/
+ /* Table Settings */
+
.settingsTable {
! border: 1px solid #CCCC99;
}
! .settingsPanel {
! border: 1px solid #CCCC99;
}
! .openMessageTable {
! border: 3px solid #CCCC99;
}
td.openMessageBody {
! text-align: left;
}
! td.openMessageCloser {
! text-align: right;
}
! tr.rowEven {
! color: #000000;
! background-color: #EDEDCA;
}
! tr.rowOdd {
! color: #000000;
! background-color: #DFDFAF;
! }
!
! tr.rowHighlighted {
! color: #EEEEEE;
! background-color: #EDEDCA;
! }
!
! .lookupResultsTable {
! border: 3px solid #CCCC99;
}
+ /*********************************************************/
+ /* Graphics */
+
td.accuracy0to49 {
! background-color: red;
! color: black;
}
td.accuracy50to93 {
! background-color: yellow;
! color: black;
}
td.accuracy94to100 {
! background-color: green;
! color: black;
! }
!
! span.graphFont {
! font-size: x-small;
}
+ /*********************************************************/
+ /* Errors */
+
div.error01 {
! background-color: transparent;
! color: red;
! font-size: larger;
}
div.error02 {
! background-color: transparent;
! color: red;
}
! /*********************************************************/
! /* Form Labels */
.historyLabel {
! font-weight: bold;
! }
!
! .historyLabelSort {
! font-weight: bold;
! font-style: normal;
}
.bucketsLabel {
! font-weight: bold;
}
.magnetsLabel {
! font-weight: bold;
}
.securityLabel {
! font-weight: bold;
}
.configurationLabel {
! font-weight: bold;
}
.advancedLabel {
! font-weight: bold;
}
.passwordLabel {
! font-weight: bold;
}
.sessionLabel {
! font-weight: bold;
}
! .bucketsWidgetStateOn, .bucketsWidgetStateOff {
! font-weight: bold;
}
! .configWidgetStateOn, .configWidgetStateOff {
! font-weight: bold;
}
! .securityWidgetStateOn, .securityWidgetStateOff {
! font-weight: bold;
}
! /*********************************************************/
! /* Positioning */
!
! table.historyWidgetsTop {
! width: 100%;
! margin-left: 1.5em;
! margin-top: 0.6em;
! margin-bottom: 1.0em;
}
! table.historyWidgetsBottom {
! width: 100%;
! margin-top: 0.6em;
}
! .historyNavigatorTop, .historyNavigatorBottom {
! text-align: right;
}
***************
*** 192,204 ****
}
! span.bucketsWidgetState {
! font-weight: bold;
! }
!
! span.configWidgetState {
! font-weight: bold;
}
- span.securityWidgetState {
- font-weight: bold;
- }
\ No newline at end of file
--- 223,228 ----
}
! .advancedWidgets {
! margin-top: 1em;
}
|
|
From: <jgr...@us...> - 2003-02-25 03:39:23
|
Update of /cvsroot/popfile/engine/UI
In directory sc8-pr-cvs1:/tmp/cvs-serv3132/UI
Modified Files:
HTML.pm
Log Message:
Factor the search and filter form out as a separate function and use it in the two places where we need to display that form so that we don't have duplicated code
Index: HTML.pm
===================================================================
RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v
retrieving revision 1.89
retrieving revision 1.90
diff -C2 -d -r1.89 -r1.90
*** HTML.pm 25 Feb 2003 03:34:12 -0000 1.89
--- HTML.pm 25 Feb 2003 03:39:18 -0000 1.90
***************
*** 2632,2635 ****
--- 2632,2672 ----
# ---------------------------------------------------------------------------------------------
#
+ # get_search_filter_widget
+ #
+ # Returns the form that contains the fields for searching and filtering the history
+ # page
+ #
+ # ---------------------------------------------------------------------------------------------
+ sub get_search_filter_widget
+ {
+ my ( $self ) = @_;
+
+ my $body = "<form action=\"/history\">\n";
+ $body .= "<label class=\"historyLabel\" for=\"historySearch\">$self->{language}{History_SearchMessage}:</label>\n";
+ $body .= "<input type=\"text\" id=\"historySearch\" name=\"search\" ";
+ $body .= "value=\"$self->{form}{search}\"" if (defined $self->{form}{search});
+ $body .= " />\n";
+ $body .= "<input type=\"submit\" class=\"submit\" name=\"setsearch\" value=\"$self->{language}{Find}\" />\n";
+ $body .= " <label class=\"historyLabel\" for=\"historyFilter\">$self->{language}{History_FilterBy}:</label>\n";
+ $body .= "<input type=\"hidden\" name=\"sort\" value=\"$self->{form}{sort}\" />\n";
+ $body .= "<input type=\"hidden\" name=\"session\" value=\"$self->{session_key}\" />\n";
+ $body .= "<select name=\"filter\" id=\"historyFilter\">\n<option value=\"\"></option>";
+ my @buckets = sort keys %{$self->{classifier}->{total}};
+ foreach my $abucket (@buckets) {
+ $body .= "<option value=\"$abucket\"";
+ $body .= " selected" if ( ( defined($self->{form}{filter}) ) && ( $self->{form}{filter} eq $abucket ) );
+ $body .= ">$abucket</option>\n";
+ }
+ $body .= "<option value=\"__filter__magnet\"" . ($self->{form}{filter} eq '__filter__magnet'?' selected':'') . "><$self->{language}{History_ShowMagnet}></option>\n";
+ $body .= "<option value=\"unclassified\"" . ($self->{form}{filter} eq 'unclassified'?' selected':'') . "><unclassified></option>\n";
+ $body .= "</select>\n<input type=\"submit\" class=\"submit\" name=\"setfilter\" value=\"$self->{language}{Filter}\" />\n";
+ $body .= "<input type=\"submit\" class=\"submit\" name=\"reset_filter_search\" value=\"$self->{language}{History_ResetSearch}\" />\n";
+ $body .= "</form>\n";
+
+ return $body;
+ }
+
+ # ---------------------------------------------------------------------------------------------
+ #
# history_page - get the message classification history page
#
***************
*** 2790,2815 ****
# Search From/Subject widget
$body .= "<td colspan=\"5\" valign=middle>\n";
! $body .= "<form action=\"/history\">\n";
! $body .= "<label class=\"historyLabel\" for=\"historySearch\">$self->{language}{History_SearchMessage}:</label>\n";
! $body .= "<input type=\"text\" id=\"historySearch\" name=\"search\" ";
! $body .= "value=\"$self->{form}{search}\"" if (defined $self->{form}{search});
! $body .= " />\n";
! $body .= "<input type=\"submit\" class=\"submit\" name=\"setsearch\" value=\"$self->{language}{Find}\" />\n";
! $body .= " <label class=\"historyLabel\" for=\"historyFilter\">$self->{language}{History_FilterBy}:</label>\n";
! $body .= "<input type=\"hidden\" name=\"sort\" value=\"$self->{form}{sort}\" />\n";
! $body .= "<input type=\"hidden\" name=\"session\" value=\"$self->{session_key}\" />\n";
! $body .= "<select name=\"filter\" id=\"historyFilter\">\n<option value=\"\"></option>";
! my @buckets = sort keys %{$self->{classifier}->{total}};
! foreach my $abucket (@buckets) {
! $body .= "<option value=\"$abucket\"";
! $body .= " selected" if ( ( defined($self->{form}{filter}) ) && ( $self->{form}{filter} eq $abucket ) );
! $body .= ">$abucket</option>\n";
! }
! $body .= "<option value=\"__filter__magnet\"" . ($self->{form}{filter} eq '__filter__magnet'?' selected':'') . "><$self->{language}{History_ShowMagnet}></option>\n";
! $body .= "<option value=\"unclassified\"" . ($self->{form}{filter} eq 'unclassified'?' selected':'') . "><unclassified></option>\n";
! $body .= "</select>\n<input type=\"submit\" class=\"submit\" name=\"setfilter\" value=\"$self->{language}{Filter}\" />\n";
! $body .= "<input type=\"submit\" class=\"submit\" name=\"reset_filter_search\" value=\"$self->{language}{History_ResetSearch}\" />\n";
! $body .= "</form>\n";
$body .= "</td>\n</tr>\n</table>\n";
--- 2827,2833 ----
# Search From/Subject widget
+ my @buckets = sort keys %{$self->{classifier}->{total}};
$body .= "<td colspan=\"5\" valign=middle>\n";
! $body .= $self->get_search_filter_widget();
$body .= "</td>\n</tr>\n</table>\n";
***************
*** 3030,3047 ****
$body .= "\n</td>\n</tr>\n</table>\n";
} else {
! $body .= "<h2 class=\"history\">$self->{language}{History_Title}$filtered</h2><br /><br /><span class=\"bucketsLabel\">$self->{language}{History_NoMessages}.</span><br /><br /><form action=\"/history\"><input type=hidden name=session value=\"$self->{session_key}\"><input type=hidden name=sort value=\"$self->{form}{sort}\"><select name=filter><option value=\"\"></option>";
!
! foreach my $abucket (sort keys %{$self->{classifier}->{total}}) {
! $body .= "<option value=\"$abucket\"";
! $body .= " selected" if ( ( defined($self->{form}{filter}) ) && ( $self->{form}{filter} eq $abucket ) );
! $body .= ">$abucket</option>";
! }
!
! $body .= "<option value=__filter__magnet>\n<$self->{language}{History_ShowMagnet}>\n";
! $body .= "</option>\n";
! $body .= "<option value=\"unclassified\"" . (($self->{form}{filter} eq 'unclassified')?' selected':'') . "><unclassified></option>\n";
! $body .= "</select>\n";
! $body .="<input type=\"submit\" class=\"submit\" name=\"setfilter\" value=\"$self->{language}{Filter}\" />\n";
! $body .= "<input type=\"submit\" class=\"submit\" name=\"reset_filter_search\" value=\"$self->{language}{History_ResetSearch}\" />\n</form>\n";
}
--- 3048,3053 ----
$body .= "\n</td>\n</tr>\n</table>\n";
} else {
! $body .= "<h2 class=\"history\">$self->{language}{History_Title}$filtered</h2><br /><br /><span class=\"bucketsLabel\">$self->{language}{History_NoMessages}.</span><br /><br />";
! $body .= $self->get_search_filter_widget();
}
|
|
From: <jgr...@us...> - 2003-02-25 03:34:15
|
Update of /cvsroot/popfile/engine/UI
In directory sc8-pr-cvs1:/tmp/cvs-serv1867/UI
Modified Files:
HTML.pm
Log Message:
Clicking the History tab will clear any currently set filters and restore the full history; it does not force a reload of the cache unless the cache was invalidated between the last time the page was loaded and the click; all sort, search and filter will be cleared
Index: HTML.pm
===================================================================
RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v
retrieving revision 1.88
retrieving revision 1.89
diff -C2 -d -r1.88 -r1.89
*** HTML.pm 25 Feb 2003 03:05:59 -0000 1.88
--- HTML.pm 25 Feb 2003 03:34:12 -0000 1.89
***************
*** 530,534 ****
# History menu item
$result .= "<td class=\"$tab[2]\" align=\"center\">\n";
! $result .= "<a class=\"menuLink\" href=\"/history?session=$self->{session_key}\">";
$result .= "\n$self->{language}{Header_History}</a>\n";
$result .= "</td>\n<td class=\"menuSpacer\"></td>\n";
--- 530,534 ----
# History menu item
$result .= "<td class=\"$tab[2]\" align=\"center\">\n";
! $result .= "<a class=\"menuLink\" href=\"/history?session=$self->{session_key}&setfilter=\">";
$result .= "\n$self->{language}{Header_History}</a>\n";
$result .= "</td>\n<td class=\"menuSpacer\"></td>\n";
|
|
From: <jgr...@us...> - 2003-02-25 03:06:11
|
Update of /cvsroot/popfile/engine/UI
In directory sc8-pr-cvs1:/tmp/cvs-serv26720/UI
Modified Files:
HTML.pm
Log Message:
Added a permanent to zonk3r's excellent POPFile FAQ at the bottom of the home page
Index: HTML.pm
===================================================================
RCS file: /cvsroot/popfile/engine/UI/HTML.pm,v
retrieving revision 1.87
retrieving revision 1.88
diff -C2 -d -r1.87 -r1.88
*** HTML.pm 25 Feb 2003 01:23:39 -0000 1.87
--- HTML.pm 25 Feb 2003 03:05:59 -0000 1.88
***************
*** 622,625 ****
--- 622,626 ----
$result .= "$self->{language}{Footer_Manual}</a> - \n";
+ $result .= "<a class=\"bottomLink\" href=\"http://sourceforge.net/docman/display_doc.php?docid=14421&group_id=63137\">FAQ</a> - \n";
$result .= "<a class=\"bottomLink\" href=\"http://popfile.sourceforge.net/\">$self->{language}{Footer_HomePage}</a> - \n";
$result .= "<a class=\"bottomLink\" href=\"http://sourceforge.net/forum/forum.php?forum_id=213876\">$self->{language}{Footer_FeedMe}</a> - \n";
|