<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.mediamonkey.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jespervdw</id>
	<title>MediaMonkey Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://www.mediamonkey.com/wiki/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Jespervdw"/>
	<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/Special:Contributions/Jespervdw"/>
	<updated>2026-05-09T23:17:16Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.41.4</generator>
	<entry>
		<id>https://www.mediamonkey.com/wiki/index.php?title=Installation_Packages_(MM4)&amp;diff=4657</id>
		<title>Installation Packages (MM4)</title>
		<link rel="alternate" type="text/html" href="https://www.mediamonkey.com/wiki/index.php?title=Installation_Packages_(MM4)&amp;diff=4657"/>
		<updated>2008-12-23T17:08:10Z</updated>

		<summary type="html">&lt;p&gt;Jespervdw: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;==Installation Packages structure==&lt;br /&gt;
&lt;br /&gt;
Additional Extensions can be easily installed in MediaMonkey using Installation Packages. Each installation package is a ZIP &lt;br /&gt;
file with MMIP extension, when such a file is executed, it is automatically installed in MediaMonkey (see Tools|Extensions menu item).&lt;br /&gt;
Inside the package can be included any files that need to be installed, but there are also some special files that can or must be included:&lt;br /&gt;
&lt;br /&gt;
;Install.ini&lt;br /&gt;
:Mandantory - this file describes the package and what to install.&lt;br /&gt;
;App.ico&lt;br /&gt;
:Optional - Icon of the package.&lt;br /&gt;
;Uninstall.ini&lt;br /&gt;
:Optional (but suggested) - describes steps on uninstall, which files to remove, etc.&lt;br /&gt;
;Uninstall.vbs&lt;br /&gt;
:Optional - is automatically preserved by installer and can be called by Uninstall.ini on uninstallation.&lt;br /&gt;
&lt;br /&gt;
===Install.ini file===&lt;br /&gt;
&lt;br /&gt;
The installation file has a structure of an ini file, i.e. some sections with keys and values. &lt;br /&gt;
&lt;br /&gt;
====[Header] section====&lt;br /&gt;
&lt;br /&gt;
Each install.ini file starts with a mandantory section [Header]. It contains basic information about the product being installed, namely:&lt;br /&gt;
&lt;br /&gt;
;ID&lt;br /&gt;
:Unique string identification of the product. It should contain only alphanumeric characters, digits or underscores.&lt;br /&gt;
;Title&lt;br /&gt;
:Product title shown to user.&lt;br /&gt;
;Description&lt;br /&gt;
:Detailed product description.&lt;br /&gt;
;VersionMajor&lt;br /&gt;
:Major version number.&lt;br /&gt;
;VersionMinor&lt;br /&gt;
:Minor version number.&lt;br /&gt;
;VersionRelease&lt;br /&gt;
:Release number.&lt;br /&gt;
;VersionBuild&lt;br /&gt;
:Build number. Any of these numbers can be missing, e.g. if only VersionMajor and VersionMinor are present, the version number shown to user would be &#039;VersionMajor.VersionMinor&#039;.&lt;br /&gt;
;Type&lt;br /&gt;
:Type of product being installed. Either script, skin or misc. This is used so that MM knows more about the extension.&lt;br /&gt;
;UpdateURL&lt;br /&gt;
:URL where MM should look for updates of this product. If this key is missing, MM can still try to find out whether a new version has been released by asking MM web scripting repository using product ID above.&lt;br /&gt;
;ConfigurationScript&lt;br /&gt;
:A script file to execute. There is either a fully specified path entered here.&lt;br /&gt;
;ConfigurationProcedure&lt;br /&gt;
A name of function to be called within the script file. If this entry is missing or empty, it&#039;s supposed that there&#039;s no need for calling a function and simple execution of the script file does whatever a developer wants to do.&lt;br /&gt;
&lt;br /&gt;
====Other sections====&lt;br /&gt;
&lt;br /&gt;
After the header section, there can follow an arbitrary number of other sections specifying actions installer should do. The possible sections follow.&lt;br /&gt;
&lt;br /&gt;
NOTE: Sections are executed in order of appearance.&lt;br /&gt;
&lt;br /&gt;
====[Copy] section====&lt;br /&gt;
&lt;br /&gt;
This section tells where individual files from the installer ZIP file should be placed. Expected keys there include:&lt;br /&gt;
;Src&lt;br /&gt;
:Source file name in the installer ZIP file.&lt;br /&gt;
;Tgt&lt;br /&gt;
:Destination file path. It can contain constants useful for placing files in common paths (the same as InnoSetup constants). Currently implemented constants: &lt;br /&gt;
:*{app} = MediaMonkey installation folder.&lt;br /&gt;
;Flags&lt;br /&gt;
:Comma separated list of flags related to this copy operation. Can be any of:&lt;br /&gt;
:;Overwriteifnewer&lt;br /&gt;
::If the target file already exists, it will be overwritten only if the source file is newer. If this flag isn&#039;t specified, the target file will always be overwritten.&lt;br /&gt;
If your package contains various files to be copied, you need one [Copy] Section for each individual file.&lt;br /&gt;
&lt;br /&gt;
====[Delete] section====&lt;br /&gt;
&lt;br /&gt;
This section is primarily for &#039;uninstall.ini&#039; file. The only parameter is:&lt;br /&gt;
&lt;br /&gt;
;File&lt;br /&gt;
:Full path of the file to be deleted.&lt;br /&gt;
&lt;br /&gt;
====[Execute] section====&lt;br /&gt;
&lt;br /&gt;
This section allows developer to execute a script and thus do any other necessary installation/uninstallation actions, for example prepare Scripts.ini content. Expected keys here are:&lt;br /&gt;
;File&lt;br /&gt;
:A script file to execute. There is either a fully specified path entered here, or if there is no path information, the script is expected to be located in the installation ZIP file and is prepared to a temporary location prior its execution. For uninstaller &#039;uninstall.vbs&#039; can be specified here and it would be called from its location.&lt;br /&gt;
;Function&lt;br /&gt;
:A name of function to be called within the script file. If this entry is missing or empty, it&#039;s supposed that there&#039;s no need for calling a function and simple execution of the script file does whatever a developer wants to do.&lt;br /&gt;
&lt;br /&gt;
===Uninstall.ini file===&lt;br /&gt;
&lt;br /&gt;
&#039;Uninstall.ini&#039; file will is very similar to &#039;Install.ini&#039; file, just [Header] section is missing. Other sections allow developers to properly delete installed files and remove any other traces of installation, e.g. execute a script that would delete some entries in Scripts.ini file.&lt;br /&gt;
&lt;br /&gt;
==Sample Installation Package for Skins==&lt;br /&gt;
Sample MMIP file can contain e.g. the following files:&lt;br /&gt;
*App.ico icons shown in the extenions dialog&lt;br /&gt;
*Install.ini file that tells where stuff is copied to&lt;br /&gt;
*Uninstall.ini tells what should be deleted when uninstalling&lt;br /&gt;
&lt;br /&gt;
===Sample Install.ini file===&lt;br /&gt;
&lt;br /&gt;
Comments in [] should be removed&lt;br /&gt;
&amp;lt;source lang=ini&amp;gt;&lt;br /&gt;
[Header]&lt;br /&gt;
ID=UniqueSkinName [this is used when MM needs to see if update is available]&lt;br /&gt;
Title=Skin Name&lt;br /&gt;
Description=Well a description&lt;br /&gt;
VersionMajor=1&lt;br /&gt;
VersionMinor=0&lt;br /&gt;
VersionRelease=0&lt;br /&gt;
VersionBuild=0&lt;br /&gt;
Type=skin [so MM knows what it is]&lt;br /&gt;
UpdateURL= [leave blank no specs are out yet]&lt;br /&gt;
&lt;br /&gt;
[Copy]&lt;br /&gt;
Src=skinfile.msz&lt;br /&gt;
Tgt={app}\skins\skinfile.msz&lt;br /&gt;
&lt;br /&gt;
[Copy]&lt;br /&gt;
[you can copy more stuff if you want]&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sample Uninstall.ini file===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=ini&amp;gt;&lt;br /&gt;
[Delete]&lt;br /&gt;
File={app}\skins\skinfile.msz&lt;br /&gt;
File={app}\skins\someicon.ico&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Sample Installation Package for Scripts==&lt;br /&gt;
&lt;br /&gt;
===Sample content of MMIP file===&lt;br /&gt;
&lt;br /&gt;
Sample MMIP file can contain e.g. the following files:&lt;br /&gt;
*App.ico&lt;br /&gt;
*Install.ini&lt;br /&gt;
*Sample Option Sheets.vbs&lt;br /&gt;
*Uninstall.ini&lt;br /&gt;
*Uninstall.vbs&lt;br /&gt;
&lt;br /&gt;
===Sample Install.ini file===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=ini&amp;gt;&lt;br /&gt;
[Header]&lt;br /&gt;
ID=MyScript1&lt;br /&gt;
Title=Sample Option Sheets&lt;br /&gt;
Description=Sample Option Sheets.vbs&lt;br /&gt;
VersionMajor=1&lt;br /&gt;
VersionMinor=0&lt;br /&gt;
VersionRelease=0&lt;br /&gt;
VersionBuild=0&lt;br /&gt;
Type=script&lt;br /&gt;
UpdateURL=http://localhost/myscript1/version.xml&lt;br /&gt;
&lt;br /&gt;
[Copy]&lt;br /&gt;
Src=Sample Option Sheets.vbs&lt;br /&gt;
Tgt={app}\scripts\auto\Sample Option Sheets.vbs&lt;br /&gt;
&lt;br /&gt;
[Copy]&lt;br /&gt;
Src=Sample.ico&lt;br /&gt;
Tgt={app}\scripts\auto\Sample.ico&lt;br /&gt;
&lt;br /&gt;
[Copy]&lt;br /&gt;
Src=Icons\*.*&lt;br /&gt;
Tgt={app}\Icons\&lt;br /&gt;
&lt;br /&gt;
[Execute]&lt;br /&gt;
File={app}\scripts\auto\Sample Option Sheets.vbs&lt;br /&gt;
Function=OnStartup()&lt;br /&gt;
&lt;br /&gt;
Alternative is to use an install.vbs&lt;br /&gt;
[Execute]&lt;br /&gt;
File=install.vbs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sample install.vbs===&lt;br /&gt;
&amp;lt;source lang=vb&amp;gt;&lt;br /&gt;
scriptName = &amp;quot;Sample Script&amp;quot;&lt;br /&gt;
&#039;Add scripts.ini entries&lt;br /&gt;
Dim inip : inip = SDB.ApplicationPath&amp;amp;&amp;quot;Scripts\Scripts.ini&amp;quot;&lt;br /&gt;
Dim inif : Set inif = SDB.Tools.IniFileByPath(inip)&lt;br /&gt;
If Not (inif Is Nothing) Then&lt;br /&gt;
	inif.StringValue(scriptName,&amp;quot;Filename&amp;quot;) = &amp;quot;Auto\AdvShutdown.vbs&amp;quot;&lt;br /&gt;
	inif.StringValue(scriptName,&amp;quot;Procname&amp;quot;) = &amp;quot;ShutdownUI&amp;quot;&lt;br /&gt;
	inif.StringValue(scriptName,&amp;quot;Order&amp;quot;) = &amp;quot;99&amp;quot;&lt;br /&gt;
	inif.StringValue(scriptName,&amp;quot;DisplayName&amp;quot;) = &amp;quot;Advanced Shutdown&amp;quot;&lt;br /&gt;
	inif.StringValue(scriptName,&amp;quot;Description&amp;quot;) = &amp;quot;Shuts down PC after some time with more options&amp;quot;&lt;br /&gt;
	inif.StringValue(scriptName,&amp;quot;Language&amp;quot;) = &amp;quot;VBScript&amp;quot;&lt;br /&gt;
	inif.StringValue(scriptName,&amp;quot;ScriptType&amp;quot;) = &amp;quot;0&amp;quot;&lt;br /&gt;
	inif.StringValue(scriptName,&amp;quot;Shortcut&amp;quot;) = &amp;quot;Ctrl+Shift+s&amp;quot; &#039;don&#039;t use this combo as it is already used in other scripts&lt;br /&gt;
	SDB.RefreshScriptItems&lt;br /&gt;
