| 1 | // Copyright (c) .NET Foundation and contributors. All rights reserved. Licensed under the Microsoft Reciprocal License. See LICENSE.TXT file in the project root for full license information. |
| 2 | |
| 3 | FixHelpLinks(); |
| 4 | |
| 5 | function GetHelpCode(apiName) |
| 6 | { |
| 7 | switch (apiName.toLowerCase()) |
| 8 | { |
| 9 | case "msiadvertiseproduct": return 370056; |
| 10 | case "msiadvertiseproductex": return 370057; |
| 11 | case "msiapplymultiplepatches": return 370059; |
| 12 | case "msiapplypatch": return 370060; |
| 13 | case "msibegintransaction": return 736312; |
| 14 | case "msiclosehandle": return 370067; |
| 15 | case "msicollectuserinfo": return 370068; |
| 16 | case "msiconfigurefeature": return 370069; |
| 17 | case "msiconfigureproduct": return 370070; |
| 18 | case "msiconfigureproductex": return 370071; |
| 19 | case "msicreaterecord": return 370072; |
| 20 | case "msicreatetransformsummaryinfo": return 370073; |
| 21 | case "msidatabaseapplytransform": return 370074; |
| 22 | case "msidatabasecommit": return 370075; |
| 23 | case "msidatabaseexport": return 370076; |
| 24 | case "msidatabasegeneratetransform": return 370077; |
| 25 | case "msidatabasegetprimarykeys": return 370078; |
| 26 | case "msidatabaseimport": return 370079; |
| 27 | case "msidatabaseistablepersistent": return 370080; |
| 28 | case "msidatabasemerge": return 370081; |
| 29 | case "msidatabaseopenview": return 370082; |
| 30 | case "msidetermineapplicablepatches": return 370084; |
| 31 | case "msideterminepatchsequence": return 370085; |
| 32 | case "msidoaction": return 370090; |
| 33 | case "msienablelog": return 370091; |
| 34 | case "msiendtransaction": return 736318; |
| 35 | case "msienumclients": return 370094; |
| 36 | case "msienumcomponentcosts": return 370095; |
| 37 | case "msienumcomponentqualifiers": return 370096; |
| 38 | case "msienumcomponents": return 370097; |
| 39 | case "msienumfeatures": return 370098; |
| 40 | case "msienumpatches": return 370099; |
| 41 | case "msienumpatchesex": return 370100; |
| 42 | case "msienumproducts": return 370101; |
| 43 | case "msienumproductsex": return 370102; |
| 44 | case "msienumrelatedproducts": return 370103; |
| 45 | case "msievaluatecondition": return 370104; |
| 46 | case "msiextractpatchxmldata": return 370105; |
| 47 | case "msiformatrecord": return 370109; |
| 48 | case "msigetactivedatabase": return 370110; |
| 49 | case "msigetcomponentpath": return 370112; |
| 50 | case "msigetcomponentstate": return 370113; |
| 51 | case "msigetdatabasestate": return 370114; |
| 52 | case "msigetfeaturecost": return 370115; |
| 53 | case "msigetfeatureinfo": return 370116; |
| 54 | case "msigetfeaturestate": return 370117; |
| 55 | case "msigetfeatureusage": return 370118; |
| 56 | case "msigetfeaturevalidstates": return 370119; |
| 57 | case "msigetfilehash": return 370120; |
| 58 | case "msigetfileversion": return 370122; |
| 59 | case "msigetlanguage": return 370123; |
| 60 | case "msigetlasterrorrecord": return 370124; |
| 61 | case "msigetmode": return 370125; |
| 62 | case "msigetpatchfilelist": return 370126; |
| 63 | case "msigetpatchinfo": return 370127; |
| 64 | case "msigetpatchinfoex": return 370128; |
| 65 | case "msigetproductcode": return 370129; |
| 66 | case "msigetproductinfo": return 370130; |
| 67 | case "msigetproductinfoex": return 370131; |
| 68 | case "msigetproductinfofromscript": return 370132; |
| 69 | case "msigetproductproperty": return 370133; |
| 70 | case "msigetproperty": return 370134; |
| 71 | case "msigetshortcuttarget": return 370299; |
| 72 | case "msigetsourcepath": return 370300; |
| 73 | case "msigetsummaryinformation": return 370301; |
| 74 | case "msigettargetpath": return 370303; |
| 75 | case "msiinstallmissingcomponent": return 370311; |
| 76 | case "msiinstallmissingfile": return 370313; |
| 77 | case "msiinstallproduct": return 370315; |
| 78 | case "msijointransaction": return 736319; |
| 79 | case "msilocatecomponent": return 370320; |
| 80 | case "msinotifysidchange": return 370328; |
| 81 | case "msiopendatabase": return 370338; |
| 82 | case "msiopenpackage": return 370339; |
| 83 | case "msiopenpackageex": return 370340; |
| 84 | case "msiopenproduct": return 370341; |
| 85 | case "msiprocessadvertisescript": return 370353; |
| 86 | case "msiprocessmessage": return 370354; |
| 87 | case "msiprovideassembly": return 370355; |
| 88 | case "msiprovidecomponent": return 370356; |
| 89 | case "msiprovidequalifiedcomponent": return 370357; |
| 90 | case "msiprovidequalifiedcomponentex":return 370358; |
| 91 | case "msiquerycomponnetstate": return 370360; |
| 92 | case "msiqueryfeaturestate": return 370361; |
| 93 | case "msiqueryfeaturestateex": return 370362; |
| 94 | case "msiqueryproductstate": return 370363; |
| 95 | case "msirecordcleardata": return 370364; |
| 96 | case "msirecorddatasize": return 370365; |
| 97 | case "msirecordgetfieldcount": return 370366; |
| 98 | case "msirecordgetinteger": return 370367; |
| 99 | case "msirecordgetstring": return 370368; |
| 100 | case "msirecordisnull": return 370369; |
| 101 | case "msirecordreadstream": return 370370; |
| 102 | case "msirecordsetinteger": return 370371; |
| 103 | case "msirecordsetstream": return 370372; |
| 104 | case "msirecordsetstring": return 370373; |
| 105 | case "msireinstallfeature": return 370374; |
| 106 | case "msireinstallproduct": return 370375; |
| 107 | case "msiremovepatches": return 370376; |
| 108 | case "msisequence": return 370382; |
| 109 | case "msisetcomponentstate": return 370383; |
| 110 | case "msisetexternalui": return 370384; |
| 111 | case "msisetexternaluirecord": return 370385; |
| 112 | case "msisetfeatureattributes": return 370386; |
| 113 | case "msisetfeaturestate": return 370387; |
| 114 | case "msisetinstalllevel": return 370388; |
| 115 | case "msisetinternalui": return 370389; |
| 116 | case "msisetmode": return 370390; |
| 117 | case "msisetproperty": return 370391; |
| 118 | case "msisettargetpath": return 370392; |
| 119 | case "msisourcelistaddmediadisk": return 370394; |
| 120 | case "msisourcelistaddsource": return 370395; |
| 121 | case "msisourcelistaddsourceex": return 370396; |
| 122 | case "msisourcelistclearall": return 370397; |
| 123 | case "msisourcelistclearallex": return 370398; |
| 124 | case "msisourcelistclearmediadisk": return 370399; |
| 125 | case "msisourcelistclearsource": return 370401; |
| 126 | case "msisourcelistenummediadisks": return 370402; |
| 127 | case "msisourcelistenumsources": return 370403; |
| 128 | case "msisourcelistforceresolution": return 370404; |
| 129 | case "msisourcelistforceresolutionex":return 370405; |
| 130 | case "msisourcelistgetinfo": return 370406; |
| 131 | case "msisourcelistsetinfo": return 370407; |
| 132 | case "msisummaryinfogetproperty": return 370409; |
| 133 | case "msisummaryinfopersist": return 370490; |
| 134 | case "msisummaryinfosetproperty": return 370491; |
| 135 | case "msiusefeature": return 370502; |
| 136 | case "msiusefeatureex": return 370503; |
| 137 | case "msiverifydiskspace": return 370506; |
| 138 | case "msiverifypackage": return 370508; |
| 139 | case "msiviewexecute": return 370513; |
| 140 | case "msiviewfetch": return 370514; |
| 141 | case "msiviewgetcolumninfo": return 370516; |
| 142 | case "msiviewgeterror": return 370518; |
| 143 | case "msiviewmodify": return 370519; |
| 144 | case "productid": return 370855; |
| 145 | default: |
| 146 | return 0; |
| 147 | } |
| 148 | } |
| 149 | |
| 150 | function GetHelpLink(apiName) |
| 151 | { |
| 152 | var helpCode = GetHelpCode(apiName); |
| 153 | if (helpCode != 0) |
| 154 | { |
| 155 | // Found a direct link! |
| 156 | var prefix = (helpCode < 500000 ? "aa" : "bb"); |
| 157 | return "http://msdn2.microsoft.com/en-us/library/" + prefix + helpCode + ".aspx"; |
| 158 | } |
| 159 | else |
| 160 | { |
| 161 | // This link works, but goes through an annoying 5-sec redirect page. |
| 162 | return "http://msdn.microsoft.com/library/en-us/msi/setup/" + apiName.toLowerCase() + ".asp"; |
| 163 | } |
| 164 | } |
| 165 | |
| 166 | // Change any MSI API help links from indirect MSDN references to direct references. |
| 167 | function FixHelpLinks() |
| 168 | { |
| 169 | var msiLinkRegex = /msdn\.microsoft\.com\/library\/en-us\/msi\/setup\/([a-z]+)\.asp/i; |
| 170 | var links = document.body.all.tags("a"); |
| 171 | var i; |
| 172 | for (i = 0; i < links.length; i++) |
| 173 | { |
| 174 | var linkElem = links(i); |
| 175 | var match = msiLinkRegex.exec(linkElem.href); |
| 176 | if (match) |
| 177 | { |
| 178 | var apiName = match[1]; |
| 179 | linkElem.href = GetHelpLink(apiName); |
| 180 | linkElem.target = "_blank"; |
| 181 | linkElem.title = "MSDN Library"; |
| 182 | } |
| 183 | } |
| 184 | } |