AdminStudio: Problem with Sourcelist definition
Hi Everybody,
I create a lot of msi package with Adminstudio, we create the package msi in a shared directory by a network drive example in \\srv0000\packaging\"Name of the application" but after in order that the users use this package we put the msi file in another network share where users have access rights. We put this path in Behavior and Logic\Property Manager in AdminStudio creating the property SOURCELIST with the UNC path of our package \\SRV0000\MSI$. But when the application has something to install in the user profile it looks after the MSI package (for advertised icon) and by default it searchs on \\srv0000\packaging\"Name of the application" first where user don't have access and the network share where we always put the MSI for the users \\srv02101\MSI$ comes in second, how can we do to put our MSI share in first (actually we should better put only this share as the only Sourcelist for the MSI), so users wouldn't have anything to do ?
Thanks a lot for any help
I create a lot of msi package with Adminstudio, we create the package msi in a shared directory by a network drive example in \\srv0000\packaging\"Name of the application" but after in order that the users use this package we put the msi file in another network share where users have access rights. We put this path in Behavior and Logic\Property Manager in AdminStudio creating the property SOURCELIST with the UNC path of our package \\SRV0000\MSI$. But when the application has something to install in the user profile it looks after the MSI package (for advertised icon) and by default it searchs on \\srv0000\packaging\"Name of the application" first where user don't have access and the network share where we always put the MSI for the users \\srv02101\MSI$ comes in second, how can we do to put our MSI share in first (actually we should better put only this share as the only Sourcelist for the MSI), so users wouldn't have anything to do ?
Thanks a lot for any help
0 Comments
[ + ] Show comments
Answers (7)
Please log in to answer
Posted by:
WiseUser
19 years ago
Not totally sure I've understood, but you could try running this vbscript on existing installations:
Const sPRODCODE = "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"
Const sNEWSOURCE = "\\srv02101\MSI$\"
Set oInst = CreateObject("WindowsInstaller.Installer")
oInst.ClearSourceList sPRODCODE, ""
oInst.AddSource sPRODCODE, "", sNEWSOURCE
Set oInst = Nothing
Const sNEWSOURCE = "\\srv02101\MSI$\"
Set oInst = CreateObject("WindowsInstaller.Installer")
oInst.ClearSourceList sPRODCODE, ""
oInst.AddSource sPRODCODE, "", sNEWSOURCE
Set oInst = Nothing
Posted by:
JGL59
19 years ago
Thanks for your help Wiseuser but I don't really know if your answer apply to my problem ...
Actually I am afraid that my explanations were not very clear (actually English is not my native language)
I will try to be more clear:
I create advertised MSI package with Adminstudio, I am creating this package on a "work directory" and after I put the msi file in a network share wich the users can reach thus when the users launch the application for the first time, the msi file is available for any user's profile changes.
I have defined a SOURCELIST value, in my ISM file, who points towards my MSI network share where the users have Access rights.
But when AdminStudio create the package it puts my "work directory" as first so the first path proposed to the user when the msi is launched is my "work directory" where the users don't have the right access so the customized installation for the user can not work. The path that I put in the SOURCELIST property comes in second but I would rather configure my MSI package so that the path that I put in the SOURCELIST property, is the first available so the users would have nothing to do ...
I hope it is more clear now, thanks for any help
Actually I am afraid that my explanations were not very clear (actually English is not my native language)
I will try to be more clear:
I create advertised MSI package with Adminstudio, I am creating this package on a "work directory" and after I put the msi file in a network share wich the users can reach thus when the users launch the application for the first time, the msi file is available for any user's profile changes.
I have defined a SOURCELIST value, in my ISM file, who points towards my MSI network share where the users have Access rights.
But when AdminStudio create the package it puts my "work directory" as first so the first path proposed to the user when the msi is launched is my "work directory" where the users don't have the right access so the customized installation for the user can not work. The path that I put in the SOURCELIST property comes in second but I would rather configure my MSI package so that the path that I put in the SOURCELIST property, is the first available so the users would have nothing to do ...
I hope it is more clear now, thanks for any help
Posted by:
WiseUser
19 years ago
I think I have understood the problem (sort of) - although I know little about Installshield products.
When an MSI requires the original source, it should default to the location that it was originally installed from.
You can find out where that was b y running the following vbscript on a machine that has your MSI installed:
Const sPRODCODE = "{XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}"
Set oInst = CreateObject("WindowsInstaller.Installer")
msgbox oInst.ProductInfo(sPRODCODE, "InstallSource")
Obviously, you need to replace the Xs above with your actual ProductCode (from property table).
You can also find this path (and others you may have added) under the following registry locations:
"HKCR\Installer\Products\<GUID>\SourceList\LastUsedSource"
"HKCR\Installer\Products\<GUID>\SourceList\Net\1"
Note that both of these keys are of the "REG_EXPAND_SZ" type which means that you can use windows environment variables in your source paths.
If you're having problems, I'm assuming that you've either tampered with your source list, moved/deleted the original source, or your users don't have access to the location the MSI was installed from.
The script I provided before, should allow you to modify the location that Msiexec.exe will look for your MSI. In other words, the value of the following key will change:
"HKCR\Installer\Products\<GUID>\SourceList\Net\1"
Running the following script (or a manual repair) should change the other key:
Const sPRODCODE = "{17DAB648-906B-4C29-B296-6FD780708377}"
Const msiReinstallModePackage = 1024
Set oInst = CreateObject("WindowsInstaller.Installer")
oInst.ReinstallProduct sPRODCODE, msiReinstallModePackage
Set oInst = Nothing
I hope this helps?
When an MSI requires the original source, it should default to the location that it was originally installed from.
You can find out where that was b y running the following vbscript on a machine that has your MSI installed:
Set oInst = CreateObject("WindowsInstaller.Installer")
msgbox oInst.ProductInfo(sPRODCODE, "InstallSource")
Obviously, you need to replace the Xs above with your actual ProductCode (from property table).
You can also find this path (and others you may have added) under the following registry locations:
"HKCR\Installer\Products\<GUID>\SourceList\LastUsedSource"
"HKCR\Installer\Products\<GUID>\SourceList\Net\1"
Note that both of these keys are of the "REG_EXPAND_SZ" type which means that you can use windows environment variables in your source paths.
If you're having problems, I'm assuming that you've either tampered with your source list, moved/deleted the original source, or your users don't have access to the location the MSI was installed from.
The script I provided before, should allow you to modify the location that Msiexec.exe will look for your MSI. In other words, the value of the following key will change:
"HKCR\Installer\Products\<GUID>\SourceList\Net\1"
Running the following script (or a manual repair) should change the other key:
Const msiReinstallModePackage = 1024
Set oInst = CreateObject("WindowsInstaller.Installer")
oInst.ReinstallProduct sPRODCODE, msiReinstallModePackage
Set oInst = Nothing
I hope this helps?
Posted by:
JGL59
19 years ago
Posted by:
WiseUser
19 years ago
The ProductCode property can be found in the property table.
Create a vbscript with the following content:
Const msiOpenDatabaseModeDirect = 2
Set oInst = CreateObject("WindowsInstaller.Installer")
sDBPath = Wscript.Arguments(0)
Set oDB = oInst.OpenDataBase(sDBPath, msiOpenDatabaseModeDirect)
sQuery = "SELECT `Value` FROM `Property` WHERE `Property` = 'ProductCode'"
Set oView = oDB.OpenView(sQuery)
oView.Execute
Set oRecord = oView.Fetch
InputBox "ProductCode is the following:", "PRODUCT CODE", oRecord.StringData(1)
Set oRecord = Nothing
Set oView = Nothing
Set oDB = Nothing
Set oInst = Nothing
Now "drag and drop" an MSI file onto your script to get the product code. You'll get an error message if you don't drop an MSI on the script (or provide a path on the command line).
Create a vbscript with the following content:
Set oInst = CreateObject("WindowsInstaller.Installer")
sDBPath = Wscript.Arguments(0)
Set oDB = oInst.OpenDataBase(sDBPath, msiOpenDatabaseModeDirect)
sQuery = "SELECT `Value` FROM `Property` WHERE `Property` = 'ProductCode'"
Set oView = oDB.OpenView(sQuery)
oView.Execute
Set oRecord = oView.Fetch
InputBox "ProductCode is the following:", "PRODUCT CODE", oRecord.StringData(1)
Set oRecord = Nothing
Set oView = Nothing
Set oDB = Nothing
Set oInst = Nothing
Now "drag and drop" an MSI file onto your script to get the product code. You'll get an error message if you don't drop an MSI on the script (or provide a path on the command line).
Posted by:
WiseUser
19 years ago
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.