<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 14 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        margin-bottom:.0001pt;
        font-size:11.0pt;
        font-family:"Calibri","sans-serif";
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {mso-style-priority:99;
        color:purple;
        text-decoration:underline;}
span.EmailStyle17
        {mso-style-type:personal-compose;
        font-family:"Calibri","sans-serif";
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:72.0pt 72.0pt 72.0pt 72.0pt;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="EN-GB" link="blue" vlink="purple">
<div class="WordSection1">
<p class="MsoNormal">I’m not sure if there is a bug in the way that manual package installation is handled (unless it’s by design?), or more likely I have made a mistake in my package? A packages installed as a dependency to a package that is installed manually
 wants to uninstall itself again on next synchronization.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">For instance: I have a package, vc-runtime-2005, to install the MS VC++ runtimes which depends on both the x86 and x64 packages (I felt it was more elegant to do it this way than one package which contains combined checks for both architectures,
 if applicable, and installed both if either check fails):<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">[Originally the check, install, remove and upgrade statements weren’t here – I added these to ensure that the problem wasn’t being caused by wpkg not being able to tell if this parent package had installed successfully, see final paragraph
 below]<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><package id="vc-runtime-2005" name="Visual C++ 2005 Runtime" revision="8" reboot="false" priority="10"><o:p></o:p></p>
<p class="MsoNormal">                <depends package-id="vc-runtime-2005-x86" /><o:p></o:p></p>
<p class="MsoNormal">                <depends package-id="vc-runtime-2005-x64" architecture="x64" /><o:p></o:p></p>
<p class="MsoNormal">                <check type="file" condition="exists" path="%CommonProgramFiles%\wpkg-meta\vc-runtime-2005" /><o:p></o:p></p>
<p class="MsoNormal">                <install cmd='%COMSPEC% /c mkdir "%CommonProgramFiles%\wpkg-meta\vc-runtime-2005"' /><o:p></o:p></p>
<p class="MsoNormal">                <remove cmd='%COMSPEC% /c rmdir /S /Q "%CommonProgramFiles%\wpkg-meta\vc-runtime-2005"' /><o:p></o:p></p>
<p class="MsoNormal">                <upgrade include="install" /><o:p></o:p></p>
<p class="MsoNormal"></package><o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">The child packages then contain their own check and install/upgrade/remove statements just for the one architecture.<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">With this example, if I install the vc-runtime-2005-x86 manually from the command line it stays installed.  However, if I install just the vc-runtime-2005 ‘parent’ package, the packages install properly and succeed the post-install checks. 
 They show up in /query:i as installed:<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Visual C++ 2005 Runtime<o:p></o:p></p>
<p class="MsoNormal">    ID:                vc-runtime-2005<o:p></o:p></p>
<p class="MsoNormal">    Revision:          8<o:p></o:p></p>
<p class="MsoNormal">    Reboot:            false<o:p></o:p></p>
<p class="MsoNormal">    Execute:           -<o:p></o:p></p>
<p class="MsoNormal">    Priority:          10<o:p></o:p></p>
<p class="MsoNormal">    Status:            Installed<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Visual C++ 2005 Runtime (x64)<o:p></o:p></p>
<p class="MsoNormal">    ID:                vc-runtime-2005-x64<o:p></o:p></p>
<p class="MsoNormal">    Revision:          4<o:p></o:p></p>
<p class="MsoNormal">    Reboot:            false<o:p></o:p></p>
<p class="MsoNormal">    Execute:           -<o:p></o:p></p>
<p class="MsoNormal">    Priority:          10<o:p></o:p></p>
<p class="MsoNormal">    Status:            Installed<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Visual C++ 2005 Runtime (x86)<o:p></o:p></p>
<p class="MsoNormal">    ID:                vc-runtime-2005-x86<o:p></o:p></p>
<p class="MsoNormal">    Revision:          4<o:p></o:p></p>
<p class="MsoNormal">    Reboot:            false<o:p></o:p></p>
<p class="MsoNormal">    Execute:           -<o:p></o:p></p>
<p class="MsoNormal">    Priority:          10<o:p></o:p></p>
<p class="MsoNormal">    Status:            Installed<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Yet /query:m shows that removal is pending, and sure enough /synchronize will remove them: (on this occasion I’d manually installed the –x86 package before the main package hence it doesn’t show up as pending removal)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Current profile packages:<o:p></o:p></p>
<p class="MsoNormal">Visual C++ 2005 Runtime (x64)<o:p></o:p></p>
<p class="MsoNormal">    ID:                vc-runtime-2005-x64<o:p></o:p></p>
<p class="MsoNormal">    Revision:          4<o:p></o:p></p>
<p class="MsoNormal">    Action:            Remove pending<o:p></o:p></p>
<p class="MsoNormal">    Reboot:            false<o:p></o:p></p>
<p class="MsoNormal">    Execute:           -<o:p></o:p></p>
<p class="MsoNormal">    Priority:          10<o:p></o:p></p>
<p class="MsoNormal">    Status:            Installed<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I have just put 1.3.1-RC12 on (upgrading from 1.3.1-RC4), reverted my test machine to a clean image and tried again and the same problem happens.  Is there something I’m missing here?<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">I’ve also just done some further testing:  If I add the parent package (vc-runtime-2005) either directly into the profile associated with this computer, or as a dependency on a package listed in the profile, then the child package (vc-runtime-2005-x64)
 does not get queued for removal.  Originally the parent package was queued for reinstallation every time, until I added a check for a successful install in the parent package (shown above).  With those statements added, it no longer wants to reinstall the
 parent or remove the child package, but if I then remove the parent package from inclusion in the profile, the child package is again shown for removal.   (apologies if this sentence doesn’t make sense)<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal">Thanks,<o:p></o:p></p>
<p class="MsoNormal">Steve.<o:p></o:p></p>
</div>
</body>
</html>