Adobe Reader 9.2 Multilanguage package
after Adobe finally made their 9.1/9.2 Multilanguage installation
package accessible for public, I've decided to created an adapted package
for international rollout in our company. Worked quite well, only one question left,
which made me my hair pull out during the last few days.
Here is what I've done:
1) Downloaded the MUI installation from Adobe:
ftp://ftp.adobe.com/pub/adobe/reader/win/9.x/9.2/misc/AdbeRdrUpd920_mui.zip
2) after unpacking I've created an administrative installation point
3) patched the AdbeRdrUpd920_mui_cum.msp file (included in the Zip) into the
administrative install point, now we have a (almost) native 9.2 installation.
4) adapted the installation with the Adobe Customization Wizard to our needs
5) opened the msi with the "InstEd" editor and deleted the following:
ReaderProgramFiles/Feature/ARM
ReaderProgramFiles/Feature/AUM
ReaderProgramFiles/Feature/Updater
Tables
Registry/Registry838
Registry/Registr_AdobeARM
CustomAction/ExctractAir
CustumAction/InstallAirShare
This results in a "clean" installation, without the Adobe Updater, AIR and Acrobat.com
Also it prevents the speedlauncher from starting.
This package works quite well. It gives the user the possibility to choose from several
language GUI's.
One problem/question left.
The installer creates a registry key in the current user profile which makes the
Reader start in the same language as the operating system.
any existing (or future) users of that system.
Since we deploy with SCCM, I have no use of the correct key under the "system" profile :-)
Can anybody point me in the the right directions how I have to modify the MSI to
achieve this goal?
I know there are mechanisms in an MSI who exactly do this,
but in regards to MSI tables I am a rookie....
Pato
0 Comments
[ + ] Show comments
Answers (8)
Please log in to answer
Posted by:
pjgeutjens
15 years ago
Assuming this key is included in your MSI (if it's not, make an MST and add new component for it and put it in there) you have 2 major options:
1) self-healing through triggering an advertised entry point:
basically, by putting an advertised shortcut on the user's desktop, or adding advertisement data to the registration of one of your DLL's, you can make the MSI repair itself when it starts up. So say user X starts up your application through an advertised shortcut, Windows Installer will notice the component with the CU key is missing and put it in place, and off you go...
2) Active-Setup:
you can find more info on it here. Basically you set a regkey in HKLM that tells Windows to execute a certain command once for every user the next time he/she logs in. In this case, if you have a component with the CU key, you could trigger a msiexec.exe /fu <your.msi> and manually have Windows Installer start a repair of the missing components.
Be aware, in order to repair a component, that component's key path must be MISSING from the machine. So it might be a good idea to add your own check value, like MUIInstalled=1, in the component
Hope this helps
PJ
1) self-healing through triggering an advertised entry point:
basically, by putting an advertised shortcut on the user's desktop, or adding advertisement data to the registration of one of your DLL's, you can make the MSI repair itself when it starts up. So say user X starts up your application through an advertised shortcut, Windows Installer will notice the component with the CU key is missing and put it in place, and off you go...
2) Active-Setup:
you can find more info on it here. Basically you set a regkey in HKLM that tells Windows to execute a certain command once for every user the next time he/she logs in. In this case, if you have a component with the CU key, you could trigger a msiexec.exe /fu <your.msi> and manually have Windows Installer start a repair of the missing components.
Be aware, in order to repair a component, that component's key path must be MISSING from the machine. So it might be a good idea to add your own check value, like MUIInstalled=1, in the component
Hope this helps
PJ
Posted by:
pato1
15 years ago
both possibilities sound theoretically logical and good. I do say theoretically because
my almost nonexistent knowledge of intern MSI structures prevent me from implement
this practically... :-) Raw beginner...
Currently I try to understand both possibilities deeper, but due to all what I've read so far
I'd say that option 1 is more adequate here as I do have a triggered entry point.
(acrord32.exe and/or the shortcuts?) Furthermore the package already has the correct
HCU settings, although they install only for the current user. Just a guess...
Thats the point where I am lost right now.
How do I change the MST/MSI file to implement the self healing feature for every user,
just for the registry settings.
I've uploaded my MSI/MST if anyone has a few spare minutes and can have
a quick look: http://rapidshare.com/files/298040864/Adobe_Reader_92.zip
Thaks everybody in advance!
best regards
Pato1
Posted by:
pjgeutjens
15 years ago
I had a quick look, and you do indeed have an advertised shortcut.
The relevant component is the one called registry_MUI.
What's missing in the component is a KeyPath, this is basically the check value for that component that Windows Installer uses to see if it's complete (a file, a regkey..). You can either use an existing registry value in the component, or make one of your own (see below).
Normally then once you click the shortcut, you should get a Windows Installer progress dialog about Acrobat Reader. In your eventlog there should also be an event saying, component so-and-so was missing because registry entry so-and-so isn't there. If it doesn't work, try opening the MST and adding one registry value like HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\9.0\Language\MUI_Setup, value = 1 and setting this as KeyPath. This will always be missing for the user and thus trigger a repair.
How to set the keypath: generally, in your MST-editing tool you should be able to right-click the reg value and choose something like "set keypath". If not, lemme know what you're using.
Another tip, you might want to change the AgreetoLicense property from No to Yes
Hope it helps
PJ
The relevant component is the one called registry_MUI.
What's missing in the component is a KeyPath, this is basically the check value for that component that Windows Installer uses to see if it's complete (a file, a regkey..). You can either use an existing registry value in the component, or make one of your own (see below).
Normally then once you click the shortcut, you should get a Windows Installer progress dialog about Acrobat Reader. In your eventlog there should also be an event saying, component so-and-so was missing because registry entry so-and-so isn't there. If it doesn't work, try opening the MST and adding one registry value like HKEY_CURRENT_USER\Software\Adobe\Acrobat Reader\9.0\Language\MUI_Setup, value = 1 and setting this as KeyPath. This will always be missing for the user and thus trigger a repair.
How to set the keypath: generally, in your MST-editing tool you should be able to right-click the reg value and choose something like "set keypath". If not, lemme know what you're using.
Another tip, you might want to change the AgreetoLicense property from No to Yes
Hope it helps
PJ
Posted by:
pato1
15 years ago
I do use InstEd as MST viewing/editing tool at the moment. Most changes I did with Adobe Cust. Wizard before, though.
In InstEd now I went to the "component" table and clicked on the "key path" value with was empty, like you stated.
It gives me a long drop down list with values.
Would it be correct to just choose "Registry 3", as key path?
If the above assumption is correct, this is all to do the job?
Thanks again and best regards,
Pato
EDIT: Just tried and that did not the trick. I am presented with an error message: Error 2715. The specified file key (registry 3)
not found in the file table.
I keep researching...
I keep trying.
Posted by:
pato1
15 years ago
after additional hous of reading and trying to understand I experienced some sort of partial success.
According to pjgeitjens hint I've first modified the registry_MUI component. Changed the keypath to "Registry 3" and changed the attribute to "4".
In the shortcut table I changed the target of the existing shortcuts to "MUI_Extras". This is the feature which contains
the registry_MUI component.
Is this halfway reasonable or did I do something really stupid? Is changin the target the so called "advertising"?
Anyway, the result is the required one. A new user gets the installer dialogue and after a couple of
seconds Reader starts with the correct setting.
Downside is that you must use the shortcuts to get this action.
Double clicking on a *.pdf file doesn't work.
How can I implement this self healing process also for the double click on a PDF file??
Thanks in advance,
Pato
Posted by:
pjgeutjens
15 years ago
Hi Pato,
you can advertise a file association by using the Extension table in your MSI. But to do this manually (i.e. without the help of something like InstallShield AdminStudio or Wise Packaging Studio) would be quite a tall order. Basically you need to have an associated component and feature, and then link it to a ProgID or MIME type, and add the necessary commands in the Verb table...
You could have a look at what's already there in the Vendor MSI and try to use that as a template to add the .pdf extension if it's missing. Just make sure you backup everything before you start, and do some googling on the different tables (Extension, ProgID, Verb,...) and what they're for.
Also, about your shortcut, you should leave the advertised shortcut set to the component that contains the exe it's pointing to. I think the shortcut was fine from the start, a selfheal should run through your entire package if it triggers...
PJ
you can advertise a file association by using the Extension table in your MSI. But to do this manually (i.e. without the help of something like InstallShield AdminStudio or Wise Packaging Studio) would be quite a tall order. Basically you need to have an associated component and feature, and then link it to a ProgID or MIME type, and add the necessary commands in the Verb table...
You could have a look at what's already there in the Vendor MSI and try to use that as a template to add the .pdf extension if it's missing. Just make sure you backup everything before you start, and do some googling on the different tables (Extension, ProgID, Verb,...) and what they're for.
Also, about your shortcut, you should leave the advertised shortcut set to the component that contains the exe it's pointing to. I think the shortcut was fine from the start, a selfheal should run through your entire package if it triggers...
PJ
Posted by:
pato1
15 years ago
you getting faster every time :-)
I think I might give up at this point.
When posting the first time I was hoping for a relative simple
solution, without rebuilding a good portion of the MSI. e.g. click here and set this, then you're done... :-)
But it looks as if this theme gets more sophisticated the deeper you dig in, like most things in life.
Hopefully a more experienced board member which is facing the same issue with Reader MUI
will figure out a easy to follow solution in a while.
Unfortunately I have no time and patience right now to continue with tools like WISE packaging
Studio just to get an advertisement for a file extension done.
One last question.
I've read a lot about "advertising" in conjunction with "entry points" and "self healing".
But up to now I wasn't really able to figure out what an advertisement in an MSI is.
Where can I see an advertisement in InstED for example? How can I find out which
advertisements/entry point I do have already?
BTW: Without changing the target of them shortcuts a selfheal would not trigger in that package.
Just to change the registry_MUI component (Keypath) did not work.
Anyway, thanks a lot for your patience and help PG, its very much appreciated.
Although it didn't work out for the current package I think I've learned good
lessons in basic functions which might be of valuable use later.
cheers,
Pato
Posted by:
anonymous_9363
15 years ago
Unfortunately, you have stumbled upon what is possibly the worst vendor in terms of package construction.
Do perservere, as the lesson learned will serve you well for others.
Meanwhile, check out John McFadyen's blogs on Windows Live for just about evberything you might want to know about WI. Also, there's a (downloadble?) book, The Definitive Guide to Windows Installer by Phil Wilson which, whilst bt no means definitive, is as good a guide as a newcomer could ask for.
Do perservere, as the lesson learned will serve you well for others.
Meanwhile, check out John McFadyen's blogs on Windows Live for just about evberything you might want to know about WI. Also, there's a (downloadble?) book, The Definitive Guide to Windows Installer by Phil Wilson which, whilst bt no means definitive, is as good a guide as a newcomer could ask for.
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
so that the conversation will remain readable.