Unpacking Software Livestream

Join our monthly Unpacking Software livestream to hear about the latest news, chat and opinion on packaging, software deployment and lifecycle management!

Learn More

Chocolatey Product Spotlight

Join the Chocolatey Team on our regular monthly stream where we put a spotlight on the most recent Chocolatey product releases. You'll have a chance to have your questions answered in a live Ask Me Anything format.

Learn More

Chocolatey Coding Livestream

Join us for the Chocolatey Coding Livestream, where members of our team dive into the heart of open source development by coding live on various Chocolatey projects. Tune in to witness real-time coding, ask questions, and gain insights into the world of package management. Don't miss this opportunity to engage with our team and contribute to the future of Chocolatey!

Learn More

Calling All Chocolatiers! Whipping Up Windows Automation with Chocolatey Central Management

Webinar from
Wednesday, 17 January 2024

We are delighted to announce the release of Chocolatey Central Management v0.12.0, featuring seamless Deployment Plan creation, time-saving duplications, insightful Group Details, an upgraded Dashboard, bug fixes, user interface polishing, and refined documentation. As an added bonus we'll have members of our Solutions Engineering team on-hand to dive into some interesting ways you can leverage the new features available!

Watch On-Demand
Chocolatey Community Coffee Break

Join the Chocolatey Team as we discuss all things Community, what we do, how you can get involved and answer your Chocolatey questions.

Watch The Replays
Chocolatey and Intune Overview

Webinar Replay from
Wednesday, 30 March 2022

At Chocolatey Software we strive for simple, and teaching others. Let us teach you just how simple it could be to keep your 3rd party applications updated across your devices, all with Intune!

Watch On-Demand
Chocolatey For Business. In Azure. In One Click.

Livestream from
Thursday, 9 June 2022

Join James and Josh to show you how you can get the Chocolatey For Business recommended infrastructure and workflow, created, in Azure, in around 20 minutes.

Watch On-Demand
The Future of Chocolatey CLI

Livestream from
Thursday, 04 August 2022

Join Paul and Gary to hear more about the plans for the Chocolatey CLI in the not so distant future. We'll talk about some cool new features, long term asks from Customers and Community and how you can get involved!

Watch On-Demand
Hacktoberfest Tuesdays 2022

Livestreams from
October 2022

For Hacktoberfest, Chocolatey ran a livestream every Tuesday! Re-watch Cory, James, Gary, and Rain as they share knowledge on how to contribute to open-source projects such as Chocolatey CLI.

Watch On-Demand

zelda3-launcher (Portable) 1.3.6

Legal Disclaimer: Neither this package nor Chocolatey Software, Inc. are affiliated with or endorsed by Anthony Johns. The inclusion of Anthony Johns trademark(s), if any, upon this webpage is solely to identify Anthony Johns goods or services and not for commercial purposes.

  • 1
  • 2
  • 3

Some Checks Have Failed or Are Not Yet Complete

Not All Tests Have Passed


Validation Testing Passed


Verification Testing Passed

Details

Scan Testing Resulted in Flagged as a Note:

At least one file within this package has greater than 0 detections, but less than 5

Details
Learn More

Deployment Method: Individual Install, Upgrade, & Uninstall

To install zelda3-launcher (Portable), run the following command from the command line or from PowerShell:

>

To upgrade zelda3-launcher (Portable), run the following command from the command line or from PowerShell:

>

To uninstall zelda3-launcher (Portable), run the following command from the command line or from PowerShell:

>

Deployment Method:

NOTE

This applies to both open source and commercial editions of Chocolatey.

1. Enter Your Internal Repository Url

