Tuesday, April 09, 2013

Installation directory is corrupt, could not find uninstaller: XMLPReportingTools4WordSetup.msi!

User is getting the following message after the reboot of the PC and trying to install BI Publisher (XML Publisher) on previously installed installation. User has deleted the original folder, and now unable to complete the Installation by running BIPublisherDesktop.exe. The installer first tries to uninstall and it fails because it count not find the original .msi file.

clip_image002

Solution

The uninstall information is located under 2 places.

“ C:\Program Files (x86)\InstallShield Installation Information” .

C:\Program Files (x86)\InstallShield Installation Information\{CF76FCE2-995F-479B-A004-1B67DFC7E80D}.

and under the following registry Key. Computer\HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Uninstall\{CF76FCE2-995F-479B-A004-1B67DFC7E80D}

Renaming the registry key to {CF76FCE2-995F-479B-A004-1B67DFC7E80D}.orig and rebooting the machine fixed the issue. Without rebooting, you may get a message Close the Word.

See the registry screenshots

image

image

Location of msi file

"C:\Program Files (x86)\Oracle\BI Publisher\BI Publisher Desktop\DotNetInstallFiles\XMLPReportingTools4WordSetup.msi"

image

This issue was happening on Windows 7 64 bit machine.

On Oracle Support following resolution is listed, but it does not resolved the issue

BI Publisher Errors ActiveX Component Can't Create Object and Installation Directory is Corrupt [ID 1088097.1]

Wednesday, April 03, 2013

PeopleSoft Weblogic external Client IP Address logging

If you are using PeopleSoft Weblogic Servers and enabled extended logging and added the following fields C-IP and C-DNS and only see your load balancer or reverse proxy server IP address instead of actual client IP, Please do the following changes for PIA to see the real client – ip. Not the WebLogic Plug-in Enabled is required even if you do not use WebLogic plugin.

  • Configure X-Forwarded-For HTTP header on your fron end networking applicance for e.g. F5 BIGIP.
  • Login to weblogic console and perform the following,
    Step 1 : Lock & Edit
    Step 2. Environment -> Servers -> PIA -> Configuration -> General
               Advanced
               Select WebLogic Plug-in Enabled. : Y
  • Step 3 : Environment -> Servers -> PIA -> Protocols  -> HTTP
                Remote Address Override: X-Forwarded-For

    Step 4: Activate Changes and Restart the PIA (WebLogic Server).

    After this you will see the real client ip address. This still does not show correct C-DNS as this is not correctly resolved by GetRemoteHost call.

    Also this does not fix PSACCESSLOG client IP address field which still captures Front end server IP address.

    The following Oracle Resolution may be helpful.

    E-WL: How to Capture the Clients IP Address using a Front-End Proxy with WebLogic Web Server [ID 662708.1]

    How To Get The Actual Client IP when There Is Load Balancer between client and Apache ID 1531012.1]

Popup Blocker Settings

Please review the Popup blocker settings for major browsers

Internet Explorer Popup Blocker Settings

http://windows.microsoft.com/en-us/windows-vista/internet-explorer-pop-up-blocker-frequently-asked-questions

FireFox Popup Blocker Settings

http://support.mozilla.org/en-US/kb/pop-blocker-settings-exceptions-troubleshooting

Google Chrome Popup Blocker Settings

http://support.google.com/chrome/bin/answer.py?hl=en&answer=95472

Safari

http://support.apple.com/kb/PH11946

Query to determine which records user can see

SELECT DISTINCT B.TREE_NODE, Z.RECDESCR
FROM PSTREEDEFN A,
PSTREENODE B,
PS_SCRTY_ACC_GRP C,
PSTREENODE E,
PSROLECLASS X,
PSROLEUSER Y,
PSRECDEFN Z
WHERE A.SETID = ' '
AND A.TREE_STRCT_ID = 'ACCESS_GROUP'
AND A.EFF_STATUS = 'A'
AND A.EFFDT =
(SELECT MAX (D.EFFDT)
FROM PSTREEDEFN D
WHERE D.SETID = ' '
AND D.TREE_NAME = A.TREE_NAME
AND D.EFFDT <=
TO_DATE (TO_CHAR (SYSDATE, 'YYYY-MM-DD'),
'YYYY-MM-DD'
))
AND Y.ROLEUSER = :1
AND Y.ROLENAME = X.ROLENAME
AND X.CLASSID = C.CLASSID
AND C.TREE_NAME = A.TREE_NAME
AND C.ACCESSIBLE = 'Y'
AND B.SETID = ' '
AND B.TREE_NAME = E.TREE_NAME
AND B.EFFDT = E.EFFDT
AND B.TREE_NODE_TYPE = 'R'
AND B.TREE_NODE = Z.RECNAME
AND Z.RECTYPE IN (0, 1, 6)
AND E.SETID = ' '
AND E.TREE_NAME = A.TREE_NAME
AND E.EFFDT = A.EFFDT
AND E.TREE_NODE_TYPE = 'G'
AND B.TREE_NODE_NUM BETWEEN E.TREE_NODE_NUM AND E.TREE_NODE_NUM_END
AND C.ACCESS_GROUP = E.TREE_NODE
AND ( (NOT EXISTS
(SELECT 'X'
FROM PS_SCRTY_ACC_GRP F
WHERE F.CLASSID = X.CLASSID
AND F.TREE_NAME = A.TREE_NAME
AND F.ACCESSIBLE = 'N'))
OR (E.TREE_NODE_NUM =
(SELECT MAX (G.TREE_NODE_NUM)
FROM PSTREENODE G, PS_SCRTY_ACC_GRP H
WHERE G.SETID = ' '
AND G.TREE_NAME = A.TREE_NAME
AND G.EFFDT = A.EFFDT
AND G.TREE_NODE_TYPE = 'G'
AND B.TREE_NODE_NUM BETWEEN G.TREE_NODE_NUM
AND G.TREE_NODE_NUM_END
AND H.CLASSID = X.CLASSID
AND H.TREE_NAME = A.TREE_NAME
AND H.ACCESS_GROUP = G.TREE_NODE)))

Query 'XXX' has Tree Prompt Option criteria defined. (241,93). Queries with Tree Prompt Option criteria cannot be used in Connected Query, XML Publisher, Query Access Services and some other Applications.

The issue was due to the fact that a new record was added to an existing query and this record was not added to query tree access group assigned to user running this query.

Once the record was added to the appropriate query tree access group, issue is resolved.

This issue was noted in PT 8.50.22. In reality, the following message should be given.

The record (XXX) used by query is not available to the access group assigned to user. Hopefully they may fix this in future release.

This issue can also happen when you modify the query using a userid that has access to query record, but the user running it does not have access to it.

Query to determine all the records available to a userid.

Query to determine which records user can see