Advertisement

02.20.2008 at 12:12PM PST, ID: 23178987
[x]
Attachment Details
[x]
The Solution Rating System

With so many solutions, how can you tell which solutions are most likely to help you and which ones are not? To provide you with a tool to use, we rate our solutions based on various elements that most accurately determine if a solution is a quality solution. To explain what factors affect the solution rating, here are the elements we take into consideration when formulating our solution rating.

  • The Grade of the Solution
  • The Zone Rank of the Expert Providing the Solution
  • The Number of Author and Expert Comments
  • The Number of Experts Contributing
  • The Feedback of the Community

Your Input Matters
Because of the way the system is set up, the most important variable in this equation is you. As a member of Experts Exchange, you are able to cast your vote on the quality of the solutions in regard to how complete, accurate, helpful and easy to understand each solution is. When you provide your feedback, each rating is adjusted accordingly. So, if you see a solution that has a poor rating that you think is a good solution, let us know by rating it. As you do, the rating will be adjusted and will become more accurate for other members of our site.

If you have any suggestions that you would like to make for our rating system, please ask a question in the Suggestions Zone of Community Support.

Thank you!

MSI Launch Condition Logic Error?

Tags: Microsoft, MSI Install (Visual Studio 2005), 2005, C#, N/A
I am creating an msi install. The app I am creating the install for can work with a related app that is updated quarterly, if that one is installed.

My issue is that the related app either must not be installed, or if it is, it must be on the first quarter it must be patched before my app is installed.

I have created the following launch condition:

(QUARTER="1" and YEAR="2008")=(PATCHVERSION="1.1.0")

with an associated InstallURL (to get the patch) and Message.

QUARTER and YEAR are registry searches of the related app to see what year and quarter it is on. PATCHVERSION is a registry search for the version of the patch.

The problem is that even when I know the conditions are true the install still evaluates to false. In addition it is not displaying the message, but just going directly to the "install was interrupted" dialog.

I parsed each piece in the condition individually to be sure that they are evaluating as I expect -- they are.

(QUARTER="1" and YEAR="2008") evaluates to true.

(PATCHVERSION="1.1.0") evaluates to true

But (QUARTER="1" and YEAR="2008")=(PATCHVERSION="1.1.0") evaluates to false and skips the message.

Is this an error in my syntax, my logic, or is there some msi issue I am not aware of?

Thanks.
Start your free trial to view this solution
Question Stats
Zone: Programming
Question Asked By: sil8
Solution Provided By: vadimrapp1
Participating Experts: 1
Solution Grade: A
Views: 96
Translate:
Loading Advertisement...
02.21.2008 at 05:44PM PST, ID: 20953920

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
02.21.2008 at 06:44PM PST, ID: 20954154

Rank: Guru

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
02.22.2008 at 06:34AM PST, ID: 20957602

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
02.22.2008 at 08:22AM PST, ID: 20958837

Rank: Guru

All comments and solutions are available to Premium Service Members only.

Start your 7-day free trial and see for yourself why Experts Exchange is the easiest and most proven technology resource in the world. Get Started

Already a member? Login to view this solution.

 
 
Loading Advertisement...
Microsoft
  • Internet Protocols
  • Applications
  • Development
  • OS
  • Hardware
  • Windows Security
Apple
  • Operating Systems
  • Hardware
  • Programming
  • Networking
  • Software
Internet
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Spy / Ad Blockers
  • Web Browsers
  • New Net Users
  • Web Development
  • Chat / IM
  • Anti Spam
  • Web Servers
  • Anti-Virus
  • Email Clients
Gamers
  • Tips
  • Online / MMORPG
  • Puzzle
  • Emulators
  • Action / Adventure
  • Role Playing
  • Consoles
  • Game Programming
  • Strategy
  • Sports
  • Misc
  • Computer Games
Digital Living
  • Hardware
  • Automotive
  • New Net Users
  • New Users
  • Software
  • Digital Music
  • Gaming World
  • Home Security
  • Apple
  • Networking Hardware
