{"id":18838303,"url":"https://github.com/rhvoice/msi","last_synced_at":"2025-07-04T19:35:13.322Z","repository":{"id":42211282,"uuid":"473321842","full_name":"RHVoice/msi","owner":"RHVoice","description":null,"archived":false,"fork":false,"pushed_at":"2025-04-04T10:54:33.000Z","size":112871,"stargazers_count":0,"open_issues_count":0,"forks_count":3,"subscribers_count":3,"default_branch":"main","last_synced_at":"2025-06-04T00:45:27.880Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":null,"language":null,"has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/RHVoice.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2022-03-23T19:00:12.000Z","updated_at":"2025-04-04T10:54:38.000Z","dependencies_parsed_at":"2022-08-12T09:50:12.382Z","dependency_job_id":"9f3ebdc7-f5fa-4f7e-9995-1e6e6bf27a7b","html_url":"https://github.com/RHVoice/msi","commit_stats":null,"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/RHVoice/msi","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHVoice%2Fmsi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHVoice%2Fmsi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHVoice%2Fmsi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHVoice%2Fmsi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/RHVoice","download_url":"https://codeload.github.com/RHVoice/msi/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/RHVoice%2Fmsi/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":263607300,"owners_count":23487770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-11-08T02:38:44.213Z","updated_at":"2025-07-04T19:35:13.300Z","avatar_url":"https://github.com/RHVoice.png","language":null,"funding_links":[],"categories":[],"sub_categories":[],"readme":"# Shared MSI packages\n\nThis document explains how RHVoice SAPI5 installer executables share\nMSI Packages for Core, Language and Voice, and how to create a\nconsistent and maintainable series of SAPI5 installs for your voice.\n\n## What goes into a SAPI5.exe for a voice install?\n\nThe exe contains your voice data files, wrapped inside an MSI package.  \n\nIt must also contain whatever version of the RHVoice language files\nthat your voice needs. That set of language files is also wrapped in its\nown MSI package.\n\nAnd finally, both a 32- and 64-bit versions of the RHVoice Core TTS,\neach in its own MSI package.\n\n## Understanding MSI package versioning.\n\nThe four components mentioned above (voice data, language files, and\ntwo versions of the core), all have their own RHVoice versions, and\nthey all have to be compatible with each other. But, in addition to\ntaking care of that version control system, you need to be aware of\nMSI package version effects. This is in order for you to upgrade your\nusers, or to supply users who have other voices in the same language\nas yours, and who obtained their language files elsewhere than from\nyou.\n\nWhen the Microsoft Installer opens a new package, it checks if it already has the contents of this package installed. Here is where problems could arise.  \n\nEvery MSI package is assigned a unique package code at build time. If\nthe package is removed and then rebuilt without any other changes\nbeing introduced, with exactly the same contents as before, the newly\nbuilt package file will still have a different package code.\n\nAnd two packages containing the same version of the same component,\nbut having different package codes, will cause an installation error.\n\nFor example, you are distributing an upgrade of your voice from your\nversion 4.0 to 4.1. You need to include in the exe the other three\ncomponents. Those - the core and the language pack - have not changed.\nBut we must make sure that we do not create new MSI packages for them.\nWe do not want the installation to fail because, say, the installer\nopens up what looks like a new MSI package for the language, only to\nfind that it contains the same version of the language files already\ninstalled. And thus the whole install fails. You will learn below how\nour exe build script takes care of this.\n\n## Building your voice installers\n\nWhen you build RHVoice on Windows by executing the `scons` command,\nvoice installer executables will be created for all the voices as part\nof the overall build process.\n\n### Which core MSIs will be used\n\nThe MSI packages containing the latest stable version of the core are\npublished in this repository. They will be used by default.\n\n### MSI packages of languages and voices\n\nThis is how the build script will select an appropriate MSI package\nfor each voice or language. The paths are relative to the root\ndirectory of the main RHVoice repository.\n\n1. Read the version number from the corresponding voice.info or\n   language.info file.\n\n2. Look for an MSI package with this version number in the\n   bin/msi/local directory. Here the build script expects to find your\n   locally saved packages from previous builds. Put here your voice\n   packages for reuse, as well as your language packages while the\n   language is in development and not considered stable.\n\n3. If no package has been found at step 2, the build script looks in\n   the bin/msi/shared directory. Here are the public MSI packages\n   shared in this repository: the core and the stable versions of the\n   languages.\n\n4. If no package has been found at step 3, the script builds a new one\n   and saves it in the build/windows/packages/sapi/msi directory. You\n   should copy any new packages you or other developers may need in\n   the future from this directory right away, as they may be\n   overwritten by a future build.\n\n## Your Responsibility for Voice MSI Package versioning.\n\nAs a result, one situation where you must take responsibility is when\nyou want to give your voice users upgrades to the core or to the\nlanguage, and when the voice itself has not changed. You are the one\nwho must supply the MSI package for the voice. You must not supply a\nbrand new MSI package for the voice. You must re-use the same MSI\npackage you last used to deliver the existing voice version to users.\nThus, it is imperative that you save each voice MSI Package that you\ndistribute. If you do not, and you want to distribute a core or\nlanguage update, you will need to ask your users to first uninstall\nthe voice.\n\n## Your responsibility as language developers.\n\nLanguage developers, please share your stable language MSI packages by\nmaking a pull request here, so other developers of voices for your\nlanguage can create compatible voice installers. We need your language\nMSI packages, not just the language files. If you have given a voice\nin your language to a SAPI user, and another developer wants to\ndistribute a different voice, that developer must include the same MSI\npackage of your language, and not just the same version of your\nlanguage files, with their voice, they will need one of your language\nMSI packages.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhvoice%2Fmsi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Frhvoice%2Fmsi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Frhvoice%2Fmsi/lists"}