Difference between revisions of "7-Zip"

From WPKG | Open Source Software Deployment and Distribution
Jump to: navigation, search
(MSI installer package.xml: Tidied up info around choice of .msi or GUI for uninstall)
(Using .msi for Uninstall: Removed unnecessary XML parts)
Line 29: Line 29:
  
 
<source lang="xml">
 
<source lang="xml">
<?xml version="1.0" encoding="utf-8" ?>
 
<packages>
 
 
   <package id='7zip'  
 
   <package id='7zip'  
 
         name='7-Zip'  
 
         name='7-Zip'  
Line 46: Line 44:
  
 
   </package>
 
   </package>
</packages>
 
 
</source>
 
</source>
  

Revision as of 10:56, 2 August 2011

A free file compressor/extractor: www.7-zip.org


MSI installer package.xml

Using GUID for Uninstall

   <package id="7zip"
         name="7-Zip"
         revision="920"
         reboot="false"
         priority="0">

       <check type="uninstall" condition="exists" path="7-Zip 9.20" />

       <install cmd='msiexec /qn /norestart /i %SOFTWARE%\7zip\7z920.msi' />

       <upgrade cmd='msiexec /qn /norestart /i %SOFTWARE%\7zip\7z920.msi' />

       <remove  cmd='msiexec /qn /x{23170F69-40C1-2701-0920-000001000000}' />

   </package>

Using .msi for Uninstall

Alternatively to the use of the GUID you might use the MSI file for uninstall as well. This method has the advantage that since a new GUID string is used for each release, you need to search for the right ID at each release; using the MSI file obsoletes this step. However, with this approach you need to remember to leave older version(s) of the installer on your server.

  <package id='7zip' 
        name='7-Zip' 
        revision='465'
        priority='50' 
        reboot='false' >

    <check type='uninstall' condition='exists' path='7-Zip 4.65' />

    <install cmd='msiexec /i "%SOFTWARE%\7zip\7z465.msi" /qn' />

    <upgrade cmd='msiexec /i "%SOFTWARE%\7zip\7z465.msi" /qn' />

    <remove cmd='msiexec /x "%SOFTWARE%\7zip\7z465.msi" /qn' />

  </package>

MSI installer package.xml for use with existing older exe based installs

Background The hosts on my network are a mix of 7-Zip (various versions) .exe and .msi based installs. If you do a .msi based install without first uninstalling the .exe version it will leave some files from the .exe based install intact as well as an entry in "Add/Remove Programs".

Use this if you have existing .exe based installs of 7-Zip (such as 4.20) and you would like to uninstall them before switching to an .msi based install.

  <package id="7zip" 
        name="7-Zip" 
        revision="465" 
        reboot="false" 
        priority="0">

    <check type="uninstall" condition="exists" path="7-Zip 4.65" />

    <install cmd='%comspec% /c if exist "%PROGRAMFILES%\7-Zip\Uninstall.exe" "%PROGRAMFILES%\7-Zip\Uninstall.exe" /S' /> 
    <install cmd='msiexec /qn /norestart /i %SOFTWARE%\7zip\7z465.msi' />

    <upgrade cmd='%comspec% /c if exist "%PROGRAMFILES%\7-Zip\Uninstall.exe" "%PROGRAMFILES%\7-Zip\Uninstall.exe" /S' /> 
    <upgrade cmd='msiexec /qn /norestart /i %SOFTWARE%\7zip\7z465.msi' />

    <remove  cmd='msiexec /qn /norestart /x %SOFTWARE%\7zip\7z465.msi' />
  </package>

MSI installer for use with existing older exe based installs with mixed 32-bit/64-bit hosts

On a 64-bit host, the 64-bit version is more useful, because the 32-bit version of 7-Zip doesn't integrate in the Windows Explorer.

Warning: The approach demonstrated below which checks the value of "PROCESSOR_ARCHITECTURE" in the registry is flawed for several reasons:

  • When you remove the package, 7zip-x64 will never be detected as being successfully removed on 32bit systems (and vice versa), because the check on "PROCESSOR_ARCHITECTURE" will always return true.
  • When you upgrade the package and increase the revision number, WPKG will detect this and try to execute the upgrade commands even if the check statements return true! However on a 32bit host the upgrade commands of 7zip-x64 will of course always fail, as will the upgrade commands of 7zip on a 64bit host.
  • "So please remember that checks are NOT there to check if a package applies to the system if the checks are true. Checks are there to verify that a package is installed properly and WPKG will run the commands over and over again until checks become true. In case of your checks they will never become true since the package will for sure not change the PROCESSOR_ARCHITECTURE or CurrentVersion value." (WPKG author Rainer Meier - wpkg-users)