Virus & Spyware
  • Vulnerabilities
  • IDS
  • Encryption
  • Anti-Virus
  • Operating Systems Security
  • Software Firewalls
  • WebApplications
  • Cell Phones
  • Operating Systems
  • Internet
  • Hardware Firewalls
Hardware
  • Displays / Monitors
  • Handhelds / PDAs
  • Components
  • Peripherals
  • Laptops/Notebooks
  • Servers
  • Misc
  • Apple
  • Embedded Hardware
  • Networking Hardware
  • Storage
  • Desktops
  • New Users
Software
  • System Utilities
  • Industry Specific
  • Network Management
  • Photos / Graphics
  • Page Layout
  • VMware
  • Misc
  • Web Development
  • OS
  • CYGWIN
  • Voice Recognition
  • Virtualization
  • Message Queue
  • Quality Assurance
  • Security
  • Firewalls
  • MultiMedia Applications
  • Development
  • Database
  • Office / Productivity
  • Business Management
  • OS/2 Apps
  • Server Software
  • Internet / Email
ITPro
  • OS
  • Storage
  • Encryption
  • Operating Systems Security
  • Apple Hardware
  • Laptops & Notebooks
  • Servers
  • Networking Hardware
  • Peripherals
  • Devices
  • Displays / Monitors
  • WebTrends / Stats
  • Search Engines
  • Firewalls
  • Web Computing
  • WebApplications
  • IDS
  • Vulnerabilities
  • Email Clients
  • File Sharing
  • Spy / Ad Blockers
  • Web Browsers
  • Web Servers
  • Networking
  • Anti-Virus
  • Consulting
  • Chat / IM
  • Anti Spam
Developer
  • Web Servers
  • Web Browsers
  • Game Programming
  • Dev Tools
  • Industry Specific
  • Office / Productivity
  • Database
  • CYGWIN
  • Web Development
  • Search Engines
  • File Sharing
  • WebTrends / Stats
  • Programming
  • Content Management
  • Application Servers
  • Protocols
Storage
  • Removable Backup Media
  • Storage Technology
  • Servers
  • Grid
  • Remote Access
  • Backup / Restore
  • Misc
  • Hard Drives
OS
  • Miscellaneous
  • Security
  • Development
  • Linux
  • VMware
  • MainFrame OS
  • Unix
  • Apple
  • OS / 2
  • AS / 400
  • BeOS
  • Microsoft
  • VMS / OpenVMS
Database
  • Oracle
  • Miscellaneous
  • MySQL
  • Software
  • Sybase
  • Contact Management
  • PostgreSQL
  • Data Manipulation
  • Clarion
  • InterSystems Cache
  • Siebel
  • MUMPS
  • OLAP
  • SQLBase
  • SAS
  • GIS & GPS
  • 4GL
  • Berkeley DB
  • DB2
  • Informix
  • Interbase / Firebird
  • FoxPro
  • Reporting
  • LDAP
  • Filemaker Pro
  • MS SQL Server
  • dBase
  • MS Access
Security
  • Misc
  • Web Browsers
  • Software Firewalls
  • Operating Systems Security
  • File Sharing
  • Spy / Ad Blockers
  • Vulnerabilities
  • WebApplications
  • IDS
  • Anti-Virus
  • Encryption
  • Anti Spam
  • Email Clients
  • VPN
  • Chat / IM
Programming
  • Editors IDEs
  • Installation
  • Handhelds / PDAs
  • Multimedia Programming
  • System / Kernel
  • Automation
  • Algorithms
  • Game
  • Signal Processing
  • Project Management
  • Open Source
  • Database
  • Misc
  • Languages
  • Processor Platforms
  • Theory
Web Development
  • Scripting
  • Blogs
  • Web Servers
  • Software
  • Search Engines
  • Web Graphics
  • Web Services
  • Images
  • Internet Marketing
  • Images and Photos
  • Components
  • Document Imaging
  • Web Languages/Standards
  • Illustration
  • WebApplications
  • Fonts
  • WebTrends / Stats
  • Authoring
  • Digital Camera Software
  • Miscellaneous
