summaryrefslogtreecommitdiff
path: root/desktop
diff options
context:
space:
mode:
authorMathias Bauer <mba@openoffice.org>2010-01-21 13:49:22 +0100
committerMathias Bauer <mba@openoffice.org>2010-01-21 13:49:22 +0100
commitd5d854cc42815ff0bbe0347be4e28c8896048b8d (patch)
tree29000ef0d8c19f47b31d81dbca2fa3205e0ad3c7 /desktop
parentd668e9b58922429c5e16abc698520efdc32c7af8 (diff)
parent3b3e144c13a85b21b32904f245f44256c63e10e5 (diff)
resync to DEV300_m70
Diffstat (limited to 'desktop')
-rw-r--r--desktop/prj/d.lst2
-rw-r--r--desktop/scripts/makefile.mk11
-rw-r--r--desktop/scripts/soffice.sh13
-rw-r--r--desktop/source/pagein/makefile.mk7
-rw-r--r--desktop/source/pkgchk/unopkg/makefile.mk2
-rw-r--r--desktop/util/makefile.mk27
-rw-r--r--desktop/util/verinfo.rc60
-rw-r--r--desktop/win32/source/setup/setup.cpp114
-rw-r--r--desktop/win32/source/setup/setup.hxx4
-rw-r--r--desktop/win32/source/setup/setup_main.cxx3
-rw-r--r--desktop/win32/source/setup/setup_main.hxx1
11 files changed, 193 insertions, 51 deletions
diff --git a/desktop/prj/d.lst b/desktop/prj/d.lst
index fe688e2c4b44..5ec84bca7d37 100644
--- a/desktop/prj/d.lst
+++ b/desktop/prj/d.lst
@@ -93,7 +93,7 @@ mkdir: %_DEST%\bin%_EXT%\odf4ms
..\%__SRC%\bin\*.res %_DEST%\bin%_EXT%\*.res
-..\%__SRC%\misc\soffice.sh %_DEST%\bin%_EXT%\soffice
+..\%__SRC%\misc\soffice.sh-expanded %_DEST%\bin%_EXT%\soffice
..\%__SRC%\misc\sbase.sh %_DEST%\bin%_EXT%\sbase
..\%__SRC%\misc\scalc.sh %_DEST%\bin%_EXT%\scalc
..\%__SRC%\misc\sdraw.sh %_DEST%\bin%_EXT%\sdraw
diff --git a/desktop/scripts/makefile.mk b/desktop/scripts/makefile.mk
index 52750ca0b44f..001ead351928 100644
--- a/desktop/scripts/makefile.mk
+++ b/desktop/scripts/makefile.mk
@@ -54,7 +54,18 @@ UNIXTEXT= \
$(MISC)$/unopkg.sh
.IF "$(OS)" != "MACOSX"
+
+ALLTAR: $(MISC)$/soffice.sh-expanded
+
+$(MISC)/soffice.sh-expanded: $(MISC)/soffice.sh
+.IF "$(OS)" == "LINUX" && "$(CPUNAME)" == "POWERPC"
+ $(SED) 's/^#@# //' $< > $@
+.ELSE
+ $(COPY) $< $@
+.ENDIF
+
UNIXTEXT+= $(MISC)$/soffice.sh
+
.ENDIF
.INCLUDE : target.mk
diff --git a/desktop/scripts/soffice.sh b/desktop/scripts/soffice.sh
index 7895d3ed1cd9..0690e9647f35 100644
--- a/desktop/scripts/soffice.sh
+++ b/desktop/scripts/soffice.sh
@@ -43,11 +43,8 @@ export SAL_ENABLE_FILE_LOCKING
# working on your system.
# SAL_NOOPENGL=true; export SAL_NOOPENGL
-# the following test is needed on Linux PPC with IBM j2sdk142
-if [ "`uname -s`" = "Linux" -a "`uname -m`" = "ppc" ] ; then
- JITC_PROCESSOR_TYPE=6
- export JITC_PROCESSOR_TYPE
-fi
+# The following is needed on Linux PPC with IBM j2sdk142:
+#@# export JITC_PROCESSOR_TYPE=6
# resolve installation directory
sd_cwd="`pwd`"
@@ -129,11 +126,13 @@ export PATH
"$sd_prog/$sd_binary" "$@" &
trap 'kill -9 $!' TERM
wait $!
+sd_ret=$?
-while [ $? -eq 79 ]
+while [ $sd_ret -eq 79 ]
do
"$sd_prog/$sd_binary" ""$BOOTSTRAPVARS"" &
wait $!
+ sd_ret=$?
done
-exit
+exit $sd_ret
diff --git a/desktop/source/pagein/makefile.mk b/desktop/source/pagein/makefile.mk
index 85cbb4d3c9fd..626412877250 100644
--- a/desktop/source/pagein/makefile.mk
+++ b/desktop/source/pagein/makefile.mk
@@ -81,21 +81,25 @@ $(MISC)$/$(TARGET)-calc : makefile.mk
@echo Making: $@
@-echo $(DLLPRE)sc$(DFTDLLPOST) > $@
@-echo $(DLLPRE)svx$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)svxcore$(DFTDLLPOST) >> $@
$(MISC)$/$(TARGET)-draw : makefile.mk
@echo Making: $@
@-echo $(DLLPRE)sd$(DFTDLLPOST) > $@
@-echo $(DLLPRE)svx$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)svxcore$(DFTDLLPOST) >> $@
$(MISC)$/$(TARGET)-impress : makefile.mk
@echo Making: $@
@-echo $(DLLPRE)sd$(DFTDLLPOST) > $@
@-echo $(DLLPRE)svx$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)svxcore$(DFTDLLPOST) >> $@
$(MISC)$/$(TARGET)-writer : makefile.mk
@echo Making: $@
@-echo $(DLLPRE)sw$(DFTDLLPOST) > $@
@-echo $(DLLPRE)svx$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)svxcore$(DFTDLLPOST) >> $@
# sorted in approx. reverse load order (ld.so.1)
$(MISC)$/$(TARGET)-common : makefile.mk
@@ -121,7 +125,7 @@ $(MISC)$/$(TARGET)-common : makefile.mk
@-echo $(DLLPRE)ucb1$(DLLPOST) >> $@
@-echo configmgr2$(UNODLLPOST) >> $@
#
- @-echo $(DLLPRE)dtransX11$(DFTDLLPOST) >> $@
+ @-echo $(DLLPRE)dtrans$(DLLPOST) >> $@
@-echo $(DLLPRE)vclplug_gen$(DFTDLLPOST) >> $@
.IF "$(ENABLE_GTK)" != ""
@-echo $(DLLPRE)vclplug_gtk$(DFTDLLPOST) >> $@
@@ -130,7 +134,6 @@ $(MISC)$/$(TARGET)-common : makefile.mk
@-echo $(DLLPRE)vclplug_kde$(DFTDLLPOST) >> $@
.ENDIF # ENABLE_KDE
#
- @-echo $(DLLPRE)psp$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)basegfx$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)sot$(DFTDLLPOST) >> $@
@-echo $(DLLPRE)xcr$(DFTDLLPOST) >> $@
diff --git a/desktop/source/pkgchk/unopkg/makefile.mk b/desktop/source/pkgchk/unopkg/makefile.mk
index 3562fad961d9..4a1f409f4564 100644
--- a/desktop/source/pkgchk/unopkg/makefile.mk
+++ b/desktop/source/pkgchk/unopkg/makefile.mk
@@ -49,6 +49,7 @@ PRJINC += ..$/..$/deployment ..$/..
CFLAGS+=-DSYSTEM_DB -I$(DB_INCLUDES)
.ENDIF
+.IF "$(LINK_SO)"!=""
APP1TARGET = so$/unopkg
APP1OBJS = $(OBJFILES)
APP1STDLIBS = $(SALLIB) $(UNOPKGAPPLIB)
@@ -59,6 +60,7 @@ APP1RPATH = BRAND
APP1ICON = $(SOLARRESDIR)$/icons/so9_main_app.ico
APP1LINKRES = $(MISC)$/$(TARGET)1.res
.ENDIF
+.ENDIF # "$(LINK_SO)"!=""
APP2TARGET = unopkg
APP2OBJS = $(OBJFILES)
diff --git a/desktop/util/makefile.mk b/desktop/util/makefile.mk
index 05f129b3c5fc..82cad8c095ad 100644
--- a/desktop/util/makefile.mk
+++ b/desktop/util/makefile.mk
@@ -79,6 +79,7 @@ RESLIB1SRSFILES= $(SRS)$/desktop.srs \
$(SRS)$/wizard.srs
.IF "$(L10N_framework)"==""
+.IF "$(LINK_SO)"=="TRUE"
.IF "$(GUI)" != "OS2"
APP1TARGET=so$/$(TARGET)
APP1NOSAL=TRUE
@@ -119,12 +120,6 @@ APP1STDLIBS = \
$(VOSLIB)
-.IF "$(GUI)" == "UNX"
-.IF "$(OS)" == "LINUX" || "$(OS)" == "FREEBSD"
-APP1STDLIBS+= -lXext
-.ENDIF
-.ENDIF
-
APP1DEPN= $(APP1RES) verinfo.rc
.IF "$(GUI)" == "WNT"
@@ -143,6 +138,8 @@ APP1STACK=10000000
.ENDIF # "$(GUI)" != "OS2"
+.ENDIF # "$(LINK_SO)"=="TRUE"
+
APP5TARGET=soffice
APP5NOSAL=TRUE
APP5RPATH=BRAND
@@ -206,6 +203,7 @@ APP5LINKRES=$(MISC)$/ooffice.res
.ENDIF # OS2
.IF "$(GUI)" == "WNT"
+.IF "$(LINK_SO)"=="TRUE"
APP6TARGET=so$/officeloader
APP6RES=$(RES)$/soloader.res
APP6NOSAL=TRUE
@@ -218,6 +216,7 @@ APP6OBJS = \
$(OBJ)$/officeloader.obj \
$(SOLARLIBDIR)$/pathutils-obj.obj
STDLIB6=$(ADVAPI32LIB) $(SHELL32LIB) $(SHLWAPILIB)
+.ENDIF # "$(LINK_SO)"=="TRUE"
APP7TARGET=officeloader
APP7RES=$(RES)$/ooloader.res
@@ -265,7 +264,9 @@ $(APP6TARGETN) : $(MISC)$/binso_created.flg
ALLTAR: $(MISC)$/$(TARGET).exe.manifest
ALLTAR: $(MISC)$/$(TARGET).bin.manifest
ALLTAR: $(BIN)$/$(TARGET).bin
+.IF "$(LINK_SO)"=="TRUE"
ALLTAR: $(BIN)$/so$/$(TARGET).bin
+.ENDIF # "$(LINK_SO)"=="TRUE"
.ENDIF # WNT
.IF "$(GUI)" == "OS2"
@@ -276,23 +277,29 @@ $(BIN)$/soffice_oo$(EXECPOST) : $(APP5TARGETN)
$(COPY) $< $@
.IF "$(GUI)" != "OS2"
+.IF "$(LINK_SO)"=="TRUE"
$(BIN)$/so$/soffice_so$(EXECPOST) : $(APP1TARGETN)
$(COPY) $< $@
-ALLTAR : $(BIN)$/so$/soffice_so$(EXECPOST) $(BIN)$/soffice_oo$(EXECPOST)
-
+ALLTAR : $(BIN)$/so$/soffice_so$(EXECPOST)
+.ENDIF # "$(LINK_SO)"=="TRUE"
+ALLTAR : $(BIN)$/soffice_oo$(EXECPOST)
.ENDIF
.IF "$(OS)" == "MACOSX"
+.IF "$(LINK_SO)"=="TRUE"
$(BIN)$/so$/soffice_mac$(EXECPOST) : $(APP1TARGETN)
$(COPY) $< $@
+ALLTAR : $(BIN)$/so$/soffice_mac$(EXECPOST)
+.ENDIF # "$(LINK_SO)"=="TRUE"
+
$(BIN)$/soffice_mac$(EXECPOST) : $(APP5TARGETN)
$(COPY) $< $@
-ALLTAR : $(BIN)$/so$/soffice_mac$(EXECPOST) $(BIN)$/soffice_mac$(EXECPOST)
+ALLTAR : $(BIN)$/soffice_mac$(EXECPOST)
-.ENDIF
+.ENDIF # "$(OS)" == "MACOSX"
.IF "$(GUI)" == "WNT"
diff --git a/desktop/util/verinfo.rc b/desktop/util/verinfo.rc
index 8f1840afbed9..105933ff130d 100644
--- a/desktop/util/verinfo.rc
+++ b/desktop/util/verinfo.rc
@@ -101,42 +101,42 @@ VS_VERSION_INFO versioninfo
}
}
-2 ICON "icons\\so9_writer_doc.ico"
-3 ICON "icons\\so9_writer_tem.ico"
-4 ICON "icons\\so9_calc_doc.ico"
-5 ICON "icons\\so9_calc_tem.ico"
-6 ICON "icons\\so9_draw_doc.ico"
-7 ICON "icons\\so9_draw_tem.ico"
-8 ICON "icons\\so9_impress_doc.ico"
-9 ICON "icons\\so9_impress_tem.ico"
-10 ICON "icons\\so9_impress_doc.ico"
-11 ICON "icons\\so9_global_doc.ico"
-12 ICON "icons\\so9_html_doc.ico"
-13 ICON "icons\\so9_chart_doc.ico"
-14 ICON "icons\\so9_base_doc.ico"
-15 ICON "icons\\so9_math_doc.ico"
-16 ICON "icons\\so9_empty_tem.ico"
-17 ICON "icons\\so9_macro_doc.ico"
+2 ICON "icons\\oasis-text.ico"
+3 ICON "icons\\oasis-text-template.ico"
+4 ICON "icons\\oasis-spreadsheet.ico"
+5 ICON "icons\\oasis-spreadsheet-template.ico"
+6 ICON "icons\\oasis-drawing.ico"
+7 ICON "icons\\oasis-drawing-template.ico"
+8 ICON "icons\\oasis-presentation.ico"
+9 ICON "icons\\oasis-presentation-template.ico"
+10 ICON "icons\\oasis-presentation-template.ico"
+11 ICON "icons\\oasis-master-document.ico"
+12 ICON "icons\\oasis-web-template.ico"
+13 ICON "icons\\oasis-empty-document.ico"
+14 ICON "icons\\oasis-database.ico"
+15 ICON "icons\\oasis-formula.ico"
+16 ICON "icons\\empty-template.ico"
+17 ICON "icons\\empty-document.ico"
18 ICON "icons\\so8-configuration.ico"
19 ICON "icons\\so8-open.ico"
-20 ICON "icons\\so8-image-doc.ico"
+20 ICON "icons\\empty-document.ico"
21 ICON "icons\\so9_writer_app.ico"
22 ICON "icons\\so9_calc_app.ico"
23 ICON "icons\\so9_draw_app.ico"
24 ICON "icons\\so9_impress_app.ico"
25 ICON "icons\\so9_math_app.ico"
26 ICON "icons\\so9_base_app.ico"
-27 ICON "icons\\so9_empty_doc.ico"
-28 ICON "icons\\so7-writer-doc.ico"
-29 ICON "icons\\so7-writer-tem.ico"
-30 ICON "icons\\so7-calc-doc.ico"
-31 ICON "icons\\so7-calc-tem.ico"
-32 ICON "icons\\so7-draw-doc.ico"
-33 ICON "icons\\so7-draw-tem.ico"
-34 ICON "icons\\so7-impress-doc.ico"
-35 ICON "icons\\so7-impress-tem.ico"
-36 ICON "icons\\so7-master-doc.ico"
-37 ICON "icons\\so7-chart-doc.ico"
-38 ICON "icons\\so7-base-doc.ico"
-39 ICON "icons\\so7-math-doc.ico"
+27 ICON "icons\\oasis-empty-document.ico"
+28 ICON "icons\\text.ico"
+29 ICON "icons\\text-template.ico"
+30 ICON "icons\\spreadsheet.ico"
+31 ICON "icons\\spreadsheet-template.ico"
+32 ICON "icons\\drawing.ico"
+33 ICON "icons\\drawing-template.ico"
+34 ICON "icons\\presentation.ico"
+35 ICON "icons\\presentation-template.ico"
+36 ICON "icons\\master-document.ico"
+37 ICON "icons\\empty-document.ico"
+38 ICON "icons\\database.ico"
+39 ICON "icons\\formula.ico"
40 ICON "icons\\oxt-extension.ico"
diff --git a/desktop/win32/source/setup/setup.cpp b/desktop/win32/source/setup/setup.cpp
index fb29c13d3a1c..c51dcd105bfd 100644
--- a/desktop/win32/source/setup/setup.cpp
+++ b/desktop/win32/source/setup/setup.cpp
@@ -76,6 +76,7 @@
#define PARAM_PATCH TEXT( " /update " )
#define PARAM_REG_ALL_MSO_TYPES TEXT( "REGISTER_ALL_MSO_TYPES=1 " )
#define PARAM_REG_NO_MSO_TYPES TEXT( "REGISTER_NO_MSO_TYPES=1 " )
+#define PARAM_SILENTINSTALL TEXT( " /QB" )
#define PARAM_RUNNING TEXT( "ignore_running" )
#define CMDLN_REG_ALL_MSO_TYPES TEXT( "msoreg=1" )
@@ -85,6 +86,11 @@
#define ADVAPI32_DLL TEXT( "advapi32.dll" )
#define PROFILE_NAME TEXT( "setup.ini" )
+#define RUNTIME_X64_NAME TEXT( "redist\\vcredist_x64.exe" )
+#define RUNTIME_X86_NAME TEXT( "redist\\vcredist_x86.exe" )
+#define PRODUCTCODE_X86 TEXT( "{E503B4BF-F7BB-3D5F-8BC8-F694B1CFF942}" )
+#define PRODUCTCODE_X64 TEXT( "{350AA351-21FA-3270-8B7A-835434E766AD}" )
+
#define MSIAPI_DllGetVersion "DllGetVersion"
#define ADVAPI32API_CheckTokenMembership "CheckTokenMembership"
@@ -1897,6 +1903,114 @@ boolean SetupAppX::IsPatchInstalled( TCHAR* pBaseDir, TCHAR* pFileName )
}
//--------------------------------------------------------------------------
+boolean SetupAppX::InstallRuntimes( TCHAR *sProductCode, TCHAR *sRuntimePath )
+{
+ INSTALLSTATE nRet = MsiQueryProductState( sProductCode );
+ OutputDebugStringFormat( TEXT( "MsiQueryProductState returned <%d>\r\n" ), nRet );
+ if ( nRet == INSTALLSTATE_DEFAULT )
+ return true;
+
+ Log( TEXT( " Will install runtime <%s>\r\n" ), sRuntimePath );
+ OutputDebugStringFormat( TEXT( " Will install runtime <%s>\r\n" ), sRuntimePath );
+
+ STARTUPINFO aSUI;
+ PROCESS_INFORMATION aPI;
+
+ ZeroMemory( (void*)&aPI, sizeof( PROCESS_INFORMATION ) );
+ ZeroMemory( (void*)&aSUI, sizeof( STARTUPINFO ) );
+
+ aSUI.cb = sizeof(STARTUPINFO);
+ aSUI.dwFlags = STARTF_USESHOWWINDOW;
+ aSUI.wShowWindow = SW_SHOW;
+
+ DWORD nCmdLineLength = lstrlen( sRuntimePath ) + lstrlen( PARAM_SILENTINSTALL ) + 2;
+ TCHAR *sCmdLine = new TCHAR[ nCmdLineLength ];
+
+ if ( FAILED( StringCchCopy( sCmdLine, nCmdLineLength, sRuntimePath ) ) ||
+ FAILED( StringCchCat( sCmdLine, nCmdLineLength, PARAM_SILENTINSTALL ) ) )
+ {
+ delete [] sCmdLine;
+ SetError( ERROR_INSTALL_FAILURE );
+ return false;
+ }
+
+ if ( !WIN::CreateProcess( NULL, sCmdLine, NULL, NULL, FALSE,
+ CREATE_DEFAULT_ERROR_MODE, NULL, NULL,
+ &aSUI, &aPI ) )
+ {
+ Log( TEXT( "ERROR: Could not create process %s.\r\n" ), sCmdLine );
+ SetError( WIN::GetLastError() );
+ delete [] sCmdLine;
+ return false;
+ }
+
+ DWORD nResult = WaitForProcess( aPI.hProcess );
+ bool bRet = true;
+
+ if( ERROR_SUCCESS != nResult )
+ {
+ Log( TEXT( "ERROR: While waiting for %s.\r\n" ), sCmdLine );
+ SetError( nResult );
+ bRet = false;
+ }
+ else
+ {
+ GetExitCodeProcess( aPI.hProcess, &nResult );
+ SetError( nResult );
+
+ if ( nResult != ERROR_SUCCESS )
+ {
+ TCHAR sBuf[80];
+ StringCchPrintf( sBuf, 80, TEXT("Warning: install runtime returned %u.\r\n"), nResult );
+ Log( sBuf );
+ }
+ else
+ Log( TEXT( " Installation of runtime completed successfully.\r\n" ) );
+ }
+
+ CloseHandle( aPI.hProcess );
+
+ delete [] sCmdLine;
+
+ return bRet;
+}
+
+//--------------------------------------------------------------------------
+boolean SetupAppX::InstallRuntimes()
+{
+ TCHAR *sRuntimePath = 0;
+ SYSTEM_INFO siSysInfo;
+
+ GetNativeSystemInfo(&siSysInfo);
+
+ OutputDebugStringFormat( TEXT( "found architecture<%d>\r\n" ), siSysInfo.wProcessorArchitecture );
+
+ if ( siSysInfo.wProcessorArchitecture == PROCESSOR_ARCHITECTURE_AMD64 )
+ {
+ if ( GetPathToFile( RUNTIME_X64_NAME, &sRuntimePath ) )
+ InstallRuntimes( PRODUCTCODE_X64, sRuntimePath );
+ else
+ Log( TEXT( "ERROR: no installer for x64 runtime libraries found!" ) );
+
+ if ( sRuntimePath )
+ {
+ delete [] sRuntimePath;
+ sRuntimePath = 0;
+ }
+ }
+
+ if ( GetPathToFile( RUNTIME_X86_NAME, &sRuntimePath ) )
+ InstallRuntimes( PRODUCTCODE_X86, sRuntimePath );
+ else
+ Log( TEXT( "ERROR: no installer for x86 runtime libraries found!" ) );
+
+ if ( sRuntimePath )
+ delete [] sRuntimePath;
+
+ return true;
+}
+
+//--------------------------------------------------------------------------
//--------------------------------------------------------------------------
LanguageDataX::LanguageDataX( LPTSTR pData )
{
diff --git a/desktop/win32/source/setup/setup.hxx b/desktop/win32/source/setup/setup.hxx
index 72785cc75b31..169254db87ab 100644
--- a/desktop/win32/source/setup/setup.hxx
+++ b/desktop/win32/source/setup/setup.hxx
@@ -119,12 +119,13 @@ private:
LPTSTR *pNext, boolean bStripQuotes = false );
boolean IsAdmin();
-
boolean GetCommandLine();
boolean IsTerminalServerInstalled() const;
void AddFileToPatchList( TCHAR* pPath, TCHAR* pFile );
boolean IsPatchInstalled( TCHAR* pBaseDir, TCHAR* pFileName );
+ boolean InstallRuntimes( TCHAR* pProductCode, TCHAR* pFileName );
+
public:
SetupAppX();
~SetupAppX();
@@ -136,6 +137,7 @@ public:
virtual boolean ChooseLanguage( long& rLanguage );
virtual boolean CheckVersion();
virtual boolean CheckForUpgrade();
+ virtual boolean InstallRuntimes();
virtual boolean Install( long nLanguage );
virtual UINT GetError() const;
diff --git a/desktop/win32/source/setup/setup_main.cxx b/desktop/win32/source/setup/setup_main.cxx
index 515363749c55..6c96bde46b12 100644
--- a/desktop/win32/source/setup/setup_main.cxx
+++ b/desktop/win32/source/setup/setup_main.cxx
@@ -124,6 +124,9 @@ extern "C" int __stdcall WinMain( HINSTANCE hInst, HINSTANCE, LPSTR, int )
if ( ! pSetup->ChooseLanguage( nLanguage ) )
throw pSetup->GetError();
+ if ( ! pSetup->InstallRuntimes() )
+ throw pSetup->GetError();
+
if ( ! pSetup->Install( nLanguage ) )
throw pSetup->GetError();
}
diff --git a/desktop/win32/source/setup/setup_main.hxx b/desktop/win32/source/setup/setup_main.hxx
index 67b54adc0d2a..28200fcae757 100644
--- a/desktop/win32/source/setup/setup_main.hxx
+++ b/desktop/win32/source/setup/setup_main.hxx
@@ -53,6 +53,7 @@ public:
virtual boolean ChooseLanguage( long& rLanguage ) = 0;
virtual boolean CheckVersion() = 0;
virtual boolean CheckForUpgrade() = 0;
+ virtual boolean InstallRuntimes() = 0;
virtual boolean Install( long nLanguage ) = 0;
virtual UINT GetError() const = 0;