A better approach is to either A) put both packages "7zip" and "7zip-x64" in your package database without the checks on PROCESSOR_ARCHITECTURE and assign "7zip" only to 32bit hosts and "7zip-x64" only to 64bit hosts, or B) create only one package that contains both the 32bit and 64bit installers of 7-Zip, and write a custom installer script that checks the operating system and installs the correct version of 7-Zip.

<?xml version="1.0" encoding="UTF-8"?>

<packages>

<package
    id='7zip'
    name='7-Zip Packer'
    revision='465'
    priority='50'
    reboot='false'
    >
    <check type="logical" condition="or">
        <check
            type="registry"
            condition="equals"
            path="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE"
            value="AMD64"
            />
    <check
        type='uninstall'
        condition='exists'
        path='7-Zip 4.65'
        />
    </check>

    <!-- First Uninstall the .exe -->
    <install cmd='%comspec% /c if exist "%PROGRAMFILES%\7-Zip\Uninstall.exe" "%PROGRAMFILES%\7-Zip\Uninstall.exe" /S' />
    <install cmd='msiexec /i "%SOFTWARE%\7zip\7z465.msi" /qn /norestart' />

    <!-- If you do a .msi based install without first uninstalling the .exe
        version it will leave some files from the .exe based install intact
        as well as an entry in "Add/Remove Programs". -->
    <upgrade cmd='%comspec% /c if exist "%PROGRAMFILES%\7-Zip\Uninstall.exe" "%PROGRAMFILES%\7-Zip\Uninstall.exe" /S' />
    <upgrade cmd='msiexec /i "%SOFTWARE%\7zip\7z465.msi" /qn /norestart' />

</package>

<package
    id='7zip-64'
    name='7-Zip 4.65 (x64 edition)'
    revision='465'
    priority='50'
    reboot='false'
    >
    <check type="logical" condition="or">
        <check
            type="registry"
            condition="equals"
            path="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE"
            value="x86"
            />
        <check
            type='uninstall'
            condition='exists'
            path='7-Zip 4.65 (x64 edition)'
            />
    </check>

    <!-- First Uninstall the .exe -->
    <install cmd='%comspec% /c if exist "%PROGRAMFILES%\7-Zip\Uninstall.exe" "%PROGRAMFILES%\7-Zip\Uninstall.exe" /S' />
    <install cmd='msiexec /i "%SOFTWARE%\7zip\7z465-x64.msi" /qn /norestart' />

    <!-- If you do a .msi based install without first uninstalling the .exe
        version it will leave some files from the .exe based install intact
        as well as an entry in "Add/Remove Programs". -->
    <upgrade cmd='%comspec% /c if exist "%PROGRAMFILES%\7-Zip\Uninstall.exe" "%PROGRAMFILES%\7-Zip\Uninstall.exe" /S' />
    <upgrade cmd='msiexec /i "%SOFTWARE%\7zip\7z465-x64.msi" /qn /norestart' />

</package>


</packages>

EXE installer package.xml

  <package id="7zip"
        name="7-Zip"
        revision="464"
        reboot="false"     
        priority="0">

    <check type="file" condition="exists" path="%PROGRAMFILES%\7-Zip\7zFM.exe" />

    <install cmd='%SOFTWARE%\7zip\7z464.exe /S'>
    <exit code="0" />
    </install>

    <remove cmd='"%PROGRAMFILES%\7-Zip\Uninstall.exe" /S'>
        <exit code="0"/>
    </remove>

  </package>

MSI Installer package.xml, sets 7-zip as default archive application

In meantime, while 7-zip author considers installer switches for file associations, you can use registry files to do it yourself.

<packages>
  <package id="7zip" 
        name="7-Zip" 
        revision="465" 
        priority="0" 
        reboot="false">
    <check type="uninstall" condition="exists" path="7-Zip 4.65"/>

    <install cmd="msiexec /qn /norestart /i %SOFTWARE%\7zip\7z465.msi"/>
    <install cmd="regedit /s %SETTINGS%\7zip.reg"/>

    <upgrade cmd="msiexec /qn /norestart /i %SOFTWARE%\7zip\7z465.msi"/>
    <upgrade cmd="regedit /s %SETTINGS%\7zip.reg"/>

    <remove cmd="msiexec /qn /x{23170F69-40C1-2701-0465-000001000000}"/>
  </package>
</packages>

You can use a batch-script (tested for Version 9.20), to add the extension. Feel free to add further extensions to 7-Zip

Shortly explained what the script is doing:

* This batch grabs the extension from the with space delimited extension list (EXTN=001-9 ... zip-1)
* <extension>-<standard-icon in 7z.dll> means that the first part is the name of the extension. The second part is the icon, which is stored within the 7z.dll.
* This data will be used to automatically add the desired values to the registry.

