/build/static/layout/Breadcrumb_cap_w.png

Passing Serial Number to msi without using Installshield setup.exe

Hello, I have an InstallShield package that I ran setup.exe /a and did a network install. Once that was created, I have the ISScript8.msi and Program.msi which require I run using the setup.exe. Based of some information from this site which adds the ISSETUPDRIVEN=1 property plus removes a custom action, I can get it to run fine now. However, there is a registry key which is the serial number I need to type in during the installshield dialogs. I have manually populated this key with an MST and well as trying SERIALNUM ISX_SERIALNUM and ISX_SERIALNUMBER properties. None of this seems to be working and the program installs in the demo mode. How can I use a public property or similar to pass this serial number into the msi when I use Windows Installer?

The other option I could live with is creating an answer file for the setup.exe so I can do an unattended install that way. I have tried setup.exe /? and setup.exe -r but can't seem to create one.

Any insight that can be provided would be much appreciated. Thanks.

1 Comment   [ + ] Show comment
  • Hi, I am facing the same kind of issue..msi is not having any dialog boxes and I have to select server type the value is no where getting reflected..I am unable to perform silent installation of the application - ankita_g29 10 years ago

Answers (23)

Posted by: schieb 17 years ago
Purple Belt
0
I found the setup.iss in the C:\windows folder and here is the section I need to use:

[{F73D2929-34D4-11D6-966E-0050DAEB0817}-SdRegisterUserEx-0]
szName=PC User
szCompany=Company
szSerial=xx-xxxx-xxxx
Result=1

Is there a way to use a custom action to populate this info?
Posted by: Priapus 17 years ago
Orange Belt
0
Hej Schieb,

The Registration information is probably created in registry. I would fix the problem by registry hack. Export the reg from a machine where you have registered the program. Export the reg file.

On Post Install i would apply regedit /s reginfo.reg.

I have tried this method some apps and it worked. It is also possible that the program is creating a file. The magic is to find that file and copy to destination. But try the first method first.
Posted by: Bladerun 17 years ago
Green Belt
0
Schieb -

Usually the values found in the setup.iss file are passed to the property table of the msi directly during the installation.

Try editing your msi directly and adding those items to the property table.
Posted by: schieb 17 years ago
Purple Belt
0
Here is the info I can add. I see the property table has a PIDKEY entry but I am not sure what it is used for. I have tried it and had no luck. I have followed the install closely with filemon and regmon and I can see this is happening:

1) The Installshield dialog asks for the serial. This is the szSerial=xx-xxxx-xxxx from the setup.iss file.
2) The install conintues and says it is creating registry entries and such and registrering modules. At this point msiexec queries for the key: HKLM\Software\SAC\Encryption\keyname and gets a "NOT FOUND". Msiexec then proceeds to write a filler key "xx-xxxx-xxxx"
3) Some post install/ODBC configuration is requested. The install is done at this point. Right when I click finish it writes that keyname entry as DS-1234-5678, the real key.
NOTE: the process that is writing this is IDriver.exe, not msiexec as in step 2 above.

That encryption key folder doesn't really contain anything that is encrypted, only the one key. I have populated this key via a transform file before and it is correctly entered into the registry, but the appliation still runs in demo version.

Thanks for the input thus far.


Priapus I tried exporting then reimporting the registry keys over and it still ran as the demo version.