Networking
  • Protocols
  • Apple Networking
  • Network Management
  • Message Queue
  • Application Servers
  • Content Management
  • File Servers
  • Email Servers
  • Misc
  • Java Editors & IDEs
  • Wireless
  • Networking Hardware
  • Backup / Restore
  • System Utilities
  • ISPs & Hosting
  • Web Servers
  • Storage Technology
  • Removable Backup Media
  • Servers
  • Web Computing
  • Broadband
  • Grid
  • OS / 2
  • Novell Netware
  • Unix Networking
  • Windows Networking
  • Security
  • Telecommunications
  • Operating Systems
  • Linux Networking
Other
  • Lounge
  • Business Travel
  • Community Support
  • New Net Users
  • Philosophy / Religion
  • Math / Science
  • Miscellaneous
  • URLs
  • Expert Lounge
  • Politics
  • Puzzles / Riddles
  • Automotive
Community Support
  • Suggestions
  • New to EE
  • New Topics
  • CleanUp
  • Announcements
  • General
  • Feedback
  • Input
  • EE Bugs
 
02.21.2008 at 05:44PM PST, ID: 20953920
sil8,
We have sent a message to some of our more experienced Experts asking them to review your question, and will check back again to see if you are getting the help you need.

Please do not respond to this comment or post another request; we are monitoring the notifications from your question for activity from the Experts.

Thank you for using Experts Exchange,

ForestDenizen
Community Support Moderator
http://www.experts-exchange.com/Q_23180450.html
 
02.21.2008 at 06:44PM PST, ID: 20954154

Rank: Guru

I don't understand why equal sign between parenthesis. And I don't understand the sentence "it must be on the first quarter it must be patched before my app is installed".

Please clarify, what exactly is the condition that must be met in order to proceed with the install.
 
02.22.2008 at 06:34AM PST, ID: 20957602
Thanks for the reply.

The equal sign between the parentheses allows the condition to be true if the related application is not installed at all, or if it is installed and properly patched. Otherwise, if the related app is installed but not patched the condition is false and the install will not proceed.

For example, if the related app is not installed then (QUARTER="1" and YEAR="2008") will be false and (PATCHVERSION="1.1.0") will also be false. The equal sign then makes the condition (False = False) so the overall condition should be true and it should allow the install, which is correct.

If they have the related app installed and it is properly patched then (QUARTER="1" and YEAR="2008") is true and (PATCHVERSION="1.1.0") will also be true. The equal sign makes the condition (true = true) so again the overall condition is true and the install should proceed, which is correct.

If they have the related app installed but it is not patched then we get (true = false) = false so they should be given my message telling them to get the patch and install it.

Sorry about that second paragraph. I left out an "and". It should have read:

My issue is that the related app either must not be installed, or if it is, it must be on the first quarter and it must be patched before my app is installed.

Thanks for looking at this.

 
02.22.2008 at 08:22AM PST, ID: 20958837

Rank: Guru

You assume that

(QUARTER="1" and YEAR="2008")

would evaluate to True (as well as another parenthesis), which then would be compared with second parenthesis. No, the way expressions are parsed is not that smart.

According to http://msdn2.microsoft.com/en-us/library/aa368012.aspx , "Operators and precedence are the same as in the BASIC and SQL languages" - that's the only formal specification of the operators precedence I found. I don't have BASIC, but in sql the following code does produce an error - because there are no boolean type variable in that language. Probably the same is true for the language of Installer.

==========================
DECLARE @V1 INT, @V2 INT
SET @V1=1
SET @V2=2
IF (@V1=1) = (@V2=2) PRINT 'OK'

Server: Msg 170, Level 15, State 1, Line 4
Line 4: Incorrect syntax near '='.
==========================

Here's how I would modify the condition:

(QUARTER="1" AND YEAR="2008" AND PATCHVERSION="1.1.0")
OR (NOT PATCHVERSION AND NOT QUARTER AND NOT YEAR)

Accepted Solution
 
 
02.22.2008 at 04:34PM PST, ID: 20962961
That was it. It was my inaccurate syntax. Your syntax did the job.
Thanks!
 
 
 
20080236-EE-VQP-29 / EE_QW_2_20070628