Difference between revisions of "7-Zip"

From WPKG | Open Source Software Deployment and Distribution
Jump to: navigation, search
(Updated REG-file (fixed icons, replaced HKCR with HKLM))
(MSI installer for use with existing older exe based installs with mixed 32-bit/64-bit hosts: Added information about drawback of this technique.)
Line 70: Line 70:
 
== MSI installer for use with existing older exe based installs with mixed 32-bit/64-bit hosts==
 
== MSI installer for use with existing older exe based installs with mixed 32-bit/64-bit hosts==
  
On a 64-bit host, install the 64-bit version is mandatory as the 32-bit version on 7-Zip doesn't integrate in the explorer.  
+
On a 64-bit host, install the 64-bit version is mandatory as the 32-bit version on 7-Zip doesn't integrate in the explorer.
 +
 
 +
This demonstrates an interesting technique for distinguishing between 32 and 64 bit. It does have a drawback in that when you remove a package, the 64-bit package will never be detected as successfully removed on 32-bit systems, and vice versa.
  
 
<source lang="xml">
 
<source lang="xml">

Revision as of 02:25, 10 July 2010

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


MSI installer package.xml

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

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

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

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

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

   </package>

Alternatively to the use of the GUID you might use the MSI file for uninstall as well. I prefer this method since some packagers tend to create new GUID strings on each release - so you need to search for the right ID at each release. Using the MSI file obsoletes this step:

<?xml version="1.0" encoding="utf-8" ?>
<packages>
  <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>
</packages>

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, install the 64-bit version is mandatory as the 32-bit version on 7-Zip doesn't integrate in the explorer.

This demonstrates an interesting technique for distinguishing between 32 and 64 bit. It does have a drawback in that when you remove a package, the 64-bit package will never be detected as successfully removed on 32-bit systems, and vice versa.

<?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>

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