I am trying to insert the Product Serial number into a MST for this app. Admin Studio shows a Setup Property named ProductID. I am assuming that this is where I would insert the Serial number. I can't figure out what format to put it in as. There is also a Setup Property named PID Template with 12345<###-%%%%%%%>@@@@@ as it's value. Is this property an example of how to enter the serial number? Is so, I don't see how a Serial Number fits this format. I have tried the serial number with dashes without dashes and when the app installs i get a message that the serial is not the right length or something to that effect.

Any help would be appreciated.
0 Comments   [ + ] Show Comments


Please log in to comment

Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.


Hi Steve,
don't know NS8, but the Property ProductID is only intended to hold the Serial Number. But this has not necessary to be the case. You should capture the dialog sequence and look, which properties change.
Admin Studio and Wise have tools for this.
Hope this gives you some ideas.
Regards, Nick
Answered 11/27/2006 by: nheim
Tenth Degree Black Belt

Please log in to comment
I did this recently...
To get the silent install to work required setting the Public Property 'SERIALNUMBER' at the command line.
As we only have a few instances of this app we created a script that does the following:
Gets the ComputerName
Opens a CSV lookup file and checks for a match with the ComputerName column
If a match exists it reads the SerialNumber Column which contains the key 12345-123-1234-1234-12
Then the msiexec command line is created to include this information
msiexec /i "NatSpeak.msi" SERIALNUMBER="****-****" /qn
Not glamourous but it does work...
Answered 11/28/2006 by: AB
Purple Belt

Please log in to comment
Al. . . "Not glamourous"????? that idea is very cool!!!!! I am not too well versed in VB scripting, but I think I could figure it out. I would still like to see a sample of the script you are using, if you wouldn't mind. . . either way THANKS loads for the idea. . .
Answered 11/30/2006 by: SteveCupp
Senior Yellow Belt

Please log in to comment
Kind words Steve but you haven't seen the script yet :)
The idea came about for boxed products that require Activation over the net with a single licence, blah blah blah
Funnily enough, it was my last day on the contract today and I hope I've squirrelled away the script somewhere but if not, I'll ask those dashing chaps I worked with to send me them along with the security relaxation required for locked down users to perform the 'Activation'.
We used variants of the script for Adobe products as well - I did mean to make it more generic and therfore easily re-usable but you know, the time constraint thing...
Bear with me (grrr) and I'll try to source and post all you need for early next week-
I've had a few glasses of wine and mentioned Adobe so I best cut this short before I begin ranting about their licensing methodology... ha...
Have a good weekend sir
Answered 11/30/2006 by: AB
Purple Belt

Please log in to comment

I've been working on my script and I think I have a working solution. I am testing it as I type this and it looks very promising. I would still like to see how you did this in scripting terms. I haven't worked much with text files but I reviewed some old scripts I had and was able to cobble it together thx to your very cool idea. If you are able to get a copy of what you used all the better. . . . [:D]

Thx again,

Answered 11/30/2006 by: SteveCupp
Senior Yellow Belt

Please log in to comment
Steve - I'll sort it out for you as soon as I can - it's just a bit difficult as I'll now looking for a new contract...
The basics are there - but the script I developed thanks to a great colleague and friend made it more flexible so you could set up to four Public Properties on the comand line from a single CSV file - thanks Phil
But really, you should be relaxing with loved ones now and saving the planet tomorrow - or on Monday... :)
I'm still staying local to where I was working so I might try and pop in tomorrow - hi, how are you, missing you already, oh, and by the way, I just need to grab this vb script I made, blah blah, love you , yeah bye, etc etc
You get the drift
Glad you think the idea is cool
Some of the guys I worked with were uming and ahing but hey, it's the only way to solve the silent install issue...
That's where the term 'not glamourous' came from...
Take care sir
Answered 11/30/2006 by: AB
Purple Belt

Please log in to comment
Here is the script...
Near the top set the msi and mst names.
strGetKey with be the ComputerName - it's case sensitive, so remember that when you create your csv file.

CSV contents:


Create a text file with these entries and rename it Licence.csv

The first row is the description field and shows you can set up to four Public Properties at the command line.
Here we have set property1 to SERIALNUMBER, so this column will contain the serial keys in the format 1234-123-1234-12
The column 'Key' is the ComputerName - case sensistive - assign your serial keys to computernames...

Say you wanted to set ALLUSERS=1, ROOTDRIVE=C:\ at the command line, the csv file would look like this:


