

<!--#include virtual="/doctype.html" -->
<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
    
    <link href="/css/ooo.css" rel="stylesheet" type="text/css">
    

  <meta http-equiv="Content-Type" content="text/html; charset=utf-8">



  <title>Support: Mac</title>
  <style>

    h3 {
        background-color: #DEE4EE;
        color: #06348C;
        counter-reset: question;
    }

    p {
        text-align: justify;
        margin-left: 1em;
    }

    div.faqitem {
        margin: 1em;
    }
    
    .faqitem .question {
        color: #06348C;
        font-size: larger;
    }

    .faqitem .question:before {
        content: "Q" counter(question) " - ";
        counter-increment: question;
    }

    .faqitem .answer {
        margin-top: 1em;
        margin-left: 3em;
        text-align: justify;
        font-style: italic;
    }
    
  </style>

    
    <script src="https://www.apachecon.com/event-images/snippet.js"></script>
  </head>
  <body>
    <!--#include virtual="/brand.html" -->
    <div id="topbara">
      <!--#include virtual="/topnav.html" -->
      <div id="breadcrumbsa"><a href="/">home</a>&nbsp;&raquo;&nbsp;<a href="/porting/">porting</a>&nbsp;&raquo;&nbsp;<a href="/porting/mac/">mac</a></div>
    </div>
    <div id="clear"></div>
      
      
    <div id="content">
      
      

<h3>Support Resources</h3>

<p>So you've started using OpenOffice.org. Wonderful! Chances are you
may have questions about problems you encounter in the software or want
to learn more about it. There are a number of ways you can get help
with the software. Visit our <a href="http://support.openoffice.org/index.html">OpenOffice.org Support Home</a> for more information on getting help with OpenOffice.org</p>


<p>

</p>
<p style="font-weight: bolder;">To find information, resources, and much more in your native language, please visit the <a href="http://projects.openoffice.org/native-lang.html">NLC projet page</a>.</p>


<h3> Download troubles</h3>

<p>There are various reports from users on our mailinglist that they
have problems downloading OpenOffice.org using Safari the default
browser for Mac OS X. Safari isn't capable of directly downloading from
FTP servers so Safari passes download requests for files from a FTP
server through to the Finder, the Finder connects to the FTP server and
fails. This may be a bug in Mac OS X 10.3.x and 10.4.x which cannot be
solved by OpenOffice.org developers.</p>

<p> There are two known solutions:

</p>
<ul>

  <li>
    <p>Even though the Finder has problems with passed through
downloads from Safari the download often works when you copy the
download url to the clipboard, switch to the Finder-&gt;Go-&gt;Connect
to Server and paste the url in the empty line below Server Adress.
Click "Connect" and the see if the Finder now connects to the download
server.</p>
  </li>


  <li>
    <p>Mozilla/Gecko based browsers like <a href="httP://www.mozilla.com/firefox">Firefox</a> or <a href="http://www.caminobrowser.org/">Camino</a> are capable of directly downloading from FTP servers.</p>
  </li>


</ul>

<p>As the file is downloaded, you will see the icon of the Disk Image
(dmg) File appear. When the download is finished, simply double click
on the icon of the "dmg" file, and drag the OpenOffice.org "Icon" in
your applications folder. </p>


<h3 id="howto">OpenOffice.org X11 How-To</h3>

<p>There is a small how-to install and use X11 and OpenOffice.org Mac OS X available in 
</p>
<ul>

  <li><a href="http://porting.openoffice.org/mac/Howto_OOo_2.0_MacOSX_english.pdf">English</a></li>

  <li><a href="http://fr.openoffice.org/docs/MacOSX_Install_fr_HowTo_OOo2_V1.4.pdf"> French</a></li>

  <li><a href="http://de.openoffice.org/servlets/ProjectDocumentList?folderID=552">German</a></li>

</ul>

<p></p>


<h3 id="faq">FAQ</h3>


<div class="faqitem"><span style="text-decoration: underline;"><span style="font-style: italic;">Please take a look at our new <a href="faq/index.html">FAQ pages</a>.</span></span></div>


<p>For any other installation or mac-specific question visit this <a href="http://wiki.services.openoffice.org/wiki/List_of_OpenOffice.org_Mac_OS_X_issues_and_problems">page</a>. There are the latest news and informations on known OpenOffice.org Mac OS X (X11) issues and problems.</p>




<h3>Mailinglist</h3>

<p>If you still can't find your answer there, try the following community staffed mailinglist: <strong>users@openoffice.apache.org</strong>

</p>
<p> To make life easier for yourself and other volunteers on the
mailinglist please subscribe to the mailinglist. In order to do so send
a blank email to this <a href="mailto:users-subscribe@openoffice.apache.org">address</a>
wait for the daemon to answer you. Now answer the mail the mailinglist
daemon sent to you yourself by pressing the reply button in your
mailer. After the second confirmation your able to post and receive
mails from <strong>users@openoffice.apache.org</strong></p>


<p>In order to make life easier for both end-users and developers we
decided to move end-user support to the project wide users mailinglist
while mac porting remains the mailinglist for OpenOffice.org mac
development.</p>
 

<p>Remember, these are staffed by <b>volunteers</b> who donate their time to help users, so be patient and polite:</p>


<h3>Online Help and Manuals</h3>

<p>One of the quickest references to get to is the OpenOffice.org
Online Help (under the Help menu). This online help contains a thorough
description of the application.</p>

<p>You can also go to your local bookstore and pick up several books such as the <i>OpenOffice.org Resource Kit</i> and <i>StarOffice Companion</i>.
While these books are not specific to Mac OS X, OpenOffice.org on Mac
OS X is nearly identical to all other platforms and these books will
still be valuable references.</p>


<p>If you get help from any of these places, please consider helping
out by browsing through them from time to time and answering questions
to which you know or learned the answers. Support, too, is an effort
that needs </p>


<h3>Paid Support</h3>

<p>If you require commercial support, you may want to check out some of the <a href="http://support.openoffice.org/index.html#cst">commercial OpenOffice.org support providers</a>.
Be aware that not all may provide assistance with Mac OS X, however, so
be sure to check to make sure they support the Mac OS X plat form..</p>


<h3>Filing Bugs</h3>

<p>OK, say you've found a glitch in the software (a bug, like the
software crashes when opening this certain file) and haven't been able
to find an answer in any of the support resources. The next step is to
file an issue about it. See the <a href="http://qa.openoffice.org/issue_handling/bug_writing_guidelines.html">IssueZilla</a>
page for more information about what a proper report should contain and
where to file it. Mac-specific bugs should be filed against the <b>porting</b> project.</p>

<p><i>Last updated by $Author: smsm1 $ on $Date: 2007/02/11 01:26:04 $</i></p>


      
    </div>
    <!--#include virtual="/footer.html" -->
  </body>
</html>
