3 This file is part of the LibreOffice project.
5 This Source Code Form is subject to the terms of the Mozilla Public
6 License, v. 2.0. If a copy of the MPL was not distributed with this
7 file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 This file incorporates work covered by the following license notice:
11 Licensed to the Apache Software Foundation (ASF) under one or more
12 contributor license agreements. See the NOTICE file distributed
13 with this work for additional information regarding copyright
14 ownership. The ASF licenses this file to you under the Apache
15 License, Version 2.0 (the "License"); you may not use this file
16 except in compliance with the License. You may obtain a copy of
17 the License at http://www.apache.org/licenses/LICENSE-2.0 .
19 This script is meant to
20 1) Identify installed instances of the product
21 2) check whether the user has write-access (and if not
22 ask for authentication)
23 3) install the shipped tarball
26 -- strings for localisations - to be meant to be replaced
27 -- by a makefile or similar
28 set OKLabel
to "[OKLabel]"
29 set InstallLabel
to "[InstallLabel]"
30 set AbortLabel
to "[AbortLabel]"
31 set intro
to "[IntroText1]
36 set chooseMyOwn
to "[ChooseMyOwnText]"
37 set listPrompt
to "[ListPromptText]"
38 set chooseManual
to "[ChooseManualText]"
39 set listOKLabel
to "[ListOKLabelText]"
40 set listCancelLabel
to "[ListCancelLabel]"
41 set appInvalid
to "[AppInvalidText1]
43 [AppInvalidText2]" -- string will begin with the chosen application's name
44 set startInstall
to "[StartInstallText1]
47 set IdentifyQ
to "[IdentifyQText]
50 set IdentifyYES
to "[IdentifyYES]"
51 set IdentifyNO
to "[IdentifyNO]"
52 set installFailed
to "[InstallFailedText]"
53 set installComplete
to "[InstallCompleteText]
55 [InstallCompleteText2]"
57 set sourcedir
to (do shell
script "dirname " & quoted form
of POSIX
path of (
path to of me))
60 display dialog intro
buttons {AbortLabel, InstallLabel}
default button 2
62 if (
button returned
of result)
is AbortLabel
then
66 set found_ooos_all
to ""
67 -- command might return an error if spotlight is disabled completely
69 set found_ooos_all
to (do shell
script "mdfind \"kMDItemContentType == 'com.apple.application-bundle' && kMDItemFSName == '[PRODUCTNAME].app'\"")
71 set found_ooos_all
to found_ooos_all &
"
74 set found_ooos_all_paragraphs
to paragraphs
in found_ooos_all
77 repeat with currentApp
in found_ooos_all_paragraphs
78 if currentApp
does not start with "/Volumes" then
79 copy currentApp
to the end of found_ooos
83 -- repeat with oneApp in found_ooos
84 -- display dialog oneApp
87 -- the choice returned is of type "list"
88 -- Show selection dialog only if more than one or no product was found
89 -- The first item is an empty string, if no app was found and no app started with "/Volumes"
90 -- The first item is chooseMyOwn, if no app was found and at least one app started with "/Volumes"
91 if (
get first item of found_ooos
as string)
is "" then
92 set the choice
to (
choose from list found_ooos
default items (
get second
item of found_ooos)
with prompt listPrompt OK
button name listOKLabel cancel
button name listCancelLabel)
93 if choice
is false then
94 -- do nothing, the user cancelled the installation
95 return 2 --aborted by user
96 else if (choice
as string)
is chooseMyOwn
then
97 -- yeah, one needs to use "choose file", otherwise
98 -- the user would not be able to select the .app
99 set the choice
to POSIX
path of (
choose file with prompt chooseManual
of type
"com.apple.application-bundle" without showing package
contents and invisibles)
101 else if (
get first item of found_ooos
as string)
is chooseMyOwn
then
102 set the choice
to (
choose from list found_ooos
default items (
get first item of found_ooos)
with prompt listPrompt OK
button name listOKLabel cancel
button name listCancelLabel)
103 if choice
is false then
104 -- do nothing, the user cancelled the installation
105 return 2 --aborted by user
106 else if (choice
as string)
is chooseMyOwn
then
107 -- yeah, one needs to use "choose file", otherwise
108 -- the user would not be able to select the .app
109 set the choice
to POSIX
path of (
choose file with prompt chooseManual
of type
"com.apple.application-bundle" without showing package
contents and invisibles)
111 else if (
get second
item of found_ooos
as string)
is chooseMyOwn
then
112 -- set choice to found installation
113 -- set the choice to (get first paragraph of found_ooos)
114 set the choice
to (
get first item of found_ooos)
116 set the choice
to (
choose from list found_ooos
default items (
get first item of found_ooos)
with prompt listPrompt OK
button name listOKLabel cancel
button name listCancelLabel)
117 if choice
is false then
118 -- do nothing, the user cancelled the installation
119 return 2 --aborted by user
120 else if (choice
as string)
is chooseMyOwn
then
121 -- yeah, one needs to use "choose file", otherwise
122 -- the user would not be able to select the .app
123 set the choice
to POSIX
path of (
choose file with prompt chooseManual
of type
"com.apple.application-bundle" without showing package
contents and invisibles)
127 -- now only check whether the path is really from [PRODUCTNAME]
129 do shell
script "grep '^ProductKey=[PRODUCTNAME] [PRODUCTVERSION]$' " & quoted form
of (choice
as string) &
"/Contents/Resources/bootstraprc"
131 display dialog (choice
as string) &
" " & appInvalid
buttons {OKLabel}
default button 1 with icon 0
132 return 3 --wrong target-directory
136 display dialog startInstall buttons {AbortLabel, InstallLabel} default button 2
138 if (button returned of result) is AbortLabel then
143 -- touch extensions folder to have LO register bundled dictionaries
144 set tarCommand
to "/usr/bin/tar -C " & quoted form
of (choice
as string) &
" -xjf " & quoted form
of sourcedir &
"/tarball.tar.bz2 && touch " & quoted form
of (choice
as string) &
"/Contents/Resources/extensions"
146 (* A start of unchanged LO must take place so Gatekeeper will verify
147 the signature prior to installing the languagepack
149 set apppath
to POSIX
path of choice
150 if application apppath
is not running
then
151 -- this will flash the startcenter once...
152 tell application apppath
to activate
153 tell application apppath
to quit
155 do shell
script tarCommand
157 on error errMSG
number errNUM
158 display dialog IdentifyQ
buttons {IdentifyYES, IdentifyNO}
with icon 2
159 if (
button returned
of result)
is IdentifyYES
then
161 do shell
script tarCommand
with administrator privileges
162 on error errMSG
number errNUM
163 display dialog installFailed
buttons {OKLabel}
default button 1 with icon 0
164 -- -60005 username/password wrong
165 -- -128 aborted by user
166 -- 2 error from tar - tarball not found (easy to test)
170 return 2 -- aborted by user
174 display dialog installComplete
buttons {OKLabel}
default button 1