Re: [WiX-users] how can I set InstallCondition based on whether my bundle is 32 or 64 bit?
Thanks Jacob, Here is what I now have, in case it is helpful to someone else. I wasn’t able to find an UpgradeCode, so I’m using the ProductCode. It seems to work fine with x86 as best as I can understand the logs (haven’t verified 64-bit yet): In the Bundle element: ?if $(var.Platform) = x86 ? util:ProductSearch Variable=VCInstalledx86 ProductCode={13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}/ ?else? util:ProductSearch Variable=VCInstalledx64 ProductCode={929FBD26-9020-399B-9A7A-751D61F0B942}/ ?endif? Chain ?if $(var.Platform) = x86 ? ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x86.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=VCInstalledx86 = v0.0.0.0/ ?else? ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x64.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=VCInstalledx64 = v0.0.0.0 / ?endif? Thanks for your help! David On Jul 2, 2015, at 3:59 PM, Hoover, Jacob jacob.hoo...@greenheck.com wrote: 1. Strange, though on a version I would compare it to a very.x.y.z 2. My way is the old way, and will fail if the product has been patched. Upgrade code should be more reliable. 3. Poke around from http://blogs.msdn.com/b/astebner/archive/2007/01/16/mailbag-how-to-detect-the-presence-of-the-vc-8-0-runtime-redistributable-package.aspx?Redirected=true I know it's the wrong version but he should have a post for the version you want. 4. Possible, but it would imply downloading the exe every time. You're also relying on their detection, which should be solid but it is wasted do/execution time. Sent from my phone On Jul 2, 2015, at 1:11 PM, David Burson david_bur...@ntm.orgmailto:david_bur...@ntm.org wrote: oops - 3. “this site” is https://allthingsconfigmgr.wordpress.com/2013/12/17/visual-c-redistributables-made-simple/ 4. “this post” is http://stackoverflow.com/questions/23832713/how-to-check-that-visual-c-2013-redistributable-is-already-installed-using-wix On Jul 2, 2015, at 1:46 PM, David Burson david_bur...@ntm.orgmailto:david_bur...@ntm.orgmailto:david_bur...@ntm.org wrote: Thanks Jacob, Btw, I’m using WiX 3.9 R2, hoping to go to 3.10 when it is stable. Your solution appears to work, but I have 4 questions about it: 1. The log is strange when I upgrade. I installed version 1.1.4 of my app, then built version 1.1.5, and installed it. In the log for the upgrade, the pertinent lines (I think) are, after detect begin: Setting version variable 'VCInstalledx86 ' to value ’12.0.21005.0' and a few lines down: Plan begin, 3 packages, action: Install Condition 'NOT VCInstalledx86' evaluates to true. I would have expected it to evaluate to false - so I’m not sure what’s going on? 2. In ProductSearch, I’m using the ProductCode attribute. However, I notice in the WiX Toolset documentationhttp://wixtoolset.org/documentation/manual/v3/xsd/wix/productsearch.html, there is no ProductCode attribute for ProductSearch. There is a required UpgradeCode. Yet your solution works, so I assume the documentation is wrong? If so, should that be reported to someone? 3. I’m not clear what ProductCodes to use. I’m using the 2013 versions. I found this site, which for 2013 lists 2 guids for x64 and 2 for x86. How can there be 2 product codes each? What do I really need to check? 4. According to a comment on this post, it sounds like I don’t need to check at all - just run the appropriate vcredist, and it will do its own checking to see if it’s already there. Is that true? Also, in case it is useful to others, a few things I did to get this solution to build: 1. add attribute xmlns:util=http://schemas.microsoft.com/wix/UtilExtension” to the WiX element 2. delete the spaces in ? else ? 3. create an identical if..else at the same level as Chain for the ProductSearch’s, to get around this error: error CNDL0203 : The Chain element contains an unsupported extension element 'util:ProductSearch'. The Chain element does not currently support extension elements. Is the util:ProductSearch element using the correct XML Namespace? So in my Bundle element I have: ?if $(var.Platform) = x86 ? util:ProductSearch Variable=VCInstalledx86 ProductCode={13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}/ ?else? util:ProductSearch Variable=VCInstalledx64 ProductCode={929FBD26-9020-399B-9A7A-751D61F0B942}/ ?endif? Chain ?if $(var.Platform) = x86 ? ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x86.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart
Re: [WiX-users] how can I set InstallCondition based on whether my bundle is 32 or 64 bit?
Thanks Jacob, Btw, I’m using WiX 3.9 R2, hoping to go to 3.10 when it is stable. Your solution appears to work, but I have 4 questions about it: 1. The log is strange when I upgrade. I installed version 1.1.4 of my app, then built version 1.1.5, and installed it. In the log for the upgrade, the pertinent lines (I think) are, after detect begin: Setting version variable 'VCInstalledx86 ' to value ’12.0.21005.0' and a few lines down: Plan begin, 3 packages, action: Install Condition 'NOT VCInstalledx86' evaluates to true. I would have expected it to evaluate to false - so I’m not sure what’s going on? 2. In ProductSearch, I’m using the ProductCode attribute. However, I notice in the WiX Toolset documentationhttp://wixtoolset.org/documentation/manual/v3/xsd/wix/productsearch.html, there is no ProductCode attribute for ProductSearch. There is a required UpgradeCode. Yet your solution works, so I assume the documentation is wrong? If so, should that be reported to someone? 3. I’m not clear what ProductCodes to use. I’m using the 2013 versions. I found this site, which for 2013 lists 2 guids for x64 and 2 for x86. How can there be 2 product codes each? What do I really need to check? 4. According to a comment on this post, it sounds like I don’t need to check at all - just run the appropriate vcredist, and it will do its own checking to see if it’s already there. Is that true? Also, in case it is useful to others, a few things I did to get this solution to build: 1. add attribute xmlns:util=http://schemas.microsoft.com/wix/UtilExtension” to the WiX element 2. delete the spaces in ? else ? 3. create an identical if..else at the same level as Chain for the ProductSearch’s, to get around this error: error CNDL0203 : The Chain element contains an unsupported extension element 'util:ProductSearch'. The Chain element does not currently support extension elements. Is the util:ProductSearch element using the correct XML Namespace? So in my Bundle element I have: ?if $(var.Platform) = x86 ? util:ProductSearch Variable=VCInstalledx86 ProductCode={13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}/ ?else? util:ProductSearch Variable=VCInstalledx64 ProductCode={929FBD26-9020-399B-9A7A-751D61F0B942}/ ?endif? Chain ?if $(var.Platform) = x86 ? ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x86.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VCInstalledx86/ ?else? ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x64.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VCInstalledx64 / ?endif? Thanks, David On Jul 1, 2015, at 5:49 PM, Hoover, Jacob jacob.hoo...@greenheck.commailto:jacob.hoo...@greenheck.com wrote: You could use a preprocessor condition. IE: ?if $(var.Bitness) = x86 ? util:ProductSearch Variable=VCInstalled ProductCode={}/ ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x86.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VCInstalled/ ? else ? util:ProductSearch Variable=VCInstalled ProductCode={}/ ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x64.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VCInstalled / ?endif? -Original Message- From: David Burson [mailto:david_bur...@ntm.org] Sent: Wednesday, July 01, 2015 2:37 PM To: General discussion about the WiX toolset. Subject: [WiX-users] how can I set InstallCondition based on whether my bundle is 32 or 64 bit? Hi, I have a single bundle.wxs I use when I’m creating either a 64-bit and a 32-bit installer for my app. In my Chain, I have: ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x64.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=VersionNT64/ ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x86.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VersionNT64/ So, the InstallCondition is checking the hardware my users are installing on to see which vcredist to install. Instead, I want the InstallCondition to decide which vcredist to install based on whether the installer is build as 32 or 64 bit. That way my users can install the 32-bit version of my app on a 64-bit OS if they want. I have a variable I pass in to the bundle that is set to either “x86” or “x64”. But I can’t figure out the syntax for how to use that variable in the InstallCondition for the vcredist’s, or how to create a boolean variable (e.g., Bundle_is_x64) that I can set based on the value of the string variable I pass in. Can someone point me in the right direction? Or maybe there’s a better way than using my own variable? Thanks David
Re: [WiX-users] how can I set InstallCondition based on whether my bundle is 32 or 64 bit?
oops - 3. “this site” is https://allthingsconfigmgr.wordpress.com/2013/12/17/visual-c-redistributables-made-simple/ 4. “this post” is http://stackoverflow.com/questions/23832713/how-to-check-that-visual-c-2013-redistributable-is-already-installed-using-wix On Jul 2, 2015, at 1:46 PM, David Burson david_bur...@ntm.orgmailto:david_bur...@ntm.org wrote: Thanks Jacob, Btw, I’m using WiX 3.9 R2, hoping to go to 3.10 when it is stable. Your solution appears to work, but I have 4 questions about it: 1. The log is strange when I upgrade. I installed version 1.1.4 of my app, then built version 1.1.5, and installed it. In the log for the upgrade, the pertinent lines (I think) are, after detect begin: Setting version variable 'VCInstalledx86 ' to value ’12.0.21005.0' and a few lines down: Plan begin, 3 packages, action: Install Condition 'NOT VCInstalledx86' evaluates to true. I would have expected it to evaluate to false - so I’m not sure what’s going on? 2. In ProductSearch, I’m using the ProductCode attribute. However, I notice in the WiX Toolset documentationhttp://wixtoolset.org/documentation/manual/v3/xsd/wix/productsearch.html, there is no ProductCode attribute for ProductSearch. There is a required UpgradeCode. Yet your solution works, so I assume the documentation is wrong? If so, should that be reported to someone? 3. I’m not clear what ProductCodes to use. I’m using the 2013 versions. I found this site, which for 2013 lists 2 guids for x64 and 2 for x86. How can there be 2 product codes each? What do I really need to check? 4. According to a comment on this post, it sounds like I don’t need to check at all - just run the appropriate vcredist, and it will do its own checking to see if it’s already there. Is that true? Also, in case it is useful to others, a few things I did to get this solution to build: 1. add attribute xmlns:util=http://schemas.microsoft.com/wix/UtilExtension” to the WiX element 2. delete the spaces in ? else ? 3. create an identical if..else at the same level as Chain for the ProductSearch’s, to get around this error: error CNDL0203 : The Chain element contains an unsupported extension element 'util:ProductSearch'. The Chain element does not currently support extension elements. Is the util:ProductSearch element using the correct XML Namespace? So in my Bundle element I have: ?if $(var.Platform) = x86 ? util:ProductSearch Variable=VCInstalledx86 ProductCode={13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}/ ?else? util:ProductSearch Variable=VCInstalledx64 ProductCode={929FBD26-9020-399B-9A7A-751D61F0B942}/ ?endif? Chain ?if $(var.Platform) = x86 ? ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x86.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VCInstalledx86/ ?else? ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x64.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VCInstalledx64 / ?endif? Thanks, David On Jul 1, 2015, at 5:49 PM, Hoover, Jacob jacob.hoo...@greenheck.commailto:jacob.hoo...@greenheck.commailto:jacob.hoo...@greenheck.com wrote: You could use a preprocessor condition. IE: ?if $(var.Bitness) = x86 ? util:ProductSearch Variable=VCInstalled ProductCode={}/ ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x86.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VCInstalled/ ? else ? util:ProductSearch Variable=VCInstalled ProductCode={}/ ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x64.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VCInstalled / ?endif? -Original Message- From: David Burson [mailto:david_bur...@ntm.org] Sent: Wednesday, July 01, 2015 2:37 PM To: General discussion about the WiX toolset. Subject: [WiX-users] how can I set InstallCondition based on whether my bundle is 32 or 64 bit? Hi, I have a single bundle.wxs I use when I’m creating either a 64-bit and a 32-bit installer for my app. In my Chain, I have: ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x64.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=VersionNT64/ ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x86.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VersionNT64/ So, the InstallCondition is checking the hardware my users are installing on to see which vcredist to install. Instead, I want the InstallCondition to decide which vcredist to install based on whether the installer is build as 32 or 64 bit. That way my users can install the 32-bit version of my app on a 64-bit OS if they want. I have a variable I pass in to the bundle that is set to either “x86”
Re: [WiX-users] how can I set InstallCondition based on whether my bundle is 32 or 64 bit?
1. Strange, though on a version I would compare it to a very.x.y.z 2. My way is the old way, and will fail if the product has been patched. Upgrade code should be more reliable. 3. Poke around from http://blogs.msdn.com/b/astebner/archive/2007/01/16/mailbag-how-to-detect-the-presence-of-the-vc-8-0-runtime-redistributable-package.aspx?Redirected=true I know it's the wrong version but he should have a post for the version you want. 4. Possible, but it would imply downloading the exe every time. You're also relying on their detection, which should be solid but it is wasted do/execution time. Sent from my phone On Jul 2, 2015, at 1:11 PM, David Burson david_bur...@ntm.orgmailto:david_bur...@ntm.org wrote: oops - 3. “this site” is https://allthingsconfigmgr.wordpress.com/2013/12/17/visual-c-redistributables-made-simple/ 4. “this post” is http://stackoverflow.com/questions/23832713/how-to-check-that-visual-c-2013-redistributable-is-already-installed-using-wix On Jul 2, 2015, at 1:46 PM, David Burson david_bur...@ntm.orgmailto:david_bur...@ntm.orgmailto:david_bur...@ntm.org wrote: Thanks Jacob, Btw, I’m using WiX 3.9 R2, hoping to go to 3.10 when it is stable. Your solution appears to work, but I have 4 questions about it: 1. The log is strange when I upgrade. I installed version 1.1.4 of my app, then built version 1.1.5, and installed it. In the log for the upgrade, the pertinent lines (I think) are, after detect begin: Setting version variable 'VCInstalledx86 ' to value ’12.0.21005.0' and a few lines down: Plan begin, 3 packages, action: Install Condition 'NOT VCInstalledx86' evaluates to true. I would have expected it to evaluate to false - so I’m not sure what’s going on? 2. In ProductSearch, I’m using the ProductCode attribute. However, I notice in the WiX Toolset documentationhttp://wixtoolset.org/documentation/manual/v3/xsd/wix/productsearch.html, there is no ProductCode attribute for ProductSearch. There is a required UpgradeCode. Yet your solution works, so I assume the documentation is wrong? If so, should that be reported to someone? 3. I’m not clear what ProductCodes to use. I’m using the 2013 versions. I found this site, which for 2013 lists 2 guids for x64 and 2 for x86. How can there be 2 product codes each? What do I really need to check? 4. According to a comment on this post, it sounds like I don’t need to check at all - just run the appropriate vcredist, and it will do its own checking to see if it’s already there. Is that true? Also, in case it is useful to others, a few things I did to get this solution to build: 1. add attribute xmlns:util=http://schemas.microsoft.com/wix/UtilExtension” to the WiX element 2. delete the spaces in ? else ? 3. create an identical if..else at the same level as Chain for the ProductSearch’s, to get around this error: error CNDL0203 : The Chain element contains an unsupported extension element 'util:ProductSearch'. The Chain element does not currently support extension elements. Is the util:ProductSearch element using the correct XML Namespace? So in my Bundle element I have: ?if $(var.Platform) = x86 ? util:ProductSearch Variable=VCInstalledx86 ProductCode={13A4EE12-23EA-3371-91EE-EFB36DDFFF3E}/ ?else? util:ProductSearch Variable=VCInstalledx64 ProductCode={929FBD26-9020-399B-9A7A-751D61F0B942}/ ?endif? Chain ?if $(var.Platform) = x86 ? ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x86.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VCInstalledx86/ ?else? ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x64.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VCInstalledx64 / ?endif? Thanks, David On Jul 1, 2015, at 5:49 PM, Hoover, Jacob jacob.hoo...@greenheck.commailto:jacob.hoo...@greenheck.commailto:jacob.hoo...@greenheck.commailto:jacob.hoo...@greenheck.com wrote: You could use a preprocessor condition. IE: ?if $(var.Bitness) = x86 ? util:ProductSearch Variable=VCInstalled ProductCode={}/ ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x86.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VCInstalled/ ? else ? util:ProductSearch Variable=VCInstalled ProductCode={}/ ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x64.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VCInstalled / ?endif? -Original Message- From: David Burson [mailto:david_bur...@ntm.org] Sent: Wednesday, July 01, 2015 2:37 PM To: General discussion about the WiX toolset. Subject: [WiX-users] how can I set InstallCondition based on whether my bundle is 32 or 64 bit? Hi, I have a single bundle.wxs I use when I’m creating either a 64-bit and a 32-bit installer for my app. In my Chain, I have:
[WiX-users] how can I set InstallCondition based on whether my bundle is 32 or 64 bit?
Hi, I have a single bundle.wxs I use when I’m creating either a 64-bit and a 32-bit installer for my app. In my Chain, I have: ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x64.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=VersionNT64/ ExePackage SourceFile=$(var.KarteDir)\install\win\vcredist_x86.exe PerMachine=yes Permanent=yes Vital=yes Compressed=yes InstallCommand=/quiet /norestart InstallCondition=NOT VersionNT64/ So, the InstallCondition is checking the hardware my users are installing on to see which vcredist to install. Instead, I want the InstallCondition to decide which vcredist to install based on whether the installer is build as 32 or 64 bit. That way my users can install the 32-bit version of my app on a 64-bit OS if they want. I have a variable I pass in to the bundle that is set to either “x86” or “x64”. But I can’t figure out the syntax for how to use that variable in the InstallCondition for the vcredist’s, or how to create a boolean variable (e.g., Bundle_is_x64) that I can set based on the value of the string variable I pass in. Can someone point me in the right direction? Or maybe there’s a better way than using my own variable? Thanks David -- Don't Limit Your Business. Reach for the Cloud. GigeNET's Cloud Solutions provide you with the tools and support that you need to offload your IT needs and focus on growing your business. Configured For All Businesses. Start Your Cloud Today. https://www.gigenetcloud.com/ ___ WiX-users mailing list WiX-users@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/wix-users