xref: /AOO41X/main/desktop/source/app/checkinstall.cxx (revision 2722ceddc26af33ca9ed6a22fc3c4dfb805171c3)
1 /**************************************************************
2  *
3  * Licensed to the Apache Software Foundation (ASF) under one
4  * or more contributor license agreements.  See the NOTICE file
5  * distributed with this work for additional information
6  * regarding copyright ownership.  The ASF licenses this file
7  * to you under the Apache License, Version 2.0 (the
8  * "License"); you may not use this file except in compliance
9  * with the License.  You may obtain a copy of the License at
10  *
11  *   http://www.apache.org/licenses/LICENSE-2.0
12  *
13  * Unless required by applicable law or agreed to in writing,
14  * software distributed under the License is distributed on an
15  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16  * KIND, either express or implied.  See the License for the
17  * specific language governing permissions and limitations
18  * under the License.
19  *
20  *************************************************************/
21 
22 
23 
24 // MARKER(update_precomp.py): autogen include statement, do not remove
25 #include "precompiled_desktop.hxx"
26 
27 #include "checkinstall.hxx"
28 #include <com/sun/star/beans/XExactName.hpp>
29 #include <com/sun/star/beans/XMaterialHolder.hpp>
30 #include <com/sun/star/container/XContentEnumerationAccess.hpp>
31 #include <com/sun/star/util/Date.hpp>
32 #include <com/sun/star/lang/XMultiServiceFactory.hpp>
33 #include <comphelper/processfactory.hxx>
34 #include <vcl/msgbox.hxx>
35 #include <tools/date.hxx>
36 
37 using namespace rtl;
38 using namespace com::sun::star::uno;
39 using namespace com::sun::star::lang;
40 using namespace com::sun::star::beans;
41 
42 namespace desktop
43 {
44 
CheckInstallation(OUString & rTitle)45 sal_Bool CheckInstallation( OUString& rTitle )
46 {
47     try
48     {
49         Reference< XMultiServiceFactory > xSMgr = ::comphelper::getProcessServiceFactory();
50         Reference< XExactName > xExactName( xSMgr->createInstance(
51                                     ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM(
52                                         "com.sun.star.comp.desktop.Evaluation" ))),
53                                     UNO_QUERY );
54         if ( xExactName.is() )
55         {
56             try
57             {
58                 rTitle = xExactName->getExactName( rTitle );
59                 Reference< XMaterialHolder > xMaterialHolder( xExactName, UNO_QUERY );
60                 if ( xMaterialHolder.is() )
61                 {
62                     com::sun::star::util::Date aExpirationDate;
63                     Any a = xMaterialHolder->getMaterial();
64                     if ( a >>= aExpirationDate )
65                     {
66                         Date aToday;
67                         Date aTimeBombDate( aExpirationDate.Day, aExpirationDate.Month, aExpirationDate.Year );
68                         if ( aToday > aTimeBombDate )
69                         {
70                             InfoBox aInfoBox( NULL, String::CreateFromAscii( "This version has expired" ) );
71                             aInfoBox.Execute();
72                             return sal_False;
73                         }
74                     }
75 
76                     return sal_True;
77                 }
78                 else
79                 {
80                     InfoBox aInfoBox( NULL, rTitle );
81                     aInfoBox.Execute();
82                     return sal_False;
83                 }
84             }
85             catch ( RuntimeException& )
86             {
87                 // Evaluation version expired!
88                 return sal_False;
89             }
90         }
91         else
92         {
93             Reference< com::sun::star::container::XContentEnumerationAccess > rContent( xSMgr , UNO_QUERY );
94             if( rContent.is() )
95             {
96                 OUString sEvalService = OUString( RTL_CONSTASCII_USTRINGPARAM( "com.sun.star.office.Evaluation" ) );
97                 Reference < com::sun::star::container::XEnumeration > rEnum = rContent->createContentEnumeration( sEvalService );
98                 if ( rEnum.is() )
99                 {
100                     InfoBox aInfoBox( NULL, rTitle );
101                     aInfoBox.Execute();
102                     return sal_False;
103                 }
104             }
105         }
106     }
107     catch(Exception)
108     {
109     }
110 
111     return sal_True;
112 }
113 
114 } // namespace desktop
115