cab installation and signing for Windows Mobile 2005

R

Richard Thombs

Hi,

I'm trying to get to grips with the changes around cab file
installation that WM 2005 introduces. Our application, like many others
I'm sure, implements an auto update process through the downloading and
installation of CAB files and occasionally of individual DLLs.

So far I can see that I will have issues with the new restrictions
about not being able to re-install an application if you don't
uninstall it first. Does anybody have a way to auto-uninstall an app?
The FAQ seems to suggest that each version we release should have a new
app name as a workaround, but it seems to me that the user would end up
with many different installations of our product, with a programs menu
entry for each one, which is obviously something to be avoided.

Secondly, it looks like everything must be signed in order to get a
silent install. Does anybody know if signed cab files are installable
on WM 2003? I can see that it says that signed cabs are not supported
on WM 2003, but does that mean the signature is not checked, or that
the cab file won't install?

Thirdly, we run a SQL CE hotfix provided by Microsoft which is not
signed. Can I sign it myself?

And finally, can somebody please point me at a cab signing for dummies
resource? I'm still using VS 2003 and most of the docs I can find are
now for VS 2005.

Thanks all,

Richard Thombs
www.compositedata.com
 
A

Alex Feinman [MVP]

Signed cabs are not supported on WM2003. IIRC ActiveSync 4 strips the
signature off when you try installing a signed cab on an older device. This
is one of the known "pain points"
 
R

Richard Thombs

Thanks Alex. Fortunately for us, our update application can deliver
based on OS version so that won't be too much of a pain. Far worse will
be the hassle of getting every assembly and cab file signed when we
need to release updates to WM 2005 users.

Richard.
 
R

Richard Lewis

Richard said:
Hi,

I'm trying to get to grips with the changes around cab file
installation that WM 2005 introduces. Our application, like many
others I'm sure, implements an auto update process through the
downloading and installation of CAB files and occasionally of
individual DLLs.

So far I can see that I will have issues with the new restrictions
about not being able to re-install an application if you don't
uninstall it first. Does anybody have a way to auto-uninstall an app?
The FAQ seems to suggest that each version we release should have a
new app name as a workaround, but it seems to me that the user would
end up with many different installations of our product, with a
programs menu entry for each one, which is obviously something to be
avoided.

The way we do it is to have a custom app that runs our new cab file.
This app can be configured to call \Windows\unload.exe with the app
name as it appears in the installed programs list as a parameter.

The app is written in evc++ and have the following to unload an app.

wstring strAppName;

SHELLEXECUTEINFO info;
memset(&info, NULL, sizeof(SHELLEXECUTEINFO));

info.cbSize = sizeof(SHELLEXECUTEINFO);
info.fMask = SEE_MASK_FLAG_NO_UI | SEE_MASK_NOCLOSEPROCESS;
info.hwnd = NULL;
info.lpVerb = _T("open");
info.lpFile = _T("\\Windows\\unload.exe");
info.lpParameters = strAppName.c_str();
info.lpDirectory = _T("");
info.nShow = SW_SHOW;

// Call to perform an action
if(TRUE == ShellExecuteEx(&info))
{
// Wait until the executable has finished
::WaitForSingleObject(info.hProcess, INFINITE);

CloseHandle(info.hProcess);
}

Once the app in uninstalled we install the new version as a new app.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Top