WSI/MSI Creation Problem
First post on the forum. Everyone seems to be pretty knowledgeable here. I'm a Citrix admin who has scripted/packaged in the past by playing with the app and a whole lot of google. There are holes in my knowledge base in this area so apologies in advance.
Ok, so again packaging and coding.. not my forte so bear with me.
Problem:
I'm making an MSI that needs to be able to patch a program. Currently the files don't get there file versions updated between revisions and this is causing TONS of problems with file copying in the package. I'm using Wise Package Studio 7 and Wise documentation is... spotty. The other guy that's used Wise here generally just uses it for captures and doesn't build from scratch. This doesn't help me.
Any and all help with anyone that knows how to build in WISE or work with an MSI/MST would be greatlly appreciated. I've found resources like http://www.dawnstar.com.au/wpshelp/ and http://juice.altiris.com/taxonomy/term/231/ but the specifics are either for a FAR older version or expects a level of training in WISE I admittedly do not have.
History
At the new job the primary reason my Citrix servers exist is for this one program I'm currently working with. It's based on CA's AllFusion Gen. This is an internally made product by a complete other division that I have interaction with but the politics are... odd.
We have change control here... not my favorite thing but I can live with it. We also patch pretty much weekly.
This CA GEN based app runs off Client Manager and we have about 12 regions that each are installed in a different location. They are all basically copies of each other but of different versions. This week lets say 4 regions are patch 14, 8 are patch 15, and 4 are patch 16. At this time I can't combine them into minimal regions.
Here is where it gets fun. Patches.... are zip files. That I unzip onto a region with sysinternal's filemonitor turned on and watching the folder. WTF? Again, assuming the though process was it's an internal product, why bother with an installer. A couple problems however, they don't fix the file versions of the DLL/EXE's when they update them.This is fine for one or two installs. But for management for a half dozen citrix servers that all have to be the same... no. Also this WILL grow to hundreds of servers.
Now, I AM planning on building a VB .NET frontend with scripts that will do all of this for me (or some other language/method). But that's down the road and I'm working on this now and have to make it work in some sort of automated way. I have WISE Package Studio 7, I've updated it as much as I can. I'd prefer Installshield from what I've found in my research but this is what I have.
What I've tried
File versions that are the same but the files are different are a big no no. MSI's don't know what to do with it. No matter what I've tried the files stay at whichever version was written to the folder first.
I've tried:
- "Admistrator options" - File replacement - Always reinstall and reinstall if same or older (this SHOULD apply to install as well
- Making merge modules - yes I know this isn't ideal but it links files together and should get around the problem. However, you get to set ONE install locale and if you link it to another 'feature' that also has the file it removes it from the feature.
- Copying from another location. This doesn't work unless the file existed BEFORE the installer started. I suppose i can make a required MSI that puts in the source files but honestly haven't figured out how to do THAT yet either. Or how to order when what is done. It seems to be kind of 'it will get done... sometime' during the install. Wise scripting and install order are also not known to me yet.
-Manually changing the WISE to run in 'omus' instead of 'amus' and/or changing the ReinstallFileVersion and ReinstallFileOlderVersion from 'o' to 'a'
Ok, so again packaging and coding.. not my forte so bear with me.
Problem:
I'm making an MSI that needs to be able to patch a program. Currently the files don't get there file versions updated between revisions and this is causing TONS of problems with file copying in the package. I'm using Wise Package Studio 7 and Wise documentation is... spotty. The other guy that's used Wise here generally just uses it for captures and doesn't build from scratch. This doesn't help me.
Any and all help with anyone that knows how to build in WISE or work with an MSI/MST would be greatlly appreciated. I've found resources like http://www.dawnstar.com.au/wpshelp/ and http://juice.altiris.com/taxonomy/term/231/ but the specifics are either for a FAR older version or expects a level of training in WISE I admittedly do not have.
History
At the new job the primary reason my Citrix servers exist is for this one program I'm currently working with. It's based on CA's AllFusion Gen. This is an internally made product by a complete other division that I have interaction with but the politics are... odd.
We have change control here... not my favorite thing but I can live with it. We also patch pretty much weekly.
This CA GEN based app runs off Client Manager and we have about 12 regions that each are installed in a different location. They are all basically copies of each other but of different versions. This week lets say 4 regions are patch 14, 8 are patch 15, and 4 are patch 16. At this time I can't combine them into minimal regions.
Here is where it gets fun. Patches.... are zip files. That I unzip onto a region with sysinternal's filemonitor turned on and watching the folder. WTF? Again, assuming the though process was it's an internal product, why bother with an installer. A couple problems however, they don't fix the file versions of the DLL/EXE's when they update them.This is fine for one or two installs. But for management for a half dozen citrix servers that all have to be the same... no. Also this WILL grow to hundreds of servers.
Now, I AM planning on building a VB .NET frontend with scripts that will do all of this for me (or some other language/method). But that's down the road and I'm working on this now and have to make it work in some sort of automated way. I have WISE Package Studio 7, I've updated it as much as I can. I'd prefer Installshield from what I've found in my research but this is what I have.
What I've tried
File versions that are the same but the files are different are a big no no. MSI's don't know what to do with it. No matter what I've tried the files stay at whichever version was written to the folder first.
I've tried:
- "Admistrator options" - File replacement - Always reinstall and reinstall if same or older (this SHOULD apply to install as well
- Making merge modules - yes I know this isn't ideal but it links files together and should get around the problem. However, you get to set ONE install locale and if you link it to another 'feature' that also has the file it removes it from the feature.
- Copying from another location. This doesn't work unless the file existed BEFORE the installer started. I suppose i can make a required MSI that puts in the source files but honestly haven't figured out how to do THAT yet either. Or how to order when what is done. It seems to be kind of 'it will get done... sometime' during the install. Wise scripting and install order are also not known to me yet.
-Manually changing the WISE to run in 'omus' instead of 'amus' and/or changing the ReinstallFileVersion and ReinstallFileOlderVersion from 'o' to 'a'
0 Comments
[ + ] Show comments
Answers (7)
Please log in to answer
Posted by:
anonymous_9363
16 years ago
The first problem you have is to beat the developers with a blunt object, preferably the arm bearing their mouse-using.hand, so that their careers are brought to a shuddering halt. Anyone who releases binaries with no version control deserves everything they get. How in God's name do they know what version is in use? By file size? Date? Jeez...
Anyway, in this scenario, forget patching by MSI. You could try 'touching'f iles with ridiculous dates etc to force an update but then you get into scripting, rollback actions, etc, etc. If it was me, I'd simply have my package remove the recalcitrant file before installing the new copy. Check out MSI.CHM for details on the RemoveFile table and the RemoveFiles action.
Sledgehammer and nut, but your choices are limited, given the brain-dead "development" process.
Anyway, in this scenario, forget patching by MSI. You could try 'touching'f iles with ridiculous dates etc to force an update but then you get into scripting, rollback actions, etc, etc. If it was me, I'd simply have my package remove the recalcitrant file before installing the new copy. Check out MSI.CHM for details on the RemoveFile table and the RemoveFiles action.
Sledgehammer and nut, but your choices are limited, given the brain-dead "development" process.
Posted by:
Aquatint
16 years ago
I couldn't agree more. This IS a dialog I plan on having with them but right now the deployment cycle for redoing my farm takes precedent. They are upgrading the Citrix farm and they were just going to put the test farm into production.. which was built in the same method as the old farm without breaking out the components. NO fault tolerance... shudder. The old version of Citrix also reached EOL/EOM so they are HOT on the fix.
I was actually thinking of trying to delete the files before the push but didn't know how. thanks for pointing to the Removefile and removefiles tables. I'll look into that.
Other options... changing the file versions myself... but THAT can't be good and I don't know if the program checks file versions on its own. easy enough to check I suppose.
Also, just have the MSI unzip the patches instead of placing files. That probably would get around it but then i have to learn how to do that AND not have the extraction path be hardcoded to just one folder but each region without having 12 copies in the MSI of the patch zip?
I was actually thinking of trying to delete the files before the push but didn't know how. thanks for pointing to the Removefile and removefiles tables. I'll look into that.
Other options... changing the file versions myself... but THAT can't be good and I don't know if the program checks file versions on its own. easy enough to check I suppose.
Also, just have the MSI unzip the patches instead of placing files. That probably would get around it but then i have to learn how to do that AND not have the extraction path be hardcoded to just one folder but each region without having 12 copies in the MSI of the patch zip?
Posted by:
Aquatint
16 years ago
Posted by:
anonymous_9363
16 years ago
ORIGINAL: AquatintWell, that gets you into scripting so it would be simpler to script the file replacement.
Other options... changing the file versions myself... but THAT can't be good and I don't know if the program checks file versions on its own. easy enough to check I suppose.
ORIGINAL: AquatintScripting again...
Also, just have the MSI unzip the patches instead of placing files. That probably would get around it but then i have to learn how to do that AND not have the extraction path be hardcoded to just one folder but each region without having 12 copies in the MSI of the patch zip?
as for how they know what version of patch has been applied... each patch has an empty text file with .txt removed.OMG, it just gets better and better...LOL
Go with the file removal, then the developer's spine removal.
Good luck!
PS.
What's the daily rate for your developers? Your place sounds like an easy gig to me... :)
Posted by:
Aquatint
16 years ago
Thanks VBScab,
the immediate fix today is just to make the zip files exe's and have Citrix Installation Manager watch the installs. It will be an install made per region but testing needs to happen. I'll do file delete research/test after I finish this first server build. Thanks again for the help.
As for the dev rates... no clue but maybe I'll let you know after the 3 month contract to perm time frame is over ;) Don't want to rock the boat excessively yet LOL
the immediate fix today is just to make the zip files exe's and have Citrix Installation Manager watch the installs. It will be an install made per region but testing needs to happen. I'll do file delete research/test after I finish this first server build. Thanks again for the help.
As for the dev rates... no clue but maybe I'll let you know after the 3 month contract to perm time frame is over ;) Don't want to rock the boat excessively yet LOL
Posted by:
aogilmor
16 years ago
ORIGINAL: VBScab
ORIGINAL: AquatintWell, that gets you into scripting so it would be simpler to script the file replacement.
Other options... changing the file versions myself... but THAT can't be good and I don't know if the program checks file versions on its own. easy enough to check I suppose.
ORIGINAL: AquatintScripting again...
Also, just have the MSI unzip the patches instead of placing files. That probably would get around it but then i have to learn how to do that AND not have the extraction path be hardcoded to just one folder but each region without having 12 copies in the MSI of the patch zip?
as for how they know what version of patch has been applied... each patch has an empty text file with .txt removed.OMG, it just gets better and better...LOL
Go with the file removal, then the developer's spine removal.
PS.
What's the daily rate for your developers? Your place sounds like an easy gig to me... :)
This sounds like one for thedailywtf.com, seriously.
I'm not even a programmer, but I know the importance of versioning just from working with MSI's
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.