diff options
Diffstat (limited to 'desktop')
-rw-r--r-- | desktop/prj/d.lst | 2 | ||||
-rw-r--r-- | desktop/scripts/makefile.mk | 11 | ||||
-rw-r--r-- | desktop/scripts/soffice.sh | 13 | ||||
-rw-r--r-- | desktop/source/pagein/makefile.mk | 7 | ||||
-rw-r--r-- | desktop/source/pkgchk/unopkg/makefile.mk | 2 | ||||
-rw-r--r-- | desktop/util/makefile.mk | 27 | ||||
-rw-r--r-- | desktop/util/verinfo.rc | 60 | ||||
-rw-r--r-- | desktop/win32/source/setup/setup.cpp | 114 | ||||
-rw-r--r-- | desktop/win32/source/setup/setup.hxx | 4 | ||||
-rw-r--r-- | desktop/win32/source/setup/setup_main.cxx | 3 | ||||
-rw-r--r-- | desktop/win32/source/setup/setup_main.hxx | 1 |
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 cb6a6226782e..8c0ca1db85c8 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 $(DLLPRE)configmgr$(DLLPOST) >> $@ # - @-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; |