Client deployment command line parameter issue
All, I am deploying my client using a script that runs on every computer already. Unfortunately, it is doing something brain dead and stupid. I'm not sure how to work around it yet. I am executing this on the command line: "\\server\Shared Documents\IT\Software Deployment\SCCM_Client\ccmsetup.exe" SMSSITECODE=LAS /logon /source:"\\server\Shared Documents\IT\Software Deployment\SCCM_Client\i386" /source:"\\server\Shared Documents\IT\Software Deployment\SCCM_Client\" When ccmsetup.exe calls msiexec to install, it messes with my source. It chokes on the spaces, and gives me a 1639 (invalid command line arguments) MSI (s) (DC:80) [11:14:18:670]: MainEngineThread is returning 1639 Info 1639. Invalid command line argument. Consult the Windows Installer SDK for detailed command line help. /SOURCE:\\V-ALBDC\SHARED I see what is has done here: MSI (s) (C0:8C) [21:19:03:367]: PROPERTY CHANGE: Adding /LOGON property. Its value is '/logon'. MSI (s) (C0:8C) [21:19:03:367]: PROPERTY CHANGE: Adding /SOURCE:\\SERVER\SHARED property. Its value is '/source:\\server\Shared'. MSI (s) (C0:8C) [21:19:03:367]: PROPERTY CHANGE: Adding DOCUMENTS\IT\SOFTWARE property. Its value is 'Documents\IT\Software'. MSI (s) (C0:8C) [21:19:03:367]: PROPERTY CHANGE: Adding DEPLOYMENT\SCCM_CLIENT\I386 property. Its value is 'Deployment\SCCM_Client\i386'. MSI (s) (C0:8C) [21:19:03:367]: PROPERTY CHANGE: Adding /SOURCE: property. Its value is '/source:'. This is spacing stuff should be elementary! I can't beleive that ccmsetup is messing this up so badly. I can see in the ccmsetup.log that it's not even generating it correctly. Any pointers? I need a solution that works for the both ccmsetup and msiexec. Removing the spaces from the path isn't an option :(
January 15th, 2011 6:50am

Interesting thought. I noticed that /logon was not working either. I put the property at the end of the command line. First thing I noticed. /LOGON started working. Then when I removed it, the msi log file did not show the properties. And here, I found it documented. It's subtle, but it's there: Installation Properties The properties described here are used alone or in combination following any command-line options that are specified after ccmsetup.exe This was self-imposed! I appreciate the help talking it out!
Free Windows Admin Tool Kit Click here and download it now
January 15th, 2011 7:01am

How are you call that line in your script? Can you post that snippet of code? The reason I ask is because the ccmssetup parameters (/logon and /source) are being passed to the MSI as public properties instead of being consumed by ccmsetup which leads me to believe that the command-line is somehow malformed or mangled. Can you also post the snippet of your ccmsetup.log with the error (not just the error line though, a actual snippet so we can see the context)?Jason | http://myitforum.com/cs2/blogs/jsandys | http://blogs.catapultsystems.com/jsandys/default.aspx | Twitter @JasonSandys
January 15th, 2011 7:06am

Actually, it has nothing to do with the space. Quite simply: ccmsetup claims to support multiple source arguments: http://technet.microsoft.com/en-us/library/cc181242.aspx "Provides a local or remote location where Ccmsetup.exe locates Client.msi and any language-specific files or folders, such as Client.mst. You can specify this switch multiple times to provide more than one possible installation source." However, doing so causes it to create a mess. Here is a simple multiple source command and the fall out: C:\WINDOWS\system32\ccmsetup\ccmsetup.exe" /runservice /source:"\\domain.com\softwaredeployment$\SCCM_Client" SMSSITECODE=LAS /logon /source:"\\domain.com\softwaredeployment$\SCCM_Client\i386" /source:"\\domain.com\softwaredeployment$\SCCM_Client\" Right in the ccmsetup.log file: <![LOG[MSI properties: SMSSITECODE="LAS" /LOGON="/logon" /SOURCE:\\DOMAIN.COM\SOFTWAREDEPLOYMENT$\SCCM_CLIENT\I386="/source:\\domain.com\softwaredeployment$\SCCM_Client\i386" /SOURCE:\\DOMAIN.COM\SOFTWAREDEPLOYMENT$\SCCM_CLIENT"="/source:\\ctg.com\softwaredeployment$\SCCM_Client"" CCMHTTPPORT="80" CCMHTTPSPORT="443"]LOG]!> So, I try to replace /source: with /source= which is a little more MSIEXEC friendly. We're closer, but it's still wrong: SMSSITECODE="LAS" /LOGON="/logon" /SOURCE="\\domain.com\softwaredeployment$\SCCM_Client\i386" /SOURCE="\\domain.com\softwaredeployment$\SCCM_Client"" CCMHTTPPORT="80" CCMHTTPSPORT="443"]LOG]!> The double quote on the second source screw up msiexec. I guess that it really does not support multiple sources. I will have to build my own source instead of using the one that comes with the install.
Free Windows Admin Tool Kit Click here and download it now
January 15th, 2011 7:23am

So, it's not necessarily multiple sources. Here is a command, plus the generated MSI properties. \\domain.com\softwaredeployment$\SCCM_Client\ccmsetup.exe SMSSITECODE=LAS /logon /source:"\\domain.com\softwaredeployment$\SCCM_Client\i386\" SMSSITECODE="LAS" /LOGON="/logon" /SOURCE:\\domain.com\SOFTWAREDEPLOYMENT$\SCCM_CLIENT\I386"="/source:\\domain.com\softwaredeployment$\SCCM_Client\i386"" CCMHTTPORT="80" CCMHTTPSPORT="443" \\domain.com\softwaredeployment$\SCCM_Client\ccmsetup.exe SMSSITECODE=LAS /logon /source="\\domain.com\softwaredeployment$\SCCM_Client\i386\" SMSSITECODE="LAS" /LOGON="/logon" /SOURCE="\\domain.com\softwaredeployment$\SCCM_Client\i386"" CCMHTTPPORT="80" CCMHTTPSPORT="443" It is completely botching the source. Unfortunately, just pointing it to the 386 directory is still resulting in pulling from the MP via BITS, which I am desperately trying to avoid. So, is there other information that I can provide? I think it's pretty clear what's happening, and I'd call it a bug. But, i will not discount that there is still something I might not be understanding.
January 15th, 2011 7:40am

/source and /logon are not passed to msiexec, they have nothing to do with client.msi and should not be passed to it -- that's my point. Those are parameters for ccmsetup that tell it how to download the rest of the files it needs, like client.msi and how to launch client.msi. Only the public properties (the parameters in all caps) are passed to msiexec because only those have meaning in the context of client.msi. Also, changing the : to a = had no effect because that's not proper syntax at all. It must be a : for ccmsetup. Also, what is /runservice? There is no such ccmsetup parameter. Maybe that's what's causing your error. That's why to be able to help you, we need to see exactly what you are doing and thus the request for the script snippet as weel as the ccmsetup.log snippet.Jason | http://myitforum.com/cs2/blogs/jsandys | http://blogs.catapultsystems.com/jsandys/default.aspx | Twitter @JasonSandys
Free Windows Admin Tool Kit Click here and download it now
January 15th, 2011 7:47am

I beg to differ regarding /source and /logon. Running this command, which is completely correct: \\domain.com\softwaredeployment$\SCCM_Client\ccmsetup.exe SMSSITECODE=LAS /logon /source:"\\domain.com\softwaredeployment$\SCCM_Client\i386" /source:"\\domain.com\softwaredeployment$\SCCM_Client\" Now, I open ccmsetup.exe and I see this: <![LOG[Command line: "C:\WINDOWS\system32\ccmsetup\ccmsetup.exe" /runservice /source:"\\domain.com\softwaredeployment$\SCCM_Client" SMSSITECODE=LAS /logon /source:"\\domain.com\softwaredeployment$\SCCM_Client\i386" /source:"\\domain.com\softwaredeployment$\SCCM_Client\"]LOG]!><time="15:50:57.755+300" date="01-14-2011" component="ccmsetup" context="" type="1" thread="3896" file="ccmsetup.cpp:4102"> (note the /runservice -- ccmsetup is running itself again, with that parameter. That is how it runs itself as service to complete the set up) Now, moving on to my MSI. ccmsetup.msi.log show me this: MSI (s) (C0:88) [15:51:13:371]: Command Line: REINSTALL=ALL REINSTALLMODE=vmaus SMSSITECODE=LAS /LOGON=/logon /SOURCE:\\domain.com\SOFTWAREDEPLOYMENT$\SCCM_CLIENT\I386=/source:\\domain.com\softwaredeployment$\SCCM_Client\i386 /SOURCE:\\domain.com\SOFTWAREDEPLOYMENT$\SCCM_CLIENT"=/source:\\domain.com\softwaredeployment$\SCCM_Client" CCMHTTPPORT= (It most certainly DID receive LOGON and SOURCE on the command line.) However, the property being passed is invalid: MSI (s) (C0:88) [15:51:13:371]: PROPERTY CHANGE: Adding REINSTALL property. Its value is 'ALL'. MSI (s) (C0:88) [15:51:13:371]: PROPERTY CHANGE: Adding REINSTALLMODE property. Its value is 'vmaus'. MSI (s) (C0:88) [15:51:13:371]: PROPERTY CHANGE: Adding SMSSITECODE property. Its value is 'LAS'. MSI (s) (C0:88) [15:51:13:371]: PROPERTY CHANGE: Adding /LOGON property. Its value is '/logon'. MSI (s) (C0:88) [15:51:13:371]: PROPERTY CHANGE: Adding /SOURCE:\\domain.com\SOFTWAREDEPLOYMENT$\SCCM_CLIENT\I386 property. Its value is '/source:\\domain.com\softwaredeployment$\SCCM_Client\i386'. MSI (s) (C0:88) [15:51:13:371]: PROPERTY CHANGE: Adding /SOURCE:\\domain.com\SOFTWAREDEPLOYMENT$\SCCM_CLIENT" property. Its value is '/source:\\domain.com\softwaredeployment$\SCCM_Client" CCMHTTPPORT='. MSI (s) (C0:88) [15:51:13:411]: Note: 1: 1729 MSI (s) (C0:88) [15:51:13:411]: Note: 1: 2729 MSI (s) (C0:88) [15:51:13:411]: Note: 1: 2729 MSI (s) (C0:88) [15:51:13:461]: Product: Configuration Manager Client -- Configuration failed. MSI (s) (C0:88) [15:51:14:352]: MainEngineThread is returning 1639 Info 1639. Invalid command line argument. Consult the Windows Installer SDK for detailed command line help. 80" I hope this is enough of the snippet you need. I am running ccmsetup from the command line at this point. I've removed all external influences. I typed the command at the beginning of this post *by hand*
January 15th, 2011 8:02am

I assume your \\server must be a DFS share? If not then why not just use \\SCCMServer\client$ John Marcum | http://myitforum.com/cs2/blogs/jmarcum/|
Free Windows Admin Tool Kit Click here and download it now
January 15th, 2011 8:25am

I was just omitting the name of my server. It's a habit. I don't want to use the SCCM Server because I only have one and do not want to install remote (WAN) clients from it. So, while there is a DFS solution in place, even a localized copy does not work because of the space in the source.
January 15th, 2011 8:32am

Once again, that's my point. They should not be getting passed to msiexec because it is not a property for msiexec and is meaningless in the context of this (or any) msi. Try changing the order of the command-line putting the ccmsetup.exe paramaters before the client.msi properties: \\domain.com\softwaredeployment$\SCCM_Client\ccmsetup.exe /logon /source:\\domain.com\softwaredeployment$\SCCM_Client\i386 /source:\\domain.com\softwaredeployment$\SCCM_Client\" SMSSITECODE=LASJason | http://myitforum.com/cs2/blogs/jsandys | http://blogs.catapultsystems.com/jsandys/default.aspx | Twitter @JasonSandys
Free Windows Admin Tool Kit Click here and download it now
January 15th, 2011 8:38am

This topic is archived. No further replies will be accepted.

Other recent topics Other recent topics