/build/static/layout/Breadcrumb_cap_w.png

Custom Action Help please?

Hoping someone out there might be able to help me out...

I have a vendor supplied msi (RightNow 8 Service module) that uses ca's to establish a DBNAME and CGIURL variable. Everything works great...until I need to change those 2 values. I know that running an uninstall and reinstalling the app will rewrite those values, but I need to make those values change post initial installation to support a db and url name change in a few days. How might I accomplish this? I've never encountered a package that wrote public properties this way; what is the benefit?

Any pointers are greatlyi appreciated! [:)]

0 Comments   [ + ] Show comments

Answers (30)

Posted by: kiptek 15 years ago
Second Degree Green Belt
0
if you delete these variables and repair the app, are they repaired? or,
if you changed the value of the variables, & repaired the app, are they reverted to the original? and,
what are the conditions for the CAs in the MSi? (NOT Installed, NOT Remove~=ALL, etc...)
Posted by: nomead 15 years ago
Senior Yellow Belt
0
Thanks for the quick reply.

Set Property CGIURL to [CGIURL] [CustomTextA_SetProperty_EDIT1].
Set Property DBNAME to [DBNAME] [CustomTextA_SetProperty_EDIT2]

both found in UI with no conditional requirements in the MSI Script.

I don't know how to delete the values; CGIURL is displayed in the login popup, but DBNAME isn't present. This is a .net application, which I've also never worked with before... Regmon and Filemon don't report any instances of the CGIURL value when I search.
Posted by: kiptek 15 years ago
Second Degree Green Belt
0
Go to the tables view & search for all instances of CGIURL & DBNAM. After being set in the custom action, they are being used somewhere... probably to populate a reg entry, an INI file, ODBC setting, etc...

i had presumed you were saying that they were setting environment variables...
Posted by: nomead 15 years ago
Senior Yellow Belt
0
1 instance of each in the control table, 1 of each in the CustomAction table No other hits
Posted by: nomead 15 years ago
Senior Yellow Belt
0
Sorry, I have no idea where these values are being stored...I can only guess that they are being embedded/compiled in a file... There are hits in the msi log file, in a line "MSI (s) (B0:60) [14:12:32:734]: Executing op: CustomActionSchedule(Action=_57AF76F5_8A8D_4A4A_9B37_35EC84CF9401.install,ActionType=3073,Source=BinaryData,Target=ManagedInstall,CustomActionData=/installtype=notransaction /action=install..."
Posted by: kiptek 15 years ago
Second Degree Green Belt
0
Really? CGIURL & DBNAME did not show up in the property table?

search again for all instances...
Posted by: nomead 15 years ago
Senior Yellow Belt
0
Correct, it does not appear. I also looked in the property table, sorted, and did not see it there...One small step to my current confusion. I believe they are using the EDITA, EDITA2, etc. in the property table to reference somehow...
Posted by: kiptek 15 years ago
Second Degree Green Belt
0
do they have a trial version available for download? Went to the site & there's too much junk to navigate trying to figure out where to go to get what.
Posted by: reds4eva 15 years ago
Second Degree Blue Belt
0
Rightnow is a pile of poo. At least they have changed the latest version to an MSI, and not a clickonce app.
Another gotcha for version 8.4.2 is that it requires ISA server v2006. So I had to also upgrade the ISA server.

If like me you have to have some site specific stuff in MSI's, create a transform, Create those 2 properties, cgiurl, and dbname, populated with the appropriate info. They dont write those values to somewhere you can easily edit them later.

You could also just use the command line -
msiexec /i RightNow.Installer.Setup.msi CGIURL=http://xxx-x.custhelp.com/cgi-bin/xxx.cfg DBNAME=xxxx /quiet /passive NOPING=true
Posted by: reds4eva 15 years ago
Second Degree Blue Belt
0
Hmmm, I didnt really answer your question.
because those properties are not written to the registry or a file you can edit (that I could find), re-installing is the way to go when the property values change.
Posted by: nomead 15 years ago
Senior Yellow Belt
0
@kiptek - they don't have a trial version. Would it be unethical to send the client? the app is pretty useless without a service contract with RightNow, since you won't have a backend for a connection, and I don't have credentials.

@reds4eva - you hit the nail on the head. It is still vendor preferred as a click-once app, which really stinks like poo sine they install to the local user's profile, and we have non-roaming, volatile user profiles.

I tried publishing the 2 properties in the properties table, but when I run a reinstall, it doesn't rewrite the values. I know they have a exe to publish additional site info, but it won't remove existing site info, and I have told that isn't acceptable. Any other ideas?

Thanks again, and I would appreciate it if anytone has insight into why a packager would package an app like this?
Posted by: nomead 15 years ago
Senior Yellow Belt
0
Kiptek-I really appreciate you having gone to their website to take a look. That's super cool of you.

reds4eva - you type faster than I do....thanks for the info.