(this should look similar to https://community.chocolatey.org/api/v2/)


2. Setup Your Environment

1. Ensure you are set for organizational deployment

Please see the organizational deployment guide

2. Get the package into your environment

  • Open Source or Commercial:
    • Proxy Repository - Create a proxy nuget repository on Nexus, Artifactory Pro, or a proxy Chocolatey repository on ProGet. Point your upstream to https://community.chocolatey.org/api/v2/. Packages cache on first access automatically. Make sure your choco clients are using your proxy repository as a source and NOT the default community repository. See source command for more information.
    • You can also just download the package and push it to a repository Download

3. Copy Your Script

choco upgrade zelda3-launcher -y --source="'INTERNAL REPO URL'" [other options]

See options you can pass to upgrade.

See best practices for scripting.

Add this to a PowerShell script or use a Batch script with tools and in places where you are calling directly to Chocolatey. If you are integrating, keep in mind enhanced exit codes.

If you do use a PowerShell script, use the following to ensure bad exit codes are shown as failures:


choco upgrade zelda3-launcher -y --source="'INTERNAL REPO URL'" 
$exitCode = $LASTEXITCODE

Write-Verbose "Exit code was $exitCode"
$validExitCodes = @(0, 1605, 1614, 1641, 3010)
if ($validExitCodes -contains $exitCode) {
  Exit 0
}

Exit $exitCode

- name: Install zelda3-launcher
  win_chocolatey:
    name: zelda3-launcher
    version: '1.3.6'
    source: INTERNAL REPO URL
    state: present

See docs at https://docs.ansible.com/ansible/latest/modules/win_chocolatey_module.html.


chocolatey_package 'zelda3-launcher' do
  action    :install
  source   'INTERNAL REPO URL'
  version  '1.3.6'
end

See docs at https://docs.chef.io/resource_chocolatey_package.html.


cChocoPackageInstaller zelda3-launcher
{
    Name     = "zelda3-launcher"
    Version  = "1.3.6"
    Source   = "INTERNAL REPO URL"
}

Requires cChoco DSC Resource. See docs at https://github.com/chocolatey/cChoco.


package { 'zelda3-launcher':
  ensure   => '1.3.6',
  provider => 'chocolatey',
  source   => 'INTERNAL REPO URL',
}

Requires Puppet Chocolatey Provider module. See docs at https://forge.puppet.com/puppetlabs/chocolatey.


4. If applicable - Chocolatey configuration/installation

See infrastructure management matrix for Chocolatey configuration elements and examples.

Package Approved

This package was approved by moderator flcdrg on 02 Sep 2024.

Description

Zelda 3 Launcher

A minimalistic Launcher that will download and build Zelda 3, the reimplementation of The Legend of Zelda - A Link to the Past.

Installation

By default, the launcher will be installed to C:\Games\Zelda 3 Launcher. The launcher will build the game into a subfolder called zelda3. A shortcut will to Zelda 3 Launcher be added to the desktop and start menu.

The launcher will ask for a rom. It has to be from the US region with this exact SHA256 hash: 66871D66BE19AD2C34C927D6B14CD8EB6FC3181965B6E517CB361F7316009CFB.
Additionally, it needs to be located outside of the Zelda 3 Launcher directory.

When you first launch the launcher, it will have a button that says "Download". After it has finished downloading, you can play the game. The "Download" button will change to "Restore". This will make it build the game again. When the zelda3 repository is updated, the button will change to "Update", which will bulid the game again from the current repo.

Uninstallation

When uninstalling this package, it will remove both the launcher and the game, if the game is in the default zelda3 subdirectory. It will, however, backup save data and configuration.
See "Restore from backup" on how to restore from a backup.
See "Backup removal" if you want to remove the backup.

If you for some reason want to ununistall the Launcher and keep the game: move the zelda3 folder to any folder outside the "Zelda 3 Launcher" directory, and then uninstall the package.

If you only want to remove the game but keep the launcher: backup your save data and optionally the configuration file (see "Game data") by copying them to any location outside the zelda3 directory, then simply delete the zelda3 folder.

Restore from backup

To restore files from the backup, follow these steps in order:

  1. Download/build the game from the launcher
  2. Close the launcher.
  3. In Explorer, go to the Launcher's directory (default: C:\Games\Zelda 3 Launcher)
  4. Move the contents of the zelda3.bak@[save date] folder into the zelda3 folder (there will be a timestamp in place of [save date]). Replace all files when prompted.
  5. Delete the now empty zelda3.bak[save date] folder.

Backup removal

If you want to remove save data and configuration file backup after uninstallation, you must do so manually. Just delete the Zelda 3 Launcher folder (default location: C:\Games\Zelda 3 Launcher).

Game data

Default backup location: C:\Games\Zelda 3 Launcher\zelda3.bak[save date] (but instead of [save date], there will be a timestamp)
Default configuration file location: C:\Games\Zelda 3 Launcher\zelda3\zelda3.ini
Default save data location: C:\Games\Zelda 3 Launcher\zelda3\Saves


tools\chocolateybeforemodify.ps1
Start-CheckandStop "Zelda 3 Launcher"
tools\chocolateyinstall.ps1
$ErrorActionPreference = 'Stop' # stop on all errors
$toolsDir   = "$(Split-Path -parent $MyInvocation.MyCommand.Definition)"
$zipArchive = Join-Path $toolsDir -ChildPath 'Zelda_3_Launcher_v1.3.6.0.zip'
$unzipDir   = "C:\Games\Zelda 3 Launcher"
$executable = Join-Path $unzipDir -ChildPath 'Zelda 3 Launcher.exe'
$triforceIcon = Join-Path $toolsDir -ChildPath 'triforce.ico'

$unzipArgs = @{
  FileFullPath = $zipArchive
  Destination = $unzipDir
}

Get-ChocolateyUnzip @unzipArgs
Copy-Item $triforceIcon $unzipDir # In case the user wants to use this icon for either the launcher or the game (as of typing, the launcher does not add an icon to zelda3.exe when building it).
Install-ChocolateyShortcut -ShortcutFilePath "$env:UserProfile\Desktop\Zelda 3 Launcher.lnk" -TargetPath $executable -WorkingDirectory $unzipDir -Description "Launcher for Zelda 3"
Install-ChocolateyShortcut -ShortcutFilePath "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Zelda 3 Launcher.lnk" -TargetPath $executable -WorkingDirectory $unzipDir -Description "Launcher for Zelda 3"
tools\chocolateyuninstall.ps1
$ErrorActionPreference = 'Stop' # stop on all errors

function Test-PathBool($p) {
    return [bool](Test-Path -Path $p)
}

$unzipDir = "C:\Games\Zelda 3 Launcher"
$zelda3Dir = Join-Path $unzipDir -ChildPath 'zelda3'
$saveDir = Join-Path $zelda3Dir -ChildPath 'saves'
$saveFile = Join-Path $saveDir -ChildPath 'sram.dat'
$saveDirRef = Join-Path $saveDir -ChildPath 'ref'
$config = Join-Path $zelda3Dir -ChildPath 'zelda3.ini'

# Prevent uninstall if the game is running, so that no progress is lost
# This cannot be moved to chocolateybeforemodify.ps1 unless the feature suggested in the following issue is added:
# https://github.com/chocolatey/choco/issues/1731
Start-CheckandThrow "zelda3"

$unzipDirExists = Test-PathBool $unzipDir
if (-Not $unzipDirExists) {
    Write-Warning "Installation directory does not exist. The software may have been removed manually."
} else {

    # Remove save directory if empty
    $exists = Test-PathBool $saveDir
    $empty = -Not (Test-PathBool $saveDir\*)
    if ($exists -And $empty) {
        Remove-Item $saveDir
    }
    
    # To clean, we get everything we want to keep and move it to a temporary safe place ($TEMP), then delete everything in the original directory, then move the keeping-things back into the directory.
    
    $zelda3Exists = Test-PathBool $zelda3Dir
    $zelda3Empty = -Not (Test-PathBool $zelda3Dir\*)
    if ($zelda3Exists -And $zelda3Empty) {
        # Remove game directory
        Remove-Item $zelda3Dir
    } elseif ($zelda3Exists -And -Not $zelda3Empty) {
        Write-Warning 'Zelda 3 will be removed.'
        Write-Warning 'Settings and save data will be backed up.'
        Pause # Pause so that the user have time to read, and can abort if desired. Chocolatey stops Pause after 30 seconds by default.
    }
    
    # Detour to move existing backup directories to temporary location. We have to do this _before_ cleaning the launcher directory (or backups will get removed), but _after_ the "Zelda 3 will be removed" output and associated Pause, because otherwise, if the user aborts the script during the pause, they wouldn't be able to find their backups because we would have silently moved them away to the $TEMP already.
    $backupDirs = Get-ChildItem -Path $unzipDir -Directory -Filter "zelda3.bak*"
    $backupDirsExists = [bool]($backupDirs)
    $tempBackupsDir = Join-Path $env:TEMP -ChildPath 'zelda3baks'
    $tempBackupsDirExists = Test-PathBool $tempBackupsDir
    $tempBakDir = ''
    if ($backupDirsExists) {
        if (-Not $tempBackupsDirExists) {
            New-Item -Path $tempBackupsDir -ItemType "directory" 1> $null
            $tempBackupsDirExists = $true
        }
        foreach ($backupDir in $backupDirs) {
            $tempBakDir = Join-Path $tempBackupsDir -ChildPath $backupDir.Name
            Move-Item -Path $backupDir.FullName -Destination $tempBakDir
        }
    }

    # Clean game directory, backup if necessary
    if ($zelda3Exists -And -Not $zelda3Empty) {
        
        # Remove reference save files directory
        $saveDirRefexists = Test-PathBool $saveDirRef
        if ($saveDirRefexists) {
            Remove-Item $saveDirRef -Recurse -Force
        }

        # Set backup directory name
        $lastModified = Get-Date # Initialize variable
        $configDate = $lastModified # Initialize variable
        $saveDate = $lastModified # Initialize variable
        $saveFileExists = Test-PathBool $saveFile
        $configExists = Test-PathBool $config
        if ($configExists) {
            $configDate = (Get-Item $config).LastWriteTime
            $lastModified = $configDate
        }
        if ($saveFileExists) {
            $saveDate = (Get-Item $saveFile).LastWriteTime
            $lastModified = $saveDate
        }
        # It would make sense to here set $lastModified to whichever was modified last ($saveDate or $configDate). However, in an edge case scenario, this might cause save data to be unintentionally overwritten when config is newer than save data. This could be alternatively solved via prompting, but that seems suboptimal for Chocolatey. So let's just prioritize last modified date of save file (i.e. $saveDate) over the config file's date ($configDate). We might lose config in rare cases, but at least save data won't be lost.
        $lastModified = $lastModified.ToString("yyyy-MM-dd_HHmmss")
        $zelda3BackupName = "zelda3.bak@$lastModified" # If the zelda3 directory exists, the launcher will think the game is built (perhaps a bug report should be submitted to the launcher repo for that), so we let the directory be named $zelda3BackupName istead. This, of course, lets us have multiple backups, each with a timestamp in directory name, arguably simplifying uninstallation when there are existing backup(s). We let the user deal with that manually instead.
        $tempBakDir = Join-Path $tempBackupsDir -ChildPath $zelda3BackupName
        $tempBakDirExists = Test-PathBool $tempBakDir
        $saveDirExists = Test-PathBool $saveDir
        
        # Move save data to backup directory in temporary location
        if ($saveDirExists) {
            $tempZelda3BackupSaves = Join-Path $tempBakDir -ChildPath 'saves'
            if (-Not $tempBackupsDirExists) {
                New-Item -Path $tempBackupsDir -ItemType "directory" 1> $null
                $tempBackupsDirExists = $true
            }
            if (-Not $tempBakDirExists) {
                # It would only exist in an edge case where there is backup with the same date.
                New-Item -Path $tempBakDir -ItemType "directory" 1> $null
            }
            $exists = Test-PathBool $tempZelda3BackupSaves
            if ($exists) {
                # IMPROVE Merge directory instead of replace
                Remove-Item -Path $tempZelda3BackupSaves -Recurse  # Overwrite directory in edge case
            }
            Move-Item -Path $saveDir -Destination $tempZelda3BackupSaves
        }

        # Move config to backup directory in temporary location
        if ($configExists) {
            $tempBakDirExists = Test-PathBool $tempBakDir
            if (-Not $tempBackupsDirExists) {
                New-Item -Path $tempBackupsDir -ItemType "directory" 1> $null
                $tempBackupsDirExists = $true
            }
            if (-Not $tempBakDirExists) {
                New-Item -Path $tempBakDir -ItemType "directory" 1> $null
            }
            $tempZelda3BackupConfig = Join-Path $tempBakDir -ChildPath 'zelda3.ini'
            Move-Item -Path $config -Destination $tempZelda3BackupConfig -Force # Overwrite in edge case
        }

    }

    # Remove everything in the launcher directory, including zelda3
    Remove-Item $unzipDir\* -Force -Recurse

    # Move backup(s) back to the game directory
    $tempBackupsDirExists = Test-PathBool $tempBackupsDir
    if ($tempBackupsDirExists) {
        $tempBackupDirs = Get-ChildItem -Path $tempBackupsDir -Directory
        foreach ($backupDir in $tempBackupDirs) {
            $bakDir = Join-Path $unzipDir -ChildPath $backupDir.Name
            Move-Item -Path $backupDir.FullName -Destination $bakDir
        }
        Remove-Item $tempBackupsDir
        Write-Warning 'Manually remove the configuration and save data backup if desired. (See this package''s description for more details.)'
        Start-Sleep -Seconds 5 # time to read
    }

    # Remove Launcher installation directory if empty
    $unzipDirEmpty = -Not (Test-PathBool $unzipDir\*)
    if ($unzipDirEmpty) {
        Remove-Item $unzipDir -Force -Recurse
    }

}

# Remove desktop shortcut if it exists (it's plausible the user might have removed it)
$exists = Test-PathBool "$env:UserProfile\Desktop\Zelda 3 Launcher.lnk"
if ($exists) {
    Remove-Item "$env:UserProfile\Desktop\Zelda 3 Launcher.lnk"
}

# Remove start menu shortcut if it exists (it's plausible the user might have removed it)
$exists = Test-PathBool "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Zelda 3 Launcher.lnk"
if ($exists) {
    Remove-Item "$env:ProgramData\Microsoft\Windows\Start Menu\Programs\Zelda 3 Launcher.lnk"
}

Uninstall-ChocolateyZipPackage -Packagename $env:ChocolateyPackageName -ZipFileName 'Zelda_3_Launcher_v1.3.6.0.zip'
tools\LICENSE.txt
From: https://github.com/RadzPrower/Zelda-3-Launcher/blob/master/LICENSE

LICENSE

MIT License

Copyright (c) 2023 Anthony Johns

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
tools\triforce.ico
 
tools\VERIFICATION.txt
VERIFICATION
Verification is intended to assist the Chocolatey moderators and community
in verifying that this package's contents are trustworthy.

The installer has been downloaded from the official GitHub repository <https://github.com/RadzPrower/Zelda-3-Launcher/releases>
and can be verified like this:

1. Download Zelda_3_Launcher_v1.3.6.0.zip from this page:
<https://github.com/RadzPrower/Zelda-3-Launcher/releases/tag/v1.3.6.0>
2 Download triforce.ico from this page (right-click "view raw" save):
https://github.com/snesrev/zelda3/blob/fbbb3f967a51fafe642e6140d0753979e73b4090/src/platform/win32/triforce.ico
3. You can use one of the following methods to obtain checksums:
  - Use powershell function 'Get-Filehash'
  - Use chocolatey utility 'checksum.exe'
  
  Zelda_3_Launcher_v1.3.6.0.zip:
  checksum type: sha256
  checksum64: 04BD66EA5E4F5151D896AB18253C285B3D39C59A105B2C29E5073AF344A5CEF3
  
  triforce.ico:
  checksum type: sha256
  checksum64: 0578A42A9E772527B478E77663D7C1C69C47233EC019A5EF7A39BD26FFDD4116

4. Obtain the checksum of both the zip archive you downloaded in step 1, and of the zip archive that came with this package (in the same folder as VERIFICATION.txt). If they have the same hash, you have successfully verified this package.
5. You can also have a look at the scripts, chocolateyinstall.ps1 and chocolateyuninstall.ps1. Open a file in a text editor or IDE and see if it looks clean. If you want to learn more about this, check out the Chocolatey docs on creating packages <https://docs.chocolatey.org/en-us/create/create-packages/>

The license in 'LICENSE.txt' is obtained from <https://github.com/RadzPrower/Zelda-3-Launcher/blob/master/LICENSE>
tools\Zelda_3_Launcher_v1.3.6.0.zip
md5: 645A617F6212128F47DB313B8A073EF3 | sha1: 99CFA7539FFCC6923ABB9A94332494FD464B4D2D | sha256: 04BD66EA5E4F5151D896AB18253C285B3D39C59A105B2C29E5073AF344A5CEF3 | sha512: 8C715D523D0E5B887684940059D28F308DD603C6EE364E562F6B6803A01F6148F283575A908B7268707F8CB755B0D9B0443F70CD25DF5CBEBDB95B6EFEA82733

Log in or click on link to see number of positives.

In cases where actual malware is found, the packages are subject to removal. Software sometimes has false positives. Moderators do not necessarily validate the safety of the underlying software, only that a package retrieves software from the official distribution point and/or validate embedded software against official distribution point (where distribution rights allow redistribution).

Chocolatey Pro provides runtime protection from possible malware.

Add to Builder Version Downloads Last Updated Status

  • Made a change to closing settings window behavior so that it is consistent between the cancel button and the close (X) button.
  • Fixed runaway CPU usage while zelda3.exe was running due to it waiting on the game to close and resume control.
Discussion for the zelda3-launcher (Portable) Package

Ground Rules:

  • This discussion is only about zelda3-launcher (Portable) and the zelda3-launcher (Portable) package. If you have feedback for Chocolatey, please contact the Google Group.
  • This discussion will carry over multiple versions. If you have a comment about a particular version, please note that in your comments.
  • The maintainers of this Chocolatey Package will be notified about new comments that are posted to this Disqus thread, however, it is NOT a guarantee that you will get a response. If you do not hear back from the maintainers after posting a message below, please follow up by using the link on the left side of this page or follow this link to contact maintainers. If you still hear nothing back, please follow the package triage process.
  • Tell us what you love about the package or zelda3-launcher (Portable), or tell us what needs improvement.
  • Share your experiences with the package, or extra configuration or gotchas that you've found.
  • If you use a url, the comment will be flagged for moderation until you've been whitelisted. Disqus moderated comments are approved on a weekly schedule if not sooner. It could take between 1-5 days for your comment to show up.
comments powered by Disqus