ATTENTION: Please install 7-Zip x86 for x86 systems only and not on x64 Systems. Otherwise you have to check prior, which programfiles folder to use. (see batch script below %PROGRAMFILES% / %PROGRAMFILES(x86)%)

@echo off

SET SC=HKLM\Software\Classes
SET Extn=001-9 7z-0 arj-4 bz2-2 bzip2-2 cab-7 cpio-7 deb-11 dmg-17 gz-14 fat-21 gz-14 gzip-14 hfs-18 iso-8 lha-6 lzh-6 lzma-16 ntfs-22 rar-3 rpm-10 split-9 squashfs-24 swm-15 tar-13 taz-5 tbz-2 tbz2-2 tgz-14 tpz-14 txz-23 vhd-20 wim-15 xar-19 xz-23 z-5 zip-1001-9 7z-0 arj-4 bz2-2 bzip2-2 cab-7 cpio-7 deb-11 dmg-17 gz-14 fat-21 gz-14 gzip-14 hfs-18 iso-8 lha-6 lzh-6 lzma-16 ntfs-22 rar-3 rpm-10 split-9 squashfs-24 swm-15 tar-13 taz-5 tbz-2 tbz2-2 tgz-14 tpz-14 txz-23 vhd-20 wim-15 xar-19 xz-23 z-5 zip-1

FOR %%j IN (%Extn%) DO (
	FOR /F "tokens=1,2 delims=-" %%A IN ("%%j") DO (
		REG ADD %SC%\.%%A /VE /D "7-Zip.%%A" /F
		REG ADD %SC%\7-Zip.%%A /VE /D "%%A Archive" /F
		REG ADD %SC%\7-Zip.%%A\DefaultIcon /VE /D "%PROGRAMFILES%\7-Zip\7z.dll,%%B" /F
		REG ADD %SC%\7-Zip.%%A\shell\open\command /VE /D "\"%PROGRAMFILES%\7-Zip\7zFM.exe\" \"%%1\"" /F
        )
)

Alternative the .reg file:

Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.7z]
@="7-Zip.7z"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.arj]
@="7-Zip.arj"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.bz2]
@="7-Zip.bz2"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.bzip2]
@="7-Zip.bzip2"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.cab]
@="7-Zip.cab"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.cpio]
@="7-Zip.cpio"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.deb]
@="7-Zip.deb"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.dmg]
@="7-Zip.dmg"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.gz]
@="7-Zip.gz"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.gzip]
@="7-Zip.gzip"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.hfs]
@="7-Zip.hfs"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.iso]
@="7-Zip.iso"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.lha]
@="7-Zip.lha"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.lzh]
@="7-Zip.lzh"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.lzma]
@="7-Zip.lzma"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.rar]
@="7-Zip.rar"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.rpm]
@="7-Zip.rpm"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.split]
@="7-Zip.split"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.swm]
@="7-Zip.swm"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tar]
@="7-Zip.tar"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.taz]
@="7-Zip.taz"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tbz]
@="7-Zip.tbz"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tbz2]
@="7-Zip.tbz2"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tgz]
@="7-Zip.tgz"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.tpz]
@="7-Zip.tpz"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.wim]
@="7-Zip.wim"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.xar]
@="7-Zip.xar"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.z]
@="7-Zip.z"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\.zip]
@="7-Zip.zip"

[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.7z]
@="7z Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.7z\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,0"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.7z\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.arj]
@="arj Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.arj\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,4"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.arj\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.bz2]
@="bz2 Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.bz2\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,2"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.bz2\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.bzip2]
@="bzip2 Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.bzip2\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,2"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.bzip2\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.cab]
@="cab Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.cab\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,7"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.cab\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.cpio]
@="cpio Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.cpio\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,12"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.cpio\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.deb]
@="deb Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.deb\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,11"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.deb\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.dmg]
@="dmg Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.dmg\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,17"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.dmg\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.gz]
@="gz Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.gz\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,14"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.gz\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.gzip]
@="gzip Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.gzip\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,14"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.gzip\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.hfs]
@="hfs Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.hfs\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,18"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.hfs\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.iso]
@="iso Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.iso\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,8"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.iso\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.lha]
@="lha Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.lha\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,6"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.lha\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.lzh]
@="lzh Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.lzh\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,6"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.lzh\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.lzma]
@="lzma Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.lzma\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,16"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.lzma\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.rar]
@="rar Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.rar\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,3"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.rar\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.rpm]
@="rpm Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.rpm\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,10"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.rpm\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.split]
@="split Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.split\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,9"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.split\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.swm]
@="swm Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.swm\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,15"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.swm\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tar]
@="tar Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tar\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,13"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tar\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.taz]
@="taz Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.taz\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,5"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.taz\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tbz]
@="tbz Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tbz\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,2"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tbz\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tbz2]
@="tbz2 Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tbz2\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,2"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tbz2\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tgz]
@="tgz Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tgz\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,14"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tgz\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tpz]
@="tpz Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tpz\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,14"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.tpz\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.wim]
@="wim Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.wim\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,15"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.wim\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.xar]
@="xar Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.xar\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,19"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.xar\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.z]
@="z Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.z\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,5"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.z\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.zip]
@="zip Archive"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.zip\DefaultIcon]
@="C:\\Program Files\\7-Zip\\7z.dll,1"
[HKEY_LOCAL_MACHINE\SOFTWARE\Classes\7-Zip.zip\shell\open\command]
@="\"C:\\Program Files\\7-Zip\\7zFM.exe\" \"%1\""