I have a support case open with RightNow, but am thinking it will be a dead end.
Posted by: reds4eva 15 years ago
Second Degree Blue Belt
0
ORIGINAL: nomead
@reds4eva - you hit the nail on the head. It is still vendor preferred as a click-once app, which really stinks like poo sine they install to the local user's profile, and we have non-roaming, volatile user profiles.


The latest version I got was an MSI. But it maybe that they created it just for my client, maybe. What version do you have ?
before I had the msi I had to use the clickonce installer, I just created my own msi that copied files and set the dbname and cgiurl. When the user first logged in it would connect to rightnow and download the rest of the client files, to the profile like you said, like a wrapper. It was ugly.

A repair wont re-write the properties, you'll have to remove and re-install.
That site tool is for creating new sites, which is not alot of use.
Posted by: reds4eva 15 years ago
Second Degree Blue Belt
0
ORIGINAL: nomead
Thanks again, and I would appreciate it if anytone has insight into why a packager would package an app like this?



heres some links.
Basically, clickonce is great for a home user, but not so flash for a corporate environment. Not sure how they expect their product to be deployed to 1000 users, an email ?


http://msdn.microsoft.com/en-us/library/ms973805.aspx#clickoncevsinstaller_topic8
http://msdn.microsoft.com/en-us/library/71baz9ah(VS.80).aspx
http://msdn.microsoft.com/en-us/library/142dbbz4(VS.80).aspx
Posted by: anonymous_9363 15 years ago
Red Belt
0
ORIGINAL: nomead
Set Property CGIURL to [CGIURL] [CustomTextA_SetProperty_EDIT1].
Set Property DBNAME to [DBNAME] [CustomTextA_SetProperty_EDIT2]
I'd *love* to meet the "packager" responsible for this gem, wouldn't you?
Posted by: Inabus 15 years ago
Second Degree Green Belt
0
Not sure if anyone has suggested this but you could remove both custom actions from the custom action table, via a transform of course!

Once that is done manually set the 2 properties in the property table and then see if this works and deploys correctly. Also the problem with them atm is that they wont work when doing /qb or /qn as they are only in the UI sequance, from what you said.

P
Posted by: nheim 15 years ago
10th Degree Black Belt
0
Hi Paul,
nothing unethical here, except maybe to let such MSI's into the wild... ;-)
However, strip the files away and load the MSI file onto an ftp server like senduit.
So we could get a look at this baby (and learn from it..)
Regards, Nick
Posted by: nomead 15 years ago
Senior Yellow Belt
0
Thanks for all the replies.

It seems this installer copies some database files during installation, and relies on those ca based properties to determine where to get those files. I imagine that is why they plugged it in as a CA property, but I still don't understand how it can be used without declaring in the property table. I need to test removing the ca and using property values, as I am a bit concerned how they are manipulating xml files and its' links to those database files.

I've been in conversation with the business unit requesting the app, and the vendor...we may just go with the 1 site for a live cut, and manually remediate testers using the install/uninstall/reinstall method. Definitely less than ideal, but time is of the essence. I would still like to understand what this package is doing.

I am working on recompiling without files, problem is my vm's are all on other projects at the moment. I will send out the package as soon as one frees up.
Posted by: nomead 15 years ago
Senior Yellow Belt
0
Ok, uploaded the msi here for a day:

http://senduit.com/b4ee92


Of particular interest are the ca's "Call DLL from Installation Function ManagedInstall..."
How might one determine what the procedure calls invoke?
Posted by: AngelD 15 years ago
Red Belt
0
ORIGINAL: nomead
Of particular interest are the ca's "Call DLL from Installation Function ManagedInstall..."
How might one determine what the procedure calls invoke?

You should be able to see what the .NET DLL does by using reflector: http://www.red-gate.com/products/reflector/
Posted by: Inabus 15 years ago
Second Degree Green Belt
0
Having looked at the MSI it appears that the DBNAME and CGIURL properties are populated when a user reaches the "URL and Database Name" dialog (CustomTextA). Once populated the 2 properties are used by 2 custom actions as follows:

[CGIURL]
_57AF76F5_8A8D_4A4A_9B37_35EC84CF9401.install.SetProperty
CustomTextA_SetProperty_EDIT1

[DBNAME]
_57AF76F5_8A8D_4A4A_9B37_35EC84CF9401.install.SetProperty
CustomTextA_SetProperty_EDIT2

Looking at this it should jsut be possible to do the following:

MSIEXEC /i "RightNow.Installer.Setup.msi" DBNAME="<VALUE>" CGIURL="<VALUE>" /qb

Or you could go into the Property table and create the 2 properties with the values you want, these will of course get overwritten by running in UI mode and populating the URL screen.

Remember that these properties dont have to be in the property table as they can be dynamically created and destroyed as the MSI installs.

Paul
Posted by: nomead 15 years ago
Senior Yellow Belt
0
@Angel - Thanks for the link. How can I determine which dll is being called based on those ca's?