Your script, the licence.csv file and msi and associated files should be in the same directory.
We were using Marimba to deploy so our package dropped all the relevent files to a local folder and then called the vbs script.

At the bottom of the script where the msiexec command line is constructed I've set ADDLOCAL to install the Features requested by the client.
This could of course have been added to the csv file... the scope is there to make this more reusable

Have fun.

I nearly forgot security relaxation for a locked down environment...
C:\Program Files\ScanSoft\NaturallySpeaking8\ Users:Modify
HKLM\Software\Dragon Systems\ Users:FullControl
HKLM\Software\Licences\ Users:FullControl
HKLM\Software\Scansoft\ Users:FullControl

And I think there's a Launch Condition you may need to remove from the MSI - hope this helps :)

Option Explicit
'On Error Resume Next
Dim objFSO, objFSOLicence, objFileLicence, objKey, strMSI, strMST
Dim strCurrentDir, strLicenceCSV, strText, arrText, strKey, strGetKey
Dim strProperty1, strProperty2, strProperty3, strProperty4, strAddCommand
Dim strPropertyValue1, strPropertyValue2, strPropertyValue3, strPropertyValue4

strMSI = "Dragon NaturallySpeaking 8.msi"
strMST = "Dragon NaturallySpeaking v8.0 R1.0.0.mst"

Const intForReading = 1
Set objKey = CreateObject("WScript.NetWork")
Set objFSO = CreateObject("Scripting.FileSystemObject")
strCurrentDir = objFSO.GetParentFolderName(WScript.ScriptFullName)

strLicenceCSV = (strCurrentDir & "\Licence.csv")

strGetKey = objKey.ComputerName
'MsgBox strGetKey

Set objFSOLicence = CreateObject("Scripting.FileSystemObject")
Set objFileLicence = objFSOLicence.OpenTextFile(strLicenceCSV, intForReading, True)

strText = objFileLicence.ReadLine
strText = objFileLicence.ReadLine
arrText = Split(strText, ",")

strProperty1 = arrText(1)
strProperty2 = arrText(2)
strProperty3 = arrText(3)
strProperty4 = arrText(4)

Do While Not objFileLicence.AtEndOfStream
strText = objFileLicence.ReadLine
arrText = Split(strText, ",")
strKey = arrText(0)
strPropertyValue1 = arrText(1)
strPropertyValue2 = arrText(2)
strPropertyValue3 = arrText(3)
strPropertyValue4 = arrText(4)

If strGetKey = strKey Then
If strProperty1 <> "" Then
strAddCommand = (strAddCommand & strProperty1 & "=" & """" & strPropertyValue1 & """")
End If
If strProperty2 <> "" Then
If strProperty1 <> "" Then
strAddCommand = (strAddCommand & " ")
End If
strAddCommand = (strAddCommand & strProperty2 & "=" & """" & strPropertyValue2 & """")
End If
If strProperty3 <> "" Then
If (strProperty1 <> "" OR strProperty2 <> "") Then
strAddCommand = (strAddCommand & " ")
End If
strAddCommand = (strAddCommand & strProperty3 & "=" & """" & strPropertyValue3 & """")
End If
If strProperty4 <> "" Then
If (strProperty1 <> "" OR strProperty2 <> "" OR strProperty3 <> "") Then
strAddCommand = (strAddCommand & " ")
End If
strAddCommand = (strAddCommand & strProperty4 & "=" & """" & strPropertyValue4 & """")
End If

Call InstallMSI(strAddCommand, strCurrentDir, strMSI, strMST)
End If

Set objFSOLicence = Nothing
Set objFileLicence = Nothing

Sub InstallMSI(strAddCommands, strCurrentDirectory, strMSIName, strMSTName)

Dim strRun
Dim objShell

Set objShell = CreateObject("WScript.Shell")

' Create Command Line

strRun = ("msiexec /i " & """" & strCurrentDirectory & "\" & strMSIName & """" & " TRANSFORMS=" & """" & strMSTName & """" & " " & strAddCommands & " ADDLOCAL=Tutorial,Speech,ENX,ENG,IND,NatSpeak,SEA,TTS,TutENX /qn /l*v " & """" & strCurrentDirectory & "\MSIInstall.log" & """")
'msgbox strRun
Call objShell.Run(strRun, 1, True)

Set objShell = Nothing

End Sub
Answered 12/01/2006 by: AB
Purple Belt

Please log in to comment
Answer this question or Comment on this question for clarity