This article describes where I stand on using Microsoft Office in Linux. This time, I tried to explore a little more, so I walk you through what I tried and what didn’t work.
Installing Office 2007
In the past, I have used Play on Linux. This time, I decided to go back to my previous post where I was helping a friend out.
I installed a few prerequisites:
sudo apt-get install mesa-utils mesa-utils-extra libgl1-mesa-glx:i386 libgl1-mesa-dev ia32-libs sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/mesa/libGL.so sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so /usr/lib/i386-linux-gnu/libGL.so sudo add-apt-repository ppa:ubuntu-wine/ppa sudo apt-get update sudo apt-get install wine
Currently, I have Wine’s version 1.6:
skp@pecan:~$ wine --version wine-1.6-rc2
Next, I created a Wine Prefix separate and special for my office. Now, here I made a mistake, but I decided to leave it alone. Accidentally, I placed a “2010” in the prefix name when the version I was installing version 2007. Please don’t let that confuse you.
export WINEPREFIX="$HOME/.wineprefixes/office2010/" export WINEARCH="win32"
I used winetricks to install a few requisites into the Wine Prefix.
winetricks dotnet20 msxml6 corefonts
Then, I ran winecfg and set the gdiplus and msxml6 to native.
Next, I used WineTricks to install Internet Explorer 7. My hope was that this would help with the Online actions that Office tries to do. I am not sure that it really did help, but it didn’t hurt.
winetricks ie7
Finally, I put the CD into the drive and ran the install…
wine office12CD/OFFICE12/setup.exe
This time, I didn’t screenshot all of the install steps, but I just basically walked through the wizard. After installing, I opened up Word where it asked for my Name/Initials and it made me activate.
What Wine Prefixes Am I Using?
Since I played around so much, I ended up with a couple of Wine Prefixes installed. And, I have lost track of which one I am using. So, I thought it would be a good exercise to launch it from the Unity menu and see if I can figure out what I am using.
With it launched, I found the Process ID with ps:
$ ps -ef | grep -i winword skp 26973 1 1 11:07 ? 00:00:06 C:\Program Files\Microsoft Office\Office12\WINWORD.EXE skp 27163 16217 0 11:12 pts/2 00:00:00 grep --color=auto -i winword
Then, I found the Wine Prefix for that running program from the environment variables used when it started:
skp@pecan:~/Downloads/worddocs$ xargs --null --max-args=1 echo < /proc/26973/environ | grep "^WINEPREFIX=" WINEPREFIX=/home/skp/.wineprefixes/office2010
I could even tell what Desktop file was used by the launcher:
skp@pecan:~/Downloads/worddocs$ xargs --null --max-args=1 echo < /proc/26973/environ | grep "^GIO_LAUNCHED_DESKTOP_FILE=" GIO_LAUNCHED_DESKTOP_FILE=/home/skp/.local/share/applications/wine-Programs-Microsoft Office-Microsoft Office Word 2007.desktop
Then, I could see what the path was and get an idea of what version of Wine was running with these commands:
skp@pecan:~/Downloads/worddocs$ sudo readlink -f /proc/26973/cwd /home/skp skp@pecan:~/Downloads/worddocs$ sudo readlink -f /proc/26973/exe /usr/bin/wine-preloader
As an alternative, I launched Word from Play On Linux, and it showed me the alternate Wine version and Wine Prefix.
skp@pecan:~/Downloads/worddocs$ ps -ef | grep -i winword skp 3898 3235 3 17:39 ? 00:00:02 WINWORD.EXE skp 12181 16217 0 17:41 pts/2 00:00:00 grep --color=auto -i winword skp@pecan:~/Downloads/worddocs$ xargs --null --max-args=1 echo < /proc/3898/environ | grep "^WINEPREFIX=" WINEPREFIX=/home/skp/.PlayOnLinux//wineprefix/Office2007 skp@pecan:~/Downloads/worddocs$ sudo readlink -f /proc/3898/cwd /home/skp/.PlayOnLinux/wineprefix/Office2007/drive_c/Program Files/Microsoft Office/Office12 skp@pecan:~/Downloads/worddocs$ sudo readlink -f /proc/3898/exe /home/skp/.PlayOnLinux/wine/linux-x86/1.2.3/bin/wine-preloader
Open with…
One of the things I have always wanted to figure out is how to get the “Open with” context menu to work with Wine. Unfortunately, I haven’t figured it out yet.
Here’s what I have now. The old “doc” format, has two “Word” options in the context menu:
The new “docx” format, has different options:
I found the mime type that the system is using:
cd /usr/share/mimelnk/application grep '^Patterns=.*doc' * grep "^MimeType=" libreoffice-openxmlformats-officedocument-wordprocessingml-document.desktop
The result I got for docx was:
MimeType=application/vnd.openxmlformats-officedocument.wordprocessingml.document
Then, I looked for all .desktop files that had this Mime in it. I wrote a little shell script to do so:
#!/bin/sh extension=$1 echo "Searching for extension $extension" cd /usr/share/mimelnk/application mimeFile=`grep -il "^Patterns=.*\*\.$extension" *` if [ "$?" -ne 0 ] then echo "Mime not found" exit 1 fi echo "MimeFile: $mimeFile" mimeType=`grep "^MimeType=" "$mimeFile" | sed "s/^MimeType=//"` echo "Mime Type: $mimeType" for f in `locate \*.desktop` do grep -i ^MimeType=.\*$mimeType "$f" > /dev/null if [ "$?" -eq 0 ] then echo $f fi done
The output looked like this:
skp@pecan:~/Downloads/worddocs$ ./mimeSearch.sh docx Searching for extension docx MimeFile: libreoffice-openxmlformats-officedocument-wordprocessingml-document.desktop Mime Type: application/vnd.openxmlformats-officedocument.wordprocessingml.document /usr/lib/libreoffice/share/xdg/writer.desktop /usr/share/app-install/desktop/calligraactive:calligraactive.desktop /usr/share/app-install/desktop/calligraauthor:kde4__author.desktop /usr/share/app-install/desktop/calligrawords:kde4__words.desktop /usr/share/app-install/desktop/libreoffice-writer:libreoffice-writer.desktop /usr/share/app-install/desktop/webservice-office-zoho:webservice-office-zoho-writer.desktop /usr/share/applications/libreoffice-writer.desktop /usr/share/mimelnk/application/libreoffice-openxmlformats-officedocument-wordprocessingml-document.desktop
Those don’t seem to match what I have on the menu, and none of them look like a Wine Word installation. So, I think I am missing something.
Adding a Default Code Style
I normally paste a lot of Code or Command-Line Output into my documents. Rather than creating a “Code” style in every document, I finally wised up and added the Style to the Global Template (Normal.dotm).
You can find this template in C:\users\<username>\Application Data\Microsoft\Templates.
So, I opened Word and used the Open command to open the Normal.dotm.
Then, I created a new Style. On the Style bar, I clicked the more button:
Then, I clicked the new style button:
I gave my new Style a name, “Code”, and I edited the character properties on the main screen:
This is what I changed:
- Font: “Courier New”
- Size: 9 pt
Then, I opened up the paragraph properties with: Format button > Paragraph…
On the paragraph properties, these are the changes that I made.
- Line Spacing: Single
- checked “Don’t add space between paragraphs of the same style”
After saving it, every document I create has this new style.
Issues
Office works, at least Word and Excel, works well for the most part. There are a few hiccups. I thought that I would list them here in hopes that maybe at some point down the road, I could come back and see them fixed.
First, every time I exit Word, it crashes. It doesn’t seem to cause any problems. The documents close and save first. I just have to remember to uncheck the box so that it doesn’t start back up.
Second, all of the online actions don’t work. That’s not a big deal. It just means the online updates probably don’t work. Also, the online Clip Art search works.
For example, I can search clip art for “Dog”, and it returns a result:
This is all fine and good except that, I had told it to include the Web collections in the search. Are you telling me no pictures of Dogs exist in the Web Collections? I think the online access just doesn’t work from Word.
If it click on the online link for clip art, it opens an Internet Explorer Window, but it never connects. It just sits like that for a long time.
Office 2013
Just recently, I got access to Office 2013 through my work. I couldn’t get it installed, but I thought I would document as far as I got with hopes that things will change.
First, I created a new Wine Prefix specifically for the new version. I also installed Internet Explorer into it because the download page is picky.
Here are the commands so far:
export WINEPREFIX="$HOME/.wineprefixes/office2013/" winetricks dotnet20 msxml6 corefonts
Next, I ran Internet Explorer to try to download it:
wine "C:\Program Files\Internet Explorer\iexplore"
I didn’t get anywhere with that. IE had too many issues. So, I decided to install Firefox inside of Wine. Office apparently just requires Windows to download not IE.
winetricks firefox
I was able to login and download the setup file. Then, I could run it using Wine. Apparently, this file just downloads the full install.
I tried running winecfg and changing it to both Windows 7 or Windows 8. Both gave me this result:
Here are some of the output messages that I saw on the command line:
err:ole:CoGetClassObject class {dcb00c01-570f-4a9b-8d69-199fdba5723b} not registered err:ole:CoGetClassObject class {dcb00c01-570f-4a9b-8d69-199fdba5723b} not registered err:ole:create_server class {dcb00c01-570f-4a9b-8d69-199fdba5723b} not registered fixme:ole:CoGetClassObject CLSCTX_REMOTE_SERVER not supported err:ole:CoGetClassObject no class object {dcb00c01-570f-4a9b-8d69-199fdba5723b} could be created for context 0x17 ... p11-kit: couldn't load module: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: /usr/lib/i386-linux-gnu/pkcs11/gnome-keyring-pkcs11.so: cannot open shared object file: No such file or directory fixme:shell:SetCurrentProcessExplicitAppUserModelID L"Microsoft.Office.15.ClickToRun": stub
It didn’t close after it showed the error. I had to find the process and kill it… ps -ef | grep -i office
I tried to install gnome-keyring: i386
http://askubuntu.com/questions/127848/wine-cant-find-gnome-keyring-pkcs11-so
The class not registered error seems to be related to this bug:
http://www.winehq.org/pipermail/wine-bugs/2012-April/319924.html
http://bugs.winehq.org/show_bug.cgi?id=30384
Resources
- Ask Ubuntu: Add custom command in the open with dialog?
- Unix & Linux Stack Exchange: How to read environment variables of a process
- Ask Ubuntu: Where are file associations stored?
- Ask Ubtunu: Add custom command in the open with dialog?
- Office Support: Change the Normal template (Normal.dot)
- Windows 7 Forums: Windows 7: Where is normal.dot in Office 2007?