I had a vendor MSI that I needed to make changes too. I wanted to push it out as a silent install but as it was configured, it required user input to install correctly. I found a lot of information telling me that I needed a MSI transform (or MST) to do that. But I found almost no details on how to create that transform.
I eventually discovered the ORCA MSI Editor. I think its a Microsoft tool but I found it on this Technipage. ORCA looks at the MSI like its a database and exposes all the tables and records to you. It is a bit overwhelming to get into. After messing up a few MSI packages (make backups first) I discovered how easy it was to create a transform. Making changes is where it gets hard.
To create a mst transform, first open the MSI. Then under Transform, choose New Transform. Now make any changes or updates that you want to make. When you are done, under the Transform menu choose Generate Transform and save it. This will create a MST with your changes. To test the transform you can run your command like this: base.msi TRANSFORMS=transform1.mst
That looks easy and once you figure out what changes you are going to make then it is easy. Here are two links you should look at. Using a Sequence Table and the List of Database Tables. They were a huge help to me. Here are a few examples of changes that I made.
The first one was to fix the message “This installation cannot be run directly launching the MSI package. You must run setup.exe“. In the Properties table add a row called ISSETUPDRIVEN with a value of 1. This will allow the msi to run on its own. Remember they added this check to make sure your version of Microsoft Installer supported the MSI. If it fails, you may have to install the correct files yourself.
My setup had one section with 3 options and I need to disable one of those options. I tracked that option down to a entry in the Feature table. Looking at the online documentation it looks like setting the Level value to 0 from 1 will do that for me.
Registry settings was also something I needed to mess with. All the registry settings were in the Registry table. I found the key I wanted to change and was able to change the value. There was a second key I had to add in by hand. It is one that the installer would prompt the user for and it had no default. If I want my silent install to work, I have to make sure that value gets set. The component column puts the key in a group that matches an installed component. I reused the component value of the other key I changed. I should never see one without the other. I set Root = 2 because that’s what the other key had.
That was all the changed I needed to make. It was a lot to take in at first. I had never created a MST before. It was a great way to work around the vendor. I know I have ran into this before where a MST was needed but I was able to just use a batchfile instead. Now that I am running things with a bit more security with windows 7, batch files just don’t cut it anymore.
I ran into a situation where the vendor would only provide a exe as an installer and not a MSI. If you work with Active Directory for software deployment, you know how important a MSI can be. We also want to customize a few options and make it silent. Our goal is something we can deploy to machines and not have to install or configure by hand.
When I run the EXE, I see that it is running a standard Microsoft installer. After looking around I saw lots of comments that indicate that some EXE files like I had could be holding the MSI inside it. So I started my search for ways to extract the MSI.
My early search results pointed me to a Universal Extractor. It did indicate that it was a Windows Installer package but both of its methods failed to extract any usable files. I also found that the Windows SDK had some scripts that could export from Microsoft Installer files. After I installed the SDK, I discovered that it didn’t work so well on a EXE.
I did find a very easy way to get the MSI out of the EXE though. I cleared out the temp folder and ran the install. It first decompressed the files into the temp folder. The MSI I needed was one of them. There were a few MSI files so I made a copy of all of them. One of them was important later.
When I tried to run the MSI directly, it gave the message that I had to run setup.exe to start the install. It looks like it requires the shell EXE to run because it verifies the environment. One thing it does is check to make sure the correct Microsoft Installer is loaded. ISScript9.msi was the MSI file it ran when the environment was not correct. I did end up needing to install that, but I still got the error about needing to run the EXE first.
I saw was to add ISSETUPDRIVEN=1 to the command line or into a transform. I ended up adding it to the transform and it solved that issue. Creating the transform was a lot more involved that I expected. The largest problem was the lack of information on it. I am going to do another write up on that.
I finished this faster than I expected this weekend. I also added this FAQ and changelog to my KTQ page.
FAQ
What price does it use for the threshold?
It pulls this price from auctioneer. It takes the most recent scan and using the simple stats module it gets the losest price.
When will it support Enchanting scrolls?
Enchant scroll support was added in 1.03.
Why is there no group for enchants?
My group for glyphs is redundent because glyph would queue them all. Same holds true with enchants. Use enchant as your keyword to queue them all. There is a bug with release 1.03 thats fixed in1.04 to make that work.
Whats the best way to queue enchants if there is no group?
For now I would make a macro. Use the item id of the scroll (not the spell id of the enchant) to save space. Remember, you can queue these by name. You don’t have to use groups.
Attempt to call method ‘QueueCommandIterate’ (a nil value) ?
This was an error message that people got if they used a old version of Skillet (the only one on curse). This should be resolved in 1.03
Changelog
1.05 changes
Fixed issues where enchant id matched item id and messing up the item count
1.04 changes
Fixed error when using keyword that matched a skill category (ex. the word enchant)
1.03 changes
Added LilSparky’s Workshop as required mod
Added Enchant Scroll Support
Added support for other Skillet Versions (the common one on curse and the mainline branch)
Increased the keyword match from 3 words to 6 words
Added option to use Item ID for keyword
Downloads
KTQ: http://wow.curse.com/downloads/wow-addons/details/kevtool-queue.aspx
Skillet: http://www.wowace.com/addons/skillet/repositories/lilsparkys-clone/files/
Altoholic: http://wow.curse.com/downloads/wow-addons/details/altoholic.aspx
Datastore: (Included with Altoholic)
LilSparky’s Workshop: http://wow.curse.com/downloads/wow-addons/details/lil-sparkys-workshop.aspx
Auctioneer (Optional): http://auctioneeraddon.com/
lilsparky has made some great contributions in the mods he has made for wow. I have looked to his code a number of times and it helped me pick up LUA. Once again I found information I need in his code. One important detail I needed to enable KTQ to work with enchant scrolls is matching the produced scroll with the skill that makes it. All the other crafts produce an item and that info can be gathered with a built in wow api. The only reason enchant scrolls did not work was because I lacked that information. This is where lilsparky saves us. For LilSparkysWorkshop, he already had to make that list.
I will be adding LilSparkysWorkshop as a required mod for KTQ in the next release. I could easily copy and past the code into KTQ, its still easier for me to interface with LilSparkysWorkshop for that. It helps give him credit and while I have to maintain the api interface, it is less code I have to maintain. Code reuse is a good thing.
I have also resolved issues people have with the main branch of Skillet. I check the version now and KTQ makes that adjustment. It turns out that the craft queue api in both of them is still fairly close. In my next upload of KTQ, it will include this fix. This is the most common issue that people have with this mod that I only support the lilsparky branch of skillet and not the main one.
My 4 year old girl Charis has started to play Warcraft. It is interesting watching her discover the game. I started her out on a 63 warlock at the xroads on a mount. She would ride all over the place. I would let her be and after a while she would come get me for help.
I guess she likes to take the horse swimming. Her corpse was way out in the water several times. So told her she had to keep the horse out of the water. Once she stopped taking him swimming, she lived a lot longer. I also placed the mount on the action bar and showed her how to mount up on her own.
Her next issue was getting inside a building and not able to mount up. She likes to check things out. I pulled out a pet (her little buddy) and let her know she was not allowed to ride the horse inside (or in the water). Other than getting stuck in odd places, she managed to find her way around. One of her favorite things was ridding the blimp. She managed to find the blimp outside org, go up the spiral stairs, wait for the blimp, and get on it.
I later showed her the mini map. There was one point she was a ghost not far from the graveyard (i usualy just spirit rez her). I have Carbonite installed so it draws a line on the mini map directing you where to go. She was able to make the connection from the mini map to her character. When there was something in her path like a tree, she would navigate around it and use the mini map to get back on track. She was in northrend on that 63 lock so I got her back to org where it was a bit safer.
Charis, her horsey, and her little buddy are cutting into my pre raid game time a bit. When its my turn, she sits and watches me raid a while. I use headphones to protect her from vent though. I need to get her set up on her own computer and get her into some more educational games. But for now I will let her have fun with her horsey and little buddy. Thats what she askes for when she wanted to play. A horsey and a little buddy.
I am still trying to work a few things out. Im trying to consolidate my stuff better, but looking at I don’t want all of my warcraft stuff showing up on my main blog. My last post I started out talking about herbs. If you are thinking wow its on topic for wow stuff. If you came to the blog from something else where wow was not on your mind and i’m talking about purchasing herbs you may want me to show up for a random drug test at work.
I have it set up that posts from one area auto show up in the other. I just have too much getting republished. I know I am falling behind on my posts. I do that often, but I usualy have a large queue of stuff to cover. So now that my queue has ran out, I am missing more posts.
I’ll get back to a schedule here before too long.
I have been falling behind on my herb purchases. I never did pick up any new farmers after I lost my last few. What I did instead was just camp the herbs on the AH. Never letting them fall below a set price. I moved the market average up and it held there for a few months. I no longer camp those mats and instead just check them every few days.
Today I made a huge purchase because they fell so low. I spent 3400G at the AH and took a great deal of herbs off the AH in one pass. It feels good to have a lot of herbs again. I think I just picked up close to 250 stacks of various herbs. It’s going to be one huge milling session.
I made the mistake once before where I cut myself off because the low prices scared me. I never should have stopped buying last time.
The patch loaded fine on my laptop but my tower failed on me. I know I have something odd on my tower because for the first time in 4 years I actually had to install it. Before now I used the trick where I could just copy it to the computer and run. I am still running Windows 7 RC1 64 on it. But it has worked fine for me. So when the patch worked fine on my XP laptop and failed on my tower I knew that if it didn’t work I would be reinstalling the OS. So lets start from the top.
I start wow and it kicks in the downloader. The full screen one with the percentage counter in the middle and a big cancel button. It is going so very slow compared to what I just saw on my laptop. I cancel it once and start it over. It started at 0% and I lost what I had. So I left the room and did other things. When I returned to log in to the wow client I get the message that the patch failed to apply and I had to do it again. So I close wow and reopen it and start over. This time it holds out at 0% for a long time and jumps to 100%. Same message when I log into wow.
I open up the wow folder anddon’t see any of the patch files. I kick of the launcher (because I tend to skip that). It shows that download view like its downloading the patch but its at nothing with no indicator. It looks like it froze as it opened. Had to kill the process and ended up rebooting it. I try it the normal way 2 more times and no go. I also tried running wow.exe “as Administrator”.
I head to the Blizzard forums and see lots of people having issues like this. One sugestion I saw was to run 2 sessions of wow. I tried a few variations of running 2 sessions of wow and I eventualy got it to work. I opened 2 sessions and let them load to the login screen. I then logged into both of them as fast as I could so they were both running the downloader at the same time. And they both started downloading. Not the jump for 0% to 100%, it actually did a download.
While they are downloading I decide to go hunt down the files. At this point I have not seen any patch files. It looked like scan.dll was changed because of the updated timestamp. That looked a little strange to me but I don’t know how it should look. When the first session finished downloading something different happened. Windows 7 UAC prompted me asking if I wanted the BlizzardUpdater to run. That was the first time all night UAC prompted me. I let it run and it flashed past. Then the 2nd wow session triggered UAC and I let it run but it said that the version I has was too new for it. Looking at the Warcraft folder showed a few files with new date stamps.
I logged into wow and was presented with the authenticator prompt. That was also the first time I saw that (I discovered I could enter random chars for the password and the downloader would start). After I spent all that time getting it updated, my kids kicked me off the computer so they could play Warcraft.
I started taking a serious look at making gold in Warcraft several months ago. I rediscovered a few blogs that I knew about before. I took a much closer look at those sites and started to make more gold. I got more involved and found myself teaching other what I had learned. I turned to my own blog to do that.
That is how My Auction House Banker got started. One thing that separated me from other bloggers and helped me build connections with others is how I will dive into code for solutions. My KTQ mod was a big hit and it saved a ton of people a lot of time. Now I am looking to expand my topic area a little bit and bring more code solutions to my readers.
So I have moved the blog to a webserver and taking this opprotunity to rebrand it. The new home is www.ithinkincode.com/warcraft and is now called Kevmar on Warcraft. All of my old content was moved over and is ready for you. Gold will come to you when you are doing the right thing.
This is my latest project. I am all over the Internet with no one point where you can find all my stuff. I have a few blogs, mods, and programs that are hosted at many different location. Every time I create something new on its own, I have to built a reputation for it from scratch. By building a central collection of all the things I should be able to build a reputation for myself and leverage that on new projects I plan on working on.
My most active project is my Warcraft blog. So for the short term you will see a lot of Warcraft related content. All of the Warcraft related content will be republished in my Warcraft section. If your only interest in my blog is my Warcraft content head over to Kevmar on Warcraft and book mark that site. All of my Warcraft content has been moved over already.
I have a few projects floating on the web that I plan on pulling back to this site. I expect that it will take time and I will feature them here as I move them over.