advice_printer / readme
Autsadin's picture
Upload readme
0402b94 verified
### `README.md`
```markdown
# Advice Printer for macOS
A simple desktop application built with Python that displays helpful advice. This guide provides instructions for setting up the development environment and building a distributable `.dmg` package on macOS.
## 1. Prerequisites
Before you begin, ensure you have the following software installed on your macOS system:
* **Git:** To clone the repository.
* **Conda:** For environment management. You can install it via [Anaconda](https://www.anaconda.com/products/distribution) or the more lightweight [Miniconda](https://docs.conda.io/en/latest/miniconda.html).
You can verify your Conda installation by running:
```bash
conda --version
```
## 2. Developer Setup
Follow these steps to set up the project for local development and running from the source code.
### Step 1: Clone the Repository
Open your terminal and clone this repository to your local machine.
```bash
git clone <your-repository-url>
cd <repository-directory>
```
### Step 2: Create and Activate the Conda Environment
We'll create an isolated Python environment to manage the project's dependencies. This ensures that the project's packages do not conflict with other Python projects on your system.
```bash
# Create a new conda environment named 'advice-printer' with Python 3.9
conda create -n advice-printer python=3.9
# Activate the newly created environment
conda activate advice-printer
```
Your terminal prompt should now be prefixed with `(advice-printer)`.
### Step 3: Install Dependencies
Install all the required Python packages using the `requirements.txt` file.
```bash
pip install -r requirements.txt
```
### Step 4: Run the Application from Source
You can now run the application directly to test it.
```bash
python adviceprinter.py
```
## 3. Building the macOS Application (`.dmg`)
These instructions will guide you through packaging the Python script into a standalone macOS application (`.app`) and then creating a user-friendly disk image (`.dmg`) for distribution.
### Step 1: Build the `.app` Bundle
We will use `PyInstaller` to bundle our script and all its dependencies into a single executable application.
```bash
pyinstaller --onefile --windowed --icon=logo.icns adviceprinter.py
```
**Command Breakdown:**
* `--onefile`: Bundles everything into a single executable file inside the `.app` package.
* `--windowed`: Prevents the terminal console window from appearing when the GUI application is launched.
* `--icon=logo.icns`: Sets the application icon. **Note:** For macOS, it is highly recommended to use a `.icns` file instead of `.ico` for proper display.
This command will create `build` and `dist` directories. Your final application, `adviceprinter.app`, will be inside the `dist` directory.
### Step 2: Prepare the Disk Image (`.dmg`) Contents
For this step, you will need **Homebrew** installed. If you don't have it, you can install it from [brew.sh](https://brew.sh/).
A `.dmg` file provides a familiar drag-and-drop installation experience for macOS users. We'll create a temporary folder to stage the contents of our disk image.
```bash
brew install create-dmg
# Create a staging directory for the DMG contents
mkdir dmg_content
# Copy the generated .app bundle into the staging directory
cp -R "dist/adviceprinter.app" dmg_content/
# Create a symbolic link to the user's Applications folder inside the staging directory
# This allows the user to drag the app to install it.
ln -s /Applications dmg_content/Applications
```
### Step 3: Create the Final `.dmg` File
Now, use macOS's built-in `hdiutil` to create the compressed disk image from our staging folder.
```bash
hdiutil create -volname "Advice Printer" -srcfolder dmg_content -ov -format UDZO "adviceprinter.dmg"
```
**Command Breakdown:**
* `-volname "Advice Printer"`: Sets the name of the mounted volume when the user opens the `.dmg`.
* `-srcfolder dmg_content`: Specifies the source directory we just prepared.
* `-ov`: Overwrites the DMG file if it already exists.
* `-format UDZO`: Creates a compressed, read-only disk image, which is ideal for distribution.
After this step, you will have a distributable **`adviceprinter.dmg`** file in your project's root directory.
## 4. Cleaning Up
After a successful build, you can remove the temporary directories and files created by PyInstaller and the DMG staging process.
```bash
# WARNING: This command permanently deletes files and directories.
rm -rf build/ dist/ dmg_content/ adviceprinter.spec
```
---
## 5. Installation and First Run (for End-Users)
If you have downloaded the `adviceprinter.dmg` file and want to install and run the application, follow these instructions.
### Step 1: Mount the Disk Image
1. Navigate to your `Downloads` folder (or wherever you saved the file).
2. Double-click the **`adviceprinter.dmg`** file.
3. A new window will appear on your desktop, showing the contents of the disk image. It will contain `adviceprinter.app` and a shortcut to your `Applications` folder.
*(Image for illustrative purposes)*
### Step 2: Install the Application
1. In the new window that appeared, **click and drag the `adviceprinter.app` icon** over to the **`Applications` folder icon**.
2. This will copy the application to your main Applications folder, installing it on your system.
3. You can now close the disk image window and eject the "Advice Printer" volume from your desktop or Finder sidebar (right-click -> Eject).
### Step 3: Handling the First Launch Security Warning
macOS has a security feature called Gatekeeper that blocks apps from unidentified developers by default. Because this app is not yet signed with an Apple Developer ID, you will need to grant it permission to run *one time*.
1. Open your **Applications** folder and double-click **`adviceprinter.app`** to launch it.
2. You will likely see a warning dialog that says: *"`adviceprinter.app` cannot be opened because the developer cannot be verified."*
3. Click **Cancel** on this dialog.
4. Open **System Settings** (the gear icon in your Dock).
5. Go to **Privacy & Security** in the sidebar.
6. Scroll down to the **Security** section. You will see a message near the bottom that reads:
> "`adviceprinter.app` was blocked from use because it is not from an identified developer."
7. Click the **Open Anyway** button next to this message.
*(Image for illustrative purposes)*
8. You will be prompted to enter your Mac password to confirm.
9. A final warning dialog will appear. Click **Open**.
The application will now launch.
### Step 4: Future Launches
Congratulations! You only need to perform the security steps once. From now on, you can open **Advice Printer** directly from your **Applications** folder or Launchpad just like any other app.