End If&lt;br /&gt;
	&lt;br /&gt;
&#039; Add entries for Mediamonkey.ini	&lt;br /&gt;
&#039; Here you set the variables you need&lt;br /&gt;
&#039; all 3 types are shown here&lt;br /&gt;
Dim ini: Set ini = SDB.IniFile&lt;br /&gt;
If Not ini.ValueExists(&amp;quot;AdvShutdown&amp;quot;,&amp;quot;Enabled&amp;quot;) Then ini.StringValue(&amp;quot;AdvShutdown&amp;quot;,&amp;quot;Enabled&amp;quot;) = &amp;quot;Enabled&amp;quot;&lt;br /&gt;
If Not ini.ValueExists(&amp;quot;AdvShutdown&amp;quot;,&amp;quot;Timeout&amp;quot;) Then ini.BoolValue(&amp;quot;AdvShutdown&amp;quot;,&amp;quot;Timeout&amp;quot;) = True&lt;br /&gt;
If Not ini.ValueExists(&amp;quot;AdvShutdown&amp;quot;,&amp;quot;Action&amp;quot;)  Then ini.IntValue(&amp;quot;AdvShutdown&amp;quot;,&amp;quot;Action&amp;quot;) = 1&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sample Uninstall.ini file===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=ini&amp;gt;&lt;br /&gt;
[Delete]&lt;br /&gt;
File={app}\scripts\auto\Sample Option Sheets.vbs&lt;br /&gt;
File={app}\scripts\auto\Sample.ico&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[Execute]&lt;br /&gt;
File=Uninstall.vbs&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Sample Uninstall.vbs file===&lt;br /&gt;
&lt;br /&gt;
&amp;lt;source lang=&amp;quot;vb&amp;quot;&amp;gt;&lt;br /&gt;
myName = &amp;quot;Sample Script&amp;quot;    &#039;Put script name here&lt;br /&gt;
iniSec = &amp;quot;SampleScript&amp;quot;     &#039;Put ini section name here&lt;br /&gt;
&lt;br /&gt;
&#039; Deletes settings from MediaMonkey.ini&lt;br /&gt;
MsgDeleteSettings = &amp;quot;Do you want to remove &amp;quot; &amp;amp; myName &amp;amp; &amp;quot; settings as well?&amp;quot; &amp;amp; vbNewLine &amp;amp; _&lt;br /&gt;
                    &amp;quot;If you click No, script settings will be left in MediaMonkey.ini&amp;quot;&lt;br /&gt;
&lt;br /&gt;
If (Not (SDB.IniFile Is Nothing)) and (MsgBox(MsgDeleteSettings, vbYesNo) = vbYes) Then&lt;br /&gt;
   SDB.IniFile.DeleteSection(iniSec)&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
&#039;Remove entries from scripts.ini&lt;br /&gt;
Dim inip : inip = SDB.ApplicationPath&amp;amp;&amp;quot;Scripts\Scripts.ini&amp;quot;&lt;br /&gt;
Dim inif : Set inif = SDB.Tools.IniFileByPath(inip)&lt;br /&gt;
If Not (inif Is Nothing) Then&lt;br /&gt;
  inif.DeleteSection(iniSec)&lt;br /&gt;
  SDB.RefreshScriptItems&lt;br /&gt;
End If&lt;br /&gt;
&lt;br /&gt;
&amp;lt;/source&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
*[[SDBIniFile|SDBiniFile object]]&lt;/div&gt;</summary>
		<author><name>Jespervdw</name></author>
	</entry>
</feed>