MSI installer package.xml for 7-zip x64

For the 64 bit version of 7-Zip you just have to change the check-flag. This is the method, which sets 7-Zip as default application for archives.

<package id="7zip-x64"
         name="7-Zip x64"
         revision="465"
         reboot="false"
         priority="0">
       <check type="uninstall" condition="exists" path="7-Zip 4.65 (x64 edition)" />
       <install cmd='msiexec /qn /norestart /i %SOFTWARE%\7zip\7z465-x64.msi' />
           <install cmd="regedit /s %SETTINGS%\7zip.reg"/>
       <upgrade cmd='msiexec /qn /norestart /i %SOFTWARE%\7zip\7z465-x64.msi' />
           <upgrade cmd="regedit /s %SETTINGS%\7zip.reg"/>
       <remove cmd='msiexec /x "%SOFTWARE%\7zip\7z465-x64.msi" /qn' />
   </package>

7-Zip EXE installer options

"Use the "/S" parameter to do a silent installation and the "/D=dir" parameter to specify the "output directory". These options are case-sensitive. 7-Zip uses the NSIS installer by Nullsoft." - http://www.7-zip.org/faq.html

7-ZIP 9.10 (beta) MSI installer for 32bit and 64bit hosts

<?xml version="1.0" encoding="utf-8" ?>
<packages>
<package
    id='7zip'
    name='7-Zip 9.10'
    revision='910'
    priority='50'
    reboot='false'
    >

    <check type="logical" condition="or">
        <check
            type="registry"
            condition="equals"
            path="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE"
            value="AMD64"
            />
    <check
        type='uninstall'
        condition='exists'
        path='7-Zip 9.10'
        />
    </check>

    <!-- First Uninstall the .exe -->
    <install cmd='%comspec% /c if exist "%PROGRAMFILES%\7-Zip\Uninstall.exe" "%PROGRAMFILES%\7-Zip\Uninstall.exe" /S' />
    <install cmd='msiexec /i "%SOFTWARE%\7zip\7z910.msi" /qn /norestart' />

    <!-- If you do a .msi based install without first uninstalling the .exe
        version it will leave some files from the .exe based install intact
        as well as an entry in "Add/Remove Programs". -->
    <upgrade cmd='%comspec% /c if exist "%PROGRAMFILES%\7-Zip\Uninstall.exe" "%PROGRAMFILES%\7-Zip\Uninstall.exe" /S' />
    <upgrade cmd='msiexec /i "%SOFTWARE%\7zip\7z910.msi" /qn /norestart' />
 
    <remove cmd='msiexec /x "%SOFTWARE%\7zip\7z910.msi" /qn' />
</package>

<package
    id='7zip-64'
    name='7-Zip 9.10 (x64 edition)'
    revision='910'
    priority='50'
    reboot='false'
    >
    <check type="logical" condition="or">
        <check
            type="registry"
            condition="equals"
            path="HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Environment\PROCESSOR_ARCHITECTURE"
            value="x86"
            />
        <check
            type='uninstall'
            condition='exists'
            path='7-Zip 9.10 (x64 edition)'
            />
    </check>
 
    <!-- First Uninstall the .exe -->
    <install cmd='%comspec% /c if exist "%PROGRAMFILES(x86)%\7-Zip\Uninstall.exe" "%PROGRAMFILES%(x86)\7-Zip\Uninstall.exe" /S' />
    <install cmd='msiexec /i "%SOFTWARE%\7zip\7z910-x64.msi" /qn /norestart' />
 
    <!-- If you do a .msi based install without first uninstalling the .exe
        version it will leave some files from the .exe based install intact
        as well as an entry in "Add/Remove Programs". -->
    <upgrade cmd='%comspec% /c if exist "%PROGRAMFILES(x86)%\7-Zip\Uninstall.exe" "%PROGRAMFILES%(x86)\7-Zip\Uninstall.exe" /S' />
    <upgrade cmd='msiexec /i "%SOFTWARE%\7zip\7z910-x64.msi" /qn /norestart' />
 
    <remove cmd='msiexec /x "%SOFTWARE%\7zip\7z910-x64.msi" /qn' />
</package>

</packages>

Links