-
Notifications
You must be signed in to change notification settings - Fork 0
/
GalleryViewPoke
180 lines (160 loc) · 5.46 KB
/
GalleryViewPoke
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
#!/bin/sh
#set -x
TOOL_NAME="Microsoft Office 2016 for Mac Gallery View Changer"
TOOL_VERSION="1.0"
## Copyright (c) 2016 Microsoft Corp. All rights reserved.
## Scripts are not supported under any Microsoft standard support program or service. The scripts are provided AS IS without warranty of any kind.
## Microsoft disclaims all implied warranties including, without limitation, any implied warranties of merchantability or of fitness for a
## particular purpose. The entire risk arising out of the use or performance of the scripts and documentation remains with you. In no event shall
## Microsoft, its authors, or anyone else involved in the creation, production, or delivery of the scripts be liable for any damages whatsoever
## (including, without limitation, damages for loss of business profits, business interruption, loss of business information, or other pecuniary
## loss) arising out of the use of or inability to use the sample scripts or documentation, even if Microsoft has been advised of the possibility
## of such damages.
## Feedback: pbowden@microsoft.com
# Constants
REGISTRY="$HOME/Library/Group Containers/UBF8T346G9.Office/MicrosoftRegistrationDB.reg"
WORD2016PATH="/Applications/Microsoft Word.app"
EXCEL2016PATH="/Applications/Microsoft Excel.app"
POWERPOINT2016PATH="/Applications/Microsoft PowerPoint.app"
SCRIPTPATH=$( cd $(dirname $0) ; pwd -P )
function ShowUsage {
# Shows tool usage and parameters
echo $TOOL_NAME - $TOOL_VERSION
echo "Purpose: Enables and disables the default gallery view in Office 2016 for Mac applications"
echo "Usage: GalleryPoke [--Disable] [--Enable]"
echo "Example: GalleryPoke --Disable"
echo
exit 0
}
function CheckRegistryExists {
# Check if Registry exists
if [ ! -f "$REGISTRY" ]; then
echo "WARNING: Registry DOES NOT exist at path $REGISTRY. Attempting to create..."
mkdir "$HOME/Library/Group Containers/UBF8T346G9.Office"
cp "$SCRIPTPATH/TemplateRegDB.reg" "$REGISTRY"
if [ "$?" != "0" ]; then
echo "ERROR: Registry could not be created."
exit 1
fi
fi
}
function CheckLaunchState {
# Checks to see if a process is running
local RUNNING_RESULT=$(ps ax | grep -v grep | grep "$1")
if [ "${#RUNNING_RESULT}" -gt 0 ]; then
echo "1"
else
echo "0"
fi
}
function GetNodeId {
# Get node_id value from Registry
local NAME="$1"
local PARENT="$2"
local NODEVALUE=$(sqlite3 "$REGISTRY" "SELECT node_id from HKEY_CURRENT_USER WHERE name='$NAME' AND parent_id=$PARENT;")
if [ "$NODEVALUE" == '' ]; then
echo "0"
else
echo "$NODEVALUE"
fi
}
function GetNodeVal {
# Get node value from Registry
local NAME="$1"
local NODEID="$2"
local NODEVALUE=$(sqlite3 "$REGISTRY" "SELECT node_id from HKEY_CURRENT_USER_values WHERE name='$NAME' AND parent_id=$NODEID;")
if [ "$NODEVALUE" == '' ]; then
echo "0"
else
echo "$NODEVALUE"
fi
}
function InsertNode {
# Insert new node into Registry
local NAME="$1"
local PARENT="$2"
sqlite3 "$REGISTRY" "INSERT INTO HKEY_CURRENT_USER ('parent_id','name') VALUES ($PARENT,'$NAME');"
}
function InsertValue {
# Insert new value into Registry
local NODE="$1"
local NAME="$2"
local TYPE="$3"
local VALUE="$4"
sqlite3 "$REGISTRY" "INSERT INTO HKEY_CURRENT_USER_values ('node_id','name','type','value') VALUES ($NODE,'$NAME',$TYPE,'$VALUE');"
}
function DeleteValue {
# Delete value from Registry
local NAME="$1"
local NODEID="$2"
sqlite3 "$REGISTRY" "DELETE FROM HKEY_CURRENT_USER_values WHERE name='$NAME' and node_id=$NODEID;"
}
# Evaluate command-line arguments
if [[ $# = 0 ]]; then
ShowUsage
else
for KEY in "$@"
do
case $KEY in
--Help|-?|--help)
ShowUsage
shift # past argument
;;
--Disable|-d|--disable)
shift # past argument
DISABLEGALLERY=true
;;
--Enable|-e|--enable)
ENABLEGALLERY=true
shift # past argument
;;
*)
ShowUsage
;;
esac
shift # past argument or value
done
fi
## Main
# Check that MicrosoftRegistryDB.reg actually exists. If it doesn't, attempt to create it.
CheckRegistryExists
# Walk the registry to find the id of the node that we need
KEY_SOFTWARE=$(GetNodeId "Software" '-1')
KEY_MICROSOFT=$(GetNodeId "Microsoft" "$KEY_SOFTWARE")
KEY_OFFICE=$(GetNodeId "Office" "$KEY_MICROSOFT")
KEY_VERSION=$(GetNodeId "14.0" "$KEY_OFFICE")
# The 14.0 node doesn't exist by default, so if it's not already there, create it
if [ "$KEY_VERSION" == "0" ]; then
InsertNode "14.0" "$KEY_OFFICE"
fi
KEY_VERSION=$(GetNodeId "14.0" "$KEY_OFFICE")
KEY_COMMON=$(GetNodeId "Common" "$KEY_VERSION")
# The Common node doesn't exist by default, so if it's not already there, create it
if [ "$KEY_COMMON" == "0" ]; then
InsertNode "Common" "$KEY_VERSION"
fi
KEY_COMMON=$(GetNodeId "Common" "$KEY_VERSION")
KEY_WIZARD=$(GetNodeId "Wizard" "$KEY_COMMON")
# The Wizard node doesn't exist by default, so if it's not already there, create it
if [ "$KEY_WIZARD" == "0" ]; then
InsertNode "Wizard" "$KEY_COMMON"
fi
KEY_WIZARD=$(GetNodeId "Wizard" "$KEY_COMMON")
# Remove the existing values if they are present
DeleteValue "FNMSWD" "$KEY_WIZARD"
DeleteValue "FNXCEL" "$KEY_WIZARD"
DeleteValue "FNPPT3" "$KEY_WIZARD"
if [ $DISABLEGALLERY ]; then
InsertValue "$KEY_WIZARD" "FNMSWD" "4" "0"
InsertValue "$KEY_WIZARD" "FNXCEL" "4" "0"
InsertValue "$KEY_WIZARD" "FNPPT3" "4" "0"
echo "The default gallery view is now disabled."
fi
if [ $ENABLEGALLERY ]; then
InsertValue "$KEY_WIZARD" "FNMSWD" "4" "1"
InsertValue "$KEY_WIZARD" "FNXCEL" "4" "1"
InsertValue "$KEY_WIZARD" "FNPPT3" "4" "1"
echo "The default gallery view is now enabled."
fi
echo
exit 0