Bladerun I added szSerial DS-1234-5678 to the property table and no luck as well.
Posted by: Bladerun 17 years ago
Green Belt
0
Can you post the contents of the setup.iss (changing the product key of course)?
Posted by: schieb 17 years ago
Purple Belt
0
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-DlgOrder]
Dlg0={F73D2929-34D4-11D6-966E-0050DAEB0817}-SdWelcome-0
Count=13
Dlg1={F73D2929-34D4-11D6-966E-0050DAEB0817}-SdLicense-0
Dlg2={F73D2929-34D4-11D6-966E-0050DAEB0817}-SdRegisterUserEx-0
Dlg3={F73D2929-34D4-11D6-966E-0050DAEB0817}-SdAskDestPath-0
Dlg4={F73D2929-34D4-11D6-966E-0050DAEB0817}-SdComponentTree-0
Dlg5={F73D2929-34D4-11D6-966E-0050DAEB0817}-AskOptions-0
Dlg6={F73D2929-34D4-11D6-966E-0050DAEB0817}-AskText-0
Dlg7={F73D2929-34D4-11D6-966E-0050DAEB0817}-AskText-1
Dlg8={F73D2929-34D4-11D6-966E-0050DAEB0817}-AskText-2
Dlg9={F73D2929-34D4-11D6-966E-0050DAEB0817}-SdSelectFolder-0
Dlg10={F73D2929-34D4-11D6-966E-0050DAEB0817}-MessageBox-0
Dlg11={F73D2929-34D4-11D6-966E-0050DAEB0817}-MessageBox-1
Dlg12={F73D2929-34D4-11D6-966E-0050DAEB0817}-SdFinish-0
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-SdWelcomeMaint-0]
Result=301
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-SprintfBox-0]
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-SprintfBox-1]
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-SdSetupCompleteError-12060]
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-SdComponentTree-0]
szDir=C:\Program Files\System Automation\License2000\
Windows-type=string
Windows-count=2
Windows-0=Windows\System
Windows-1=Windows\WinOdbc
Component-type=string
Component-count=6
Component-0=SingleProfession
Component-1=Shared
Component-2=Windows
Component-3=INIfiles
Component-4=ProgramFiles
Component-5=Imaging
Component-6=Imaging
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-SdWelcome-0]
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-SdLicense-0]
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-SdRegisterUserEx-0]
szName=PC User
szCompany=Company Name
szSerial=BB-1234-5678
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-SdAskDestPath-0]
szDir=C:\Program Files\System Automation\License2000\
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-AskOptions-0]
Result=1
Sel-0=0
Sel-1=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-AskText-0]
szText=our.server.domain.com
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-AskText-1]
szText=C:\Program Files\System Automation\License2000\Templates
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-AskText-2]
szText=C:\Scratch
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-SdSelectFolder-0]
szFolder=License 2000
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-MessageBox-0]
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-MessageBox-1]
Result=1
[{F73D2929-34D4-11D6-966E-0050DAEB0817}-SdFinish-0]
Result=1
bOpt1=0
bOpt2=0
Posted by: schieb 17 years ago
Purple Belt
0
I know it is generally a bad idea, but at this point I think I am going to re-package this in Wise. Please let me know if you come up with any ideas though. Thanks again for looking.
Posted by: nheim 17 years ago
10th Degree Black Belt
0
Hi Schieb,
which Software exactly are we talking about here?
what are you trying to achieve with repacking it?
You can capture it and add the missing keys to the original package, that would be a way to go. But just repack and hope...
Have you analysed the logfile?
Have you looked at 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\[ProductCode]'? This is a common place to store install-specific things.
Regards, Nick
Posted by: schieb 17 years ago
Purple Belt
0
I have analyzed the log. I am trying to get one msi file in the end that contains some ODBC information along with the valid serial so the software is registerted. I then deploy it via Altiris. I have checked the Uninstall path but there is nothing there that seems to be related to registering it.
Posted by: gmorgan618 17 years ago
Blue Belt
0
If you can get a copy of the MSI from within the Setup.exe (if there is one)... open the MSI in Installshield (Wise) then look at the Screen where you would enter the serial. From this you should be able to get the property you need to set in the Property table...

If you use ORCA ... try this

Start the installation with a /l*v c:\msiInstall.log

Go through the installation until you get to the screen which asks you for the serial number... Check the log file that is being created at c:\msiInstall.log ... see if there is a Property at the last line of the log... if not... Close the log ... enter a serial number and then recheck the log file ... you will be able to determine which Property it is setting the serial number too... Then edit your MSI with ORCA -- add the Propety to the Property table and enter the serial number as the value...


Good luck
Posted by: schieb 17 years ago
Purple Belt
0
I was able to do a setup.exe /a and get an msi but the problem is that it won't ask for a serial if you run just the msi. It always installs as Demo version with no prompts for anything. I have been using ORCA and I have tried multiple properties, even some proprietary ones related to installshield, no luck. I did find the key under the Registry Table rather than the PROPERTY table but that doesn't work. Basically this is some feature of the InstallShield installer that uses a CustomAction or a routine (IDriver.exe) to register the software. The key is not stored encrypted but something is happening during the install. I have tried importing all the good keys from a registered version over the place of the one I install with no luck. I don't know what InstallShield is doing to with IDriver.exe to register this. I have run filemons and regmons.
Posted by: schieb 17 years ago
Purple Belt
0
Here is some more information that relates to my problem. http://kb.altiris.com/article.asp?article=24566&p=3

Notice the part:
Note that the method described above does not solve 100 percent of all cases. In some cases, the MSI file contains no internal dialogs, and instead the setup.exe file handles user dialogs by interacting with custom actions in the MSI. These custom actions will fail if setup.exe is not running.

