4月のカレンダー
 123456
78910111213
14151617181920
21222324252627
282930    
最近の日記
全体の新着
各月の日記
ユーザーRSS
hanyaさんの公開日記
01月20日
23:29
VB Script で書いてみた。コワイコワイ・・・。


Set mcf= WScript.CreateObject("com.sun.star.ServiceManager")
Set ctx = mcf.DefaultContext

Dim sTemplateURL, sExpanded, sXCU
sTemplateURL = GetConfigData(mcf)

If (sTemplateURL <> "") Then
sExpanded = Expand(ctx, sTemplateURL)
sXCU = CreateXCU(Mid(sExpanded, 21))

bResult = InstallXCU(mcf, sXCU)
If bResult Then
WScript.Echo "終了しました。"
Else
WScript.Echo "失敗しました。"
End If
REM sXCU
Else
WScript.Echo "テンプレートが指定されていません"
End If


Function Expand(ctx, sTemplateURL)
Set expander = ctx.getValueByName("/singletons/com.sun.star.util.theMacroExpander")
Expand = expander.expandMacros(sTemplateURL)
End Function

Function GetConfigData(mcf)
Dim aProps(0)
Set aProps(0) = mcf.Bridge_GetStruct("com.sun.star.beans.PropertyValue")
Set oCP = mcf.createInstance("com.sun.star.configuration.ConfigurationProvider" )
aProps(0).Name = "nodepath"
aProps(0).Value = "/org.openoffice.Setup/Office/Factories/Factory['com.sun.star.text.TextDocument']"
Set oCUA = oCP.createInstanceWithArguments("com.sun.star.configuration.ConfigurationUpdateAccess", aProps)
GetConfigData = oCUA.getByName("ooSetupFactoryTemplateFile")
End Function

Function CreateXCU(sPath)
Dim sLF
sLF = chr(10)
CreateXCU = "<?xml version=""1.0"" encoding=""UTF-8""?>" & sLF & _
"<oor:component-data xmlns:oor=""http://openoffice.org/2001/registry"" xmlns:xs=""http://www.w3.org/2001/XMLSchema"" oor:name=""Setup"" oor:package=""org.openoffice"">" & sLF & _
" <node oor:name=""Office"">" & sLF & _
" <node oor:name=""Factories"">" & sLF & _
" <node oor:name=""com.sun.star.text.TextDocument"">" & sLF & _
" <prop oor:name=""ooSetupFactoryTemplateFile"" oor:type=""xs:string"">" & sLF & _
" <value>" & sPath & "</value>" & sLF & _
" </prop>" & sLF & _
" </node>" & sLF & _
" </node>" & sLF & _
" </node>" & sLF & _
"</oor:component-data>"
End Function


Function GetUnoPkgPath(mcf)
Dim sBrandURL, sAbsURL
sBrandURL = GetPath(mcf, "$(brandbaseurl)")
If InstrRev(sBrandURL, "/..") Then
sBrandURL = Mid(sBrandURL, 1, Len(sBrandURL) - 3)
End If
Set oOID = mcf.createInstance("com.sun.star.util.OfficeInstallationDirectories")
sAbsURL = oOID.makeAbsoluteURL(sBrandURL & "/unopkg.exe")
GetUnoPkgPath = sAbsURL
End Function

Function GetPath(mcf, sPath)
Set oPathSubstitution = mcf.createInstance("com.sun.star.util.PathSubstitution")
GetPath = oPathSubstitution.getSubstituteVariableValue(sPath)
End Function

Function InstallXCU(mcf, sData)
Dim sTempPath, sURI
Set tmp = mcf.createInstance("com.sun.star.io.TempFile")
sURI = tmp.Uri
sXCUPath = Mid(sURI, 1, InstrRev(sURI, "/")) & "WriterTemplate.xcu"
sUnoPkgPath = GetUnoPkgPath(mcf)
If sXCUPath <> "" AND sUnoPkgPath <> "" Then
Set oSFA = mcf.createInstance("com.sun.star.ucb.SimpleFileAccess")
Set oTextOut = mcf.createInstance("com.sun.star.io.TextOutputStream")
Set oOut = oSFA.openFileWrite(sXCUPath)
oTextOut.setOutputStream(oOut)
oTextOut.setEncoding("UTF-8")
oTextOut.writeString(sData)
oTextOut.closeOutput()

Set oSysExecute = mcf.createInstance("com.sun.star.system.SystemShellExecute")
oSysExecute.execute sUnoPkgPath, "add " & sXCUPath, 0
InstallXCU = True
Else
InstallXCU = False
End If
End Function
公開日記トップへ
oooug-jp SNS

●サイドメニュー

  • 公開日記
  • >公開日記はログインしなくても読めます

http://www.ospn.jp/

inetd