@Inabus - Yes, the problem I was having was that the values were not being repopulated during a reinstall. I needed those values to change via reinstall with a command line property declaration, but (as I undersand) they were a CA in the UI, it wouldn't rewrite the value during a reinstall. Would deleting those CA's and writing a global variable for CGIURL and DBNAME allow those ca's using the properties to invoke and complete? In otherwords, is there a logical reason the vendor made those property declarations as a ca and not as a property table value?

Thanks for taking the time to look at the MSI!
Posted by: AngelD 15 years ago
Red Belt
0
"How can I determine which dll is being called based on those ca's?"
Extract it from the Binary table.
Posted by: kiptek 15 years ago
Second Degree Green Belt
0
suppose you create a transform & set this properties in it, then reinstall with transform applied and REINSTALL=ALL and REINSTALLMODE=vomus
Posted by: Inabus 15 years ago
Second Degree Green Belt
0
Well I suspect the properties ARE being set correctly by the 2 custom actions:

CustomTextA_SetProperty_EDIT1
CustomTextA_SetProperty_EDIT2

Looking at HOW those custom actions are used by the installer is where I suspect the repair / reinstall is falling down, it appears there are 2x conditions on the 2 custom actions that actually use those properties, namely:

_57AF76F5_8A8D_4A4A_9B37_35EC84CF9401.install.SetProperty
The above custom action has a condition of $C__91106C9ECBA2BF3C58D4DFD7B69703F0>2

_57AF76F5_8A8D_4A4A_9B37_35EC84CF9401.install.SetProperty
The above custom aciton has a conditon of $C__91106C9ECBA2BF3C58D4DFD7B69703F0>2

What you could try, as a test, is remove the conditions on the 2 custom actions, to see if this resolves the problems.

BTW what do you mean by "Re-install", an uninstall then install, or a repair?

The reason is that the property in question is set and destroyed dynamically so wou ld have to be set whenever you do anything, like REINSTALL="ALL" etc you would need to pass the property again on the command line.

P
Posted by: nomead 15 years ago
Senior Yellow Belt
0
@Inabus - By reinstall--you are correct--uninstall then install.

@Kiptek - I've done so; Although just setting the property (and passing the value via the command line or setting the value in the property table) does not set the value after installation, removing the ca in the transform and declaring the property does.

What I don't know, is if that is causing the issue. It seems somewhere in the package ( I am guessing in those .net assemblies), complete folders are copied from the CGIURL and DBNAME values to the local PC. When the ca's for DBNAME and CGIURL are removed, the folders and files are not copied. Would that be the valid reason to have them declared and used within a ca and not the property table?
Posted by: anonymous_9363 15 years ago
Red Belt
0
ORIGINAL: nomead
It seems somewhere in the package ( I am guessing in those .net assemblies), complete folders are copied from the CGIURL and DBNAME values to the local PC. When the ca's for DBNAME and CGIURL are removed, the folders and files are not copied. Would that be the valid reason to have them declared and used within a ca and not the property table?
I wouldn't have thought so, because that's happening in the installation and it sounds like your problem is occuring when the application itself is executing. Why not ProcMon the app as it executes? It'll show you immediately what's missing (look for 'NAME NOT FOUND' entries) or if the resource is permission-protected somehow ('ACCESS DENIED').
Posted by: fritoz 15 years ago
Orange Belt
0
I appreciate I may be a bit late with this info but it may help others. I'm working on RightNow Smart Client at the moment and I was supplied this command line for populating additional URL and DBNAMES.

<InstallDir>RightNow.SiteInstaller.exe /quiet /passive /i CGIURL=http://your.web.page.url DBNAME=your_dbname

For my install the site installer exe is located here (by default): C:\Program Files\RightNow Technologies\RightNow Smart Client\8.3.5

My current MSI has two public properties named CGIURL and DBNAME which I set to our estate's first entries. I also added two Custom Actions to populate our other two entries. The only problem here was that the above exe also spawns the PDFPrinter installer afterwards which was giving errors. It appears that I may have to insert an additional two CAs, one prior to and then one inbetween those CGIURL/DBNAME CAs to uninstall the PDFPrinter. The command to uninstall the printer is:

"C:\Program Files\InstallShield Installation Information\RightNow Technologies PDF Driver\Pdf.Install.exe" /u

Horriblly authored MSI imho [:'(]
Posted by: anonymous_9363 15 years ago
Red Belt
0
Brian, wanna post up some notes to the 'Package KB'?
Posted by: fritoz 15 years ago
Orange Belt
0
Just did, its status is "Pending Approval."
Rating comments in this legacy AppDeploy message board thread won't reorder them,
so that the conversation will remain readable.
 
This website uses cookies. By continuing to use this site and/or clicking the "Accept" button you are providing consent Quest Software and its affiliates do NOT sell the Personal Data you provide to us either when you register on our websites or when you do business with us. For more information about our Privacy Policy and our data protection efforts, please visit GDPR-HQ