How can I provide the serial number to the custom actions is what I think I need to figure out.
Posted by: turbokitty 17 years ago
6th Degree Black Belt
0
Installscript MSI's can have the dialogs compiled so you can't see them. It could be populating a variable in the script and going around properties all together. I have a feeling you're boned. You'll have to use regmon/filemon to figure it out or call the vendor or repackage it.
Posted by: nheim 17 years ago
10th Degree Black Belt
0
Hi schieb,
once again: Which particular software are we talking about here?
Have you got a look at the rows in the InstallUISequence and watched out for conditions that might prevent the dialog from running, when some properties are not set by the setup.exe?
There could also be customactions called in the InstallExecuteSequence which have conditions which prevent them from running in certain cases.
Regards, Nick
Posted by: schieb 17 years ago
Purple Belt
0
turbokitty: I believe this is exactly what is happening. I may be out of luck.

Nick: Sorry I misunderstood some of the questions from before. This is just an Imaging program (license 2000) from system automation. I don't really know much more about it. I did check those tables. I believe this is the part that may be an issue(The 3 fields are Action,Condition,Sequence):

InstallExecuteSequence
'ValidateKeycode.6F2B3983_59B8_11D3_B360_00A0C9DA500E' 'condition_is_emtpy' '702'
'WriteKeycodeToRegistry.6F2B3983_59B8_11D3_B360_00A0C9DA500E' '(Not Installed) AND PIDKEY' '7600'
'LaunchRegWizAction.6F2B3983_59B8_11D3_B360_00A0C9DA500E' '0' '7701'

InstallUISequence
'ValidateProductID' 'condition_is_emtpy' '700'
'ValidateKeycode.6F2B3983_59B8_11D3_B360_00A0C9DA500E' 'Installed' '702'

It isn't allowing me to attach the two screenshots. If I come up with a way to do that I will update the post.
Posted by: AngelD 17 years ago
Red Belt
0
Here is what you can do to find out what property the serial number goes to:
add Debug (DWORD) with value 2 under HKLM\SOFTWARE\Policies\Microsoft\Windows\Installer
download DebugView from sysinternals.

Start DebugView and then launch the installation manual.
Type in the serial number and hit the next button.
Look in DebugView (will fetch actions in realtime) to see what property that has been changed to your serial number.
Posted by: schieb 17 years ago
Purple Belt
0
This is good information to know AngelD. I went ahead and did this and there doesn't seem to be a property. I did see USERNAME and COMPANYNAME but the third field in the dialog is serial number and there were no properties related to it. I do see some 'do actions' to:
ValidateKeycode.6F2B3983_59B8_11D3_B360_00A0C9DA500E WriteKeycodeToRegistry.6F2B3983_59B8_11D3_B360_00A0C9DA500E

these fall under the InstallExecuteSequence and CustomAction tables. I will try changing those conditions a little to see what happens. I listed the conditions for those in my previous post. Thanks.
Posted by: schieb 17 years ago
Posted by: AngelD 17 years ago
Red Belt
0
Hi schieb,

you need to capture the registry info written by the WriteKeycodeToRegistry.6F2B3983_59B8_11D3_B360_00A0C9DA500E using your repackaging tool or regmon. Before hitting the next button enable regmon and close it when the WriteKeycodeToRegistry... ca has passed.
When you find the registry info, just add a custom action to write the register info.
Posted by: AngelD 17 years ago
Red Belt
0
It seems that the WriteKeycodeToRegistry.6F2B3983_59B8_11D3_B360_00A0C9DA500E CA is calling a dll to write the register info to a file using the MsiKC_WriteFile function from the binary Callkeycode1.6F2B3983_59B8_11D..., so you would want to use filemon to investigate what file it is writing to. Import the LOG file from filemon to excel and filter on request: "WRITE", that would show you what files that has been written to.
Posted by: AngelD 17 years ago
Red Belt
0
I also found this which could be interesting:
VS install fails on custom action: WriteKeycodeToRegistryAction
Posted by: nheim 17 years ago
10th Degree Black Belt
0
Hi schieb,
we're getting closer to the point.
Is the 'WriteKeycodeToRegistry' action being executed when you do the MSI-install?
With the stuff AngelD suggested, you should be able to track down that sh... thing :-)
Thanks for the screen-shots. But please order them next time to the sequence. Makes it a lot easier to read.
Good luck,
Nick
Posted by: schieb 17 years ago
Purple Belt
0
I updated my last post sorted by sequence if it helps. I am having a lot of issues trying to do a full filemon. I keep filling excel up to it's max.

One thing I didn't think about is trying to enter an invalid key while doing filemon. Here is what I see happening:

IDriver.exe is querying:
C:\DOCUME~1\mylogon\LOCALS~1\Temp\{F73D2929-34D4-11D6-966E-0050DAEB0817}\_ISRES.DLL which returns "Incorrect License Key. please renter"(yes it actually says renter)

Some of the public properties appear to be in String1033.txt in that temp space. There they refer to SERIALNUMBER for the dialogs. I have tried populating that property when I install the msi with no success.
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