| 118 | | object obj = Library.GetProduct(p); |
|---|
| 119 | | if(obj == null) |
|---|
| 120 | | { |
|---|
| 121 | | Console.WriteLine("No such product " + p); |
|---|
| 122 | | continue; |
|---|
| 123 | | } |
|---|
| 124 | | else if(obj is Suite) |
|---|
| 125 | | { |
|---|
| 126 | | InstallSuite((Suite)obj, devel, ignoretransforms); |
|---|
| 127 | | continue; |
|---|
| 128 | | } |
|---|
| 129 | | |
|---|
| 130 | | Product product = (Product)obj; |
|---|
| 131 | | |
|---|
| 132 | | Version instVersion; |
|---|
| 133 | | |
|---|
| 134 | | if(devel) |
|---|
| 135 | | instVersion = product.develVersion; |
|---|
| 136 | | else |
|---|
| 137 | | instVersion = product.stableVersion; |
|---|
| 138 | | |
|---|
| 139 | | if(instVersion == null) |
|---|
| 140 | | { |
|---|
| 141 | | Console.WriteLine("Specified version not listed for product " |
|---|
| 142 | | + product.name); |
|---|
| 143 | | continue; |
|---|
| 144 | | } |
|---|
| 145 | | |
|---|
| 146 | | string URL = ""; |
|---|
| 147 | | Guid productCode = Guid.Empty; |
|---|
| 148 | | if(product.packages != null) |
|---|
| 149 | | { |
|---|
| 150 | | foreach(Package package in product.packages) |
|---|
| 151 | | { |
|---|
| 152 | | if(package.version.major == instVersion.major |
|---|
| 153 | | && package.version.minor == instVersion.minor |
|---|
| 154 | | && package.version.build == instVersion.build) |
|---|
| 155 | | { |
|---|
| 156 | | URL = package.URL; |
|---|
| 157 | | productCode = package.productCode; |
|---|
| 158 | | break; |
|---|
| 159 | | } |
|---|
| 160 | | } |
|---|
| 161 | | } |
|---|
| 162 | | if(URL == "") |
|---|
| 163 | | { |
|---|
| 164 | | Console.WriteLine("No package listed for specified version of " |
|---|
| 165 | | + product.name + ". Contact the repository maintainer."); |
|---|
| 166 | | continue; |
|---|
| 167 | | } |
|---|
| 168 | | |
|---|
| 169 | | InstallState state = ApplicationDatabase.getProductState(productCode); |
|---|
| 170 | | if(state != InstallState.Removed && state != InstallState.Absent |
|---|
| 171 | | && state != InstallState.Unknown) |
|---|
| 172 | | { |
|---|
| 173 | | Console.WriteLine(product.name + " is already the latest version"); |
|---|
| 174 | | continue; |
|---|
| 175 | | } |
|---|
| 176 | | |
|---|
| 177 | | string transforms = ""; |
|---|
| 178 | | if(!ignoretransforms && product.transforms != null) |
|---|
| 179 | | { |
|---|
| 180 | | foreach(Transform transform in product.transforms) |
|---|
| 181 | | { |
|---|
| 182 | | if(transform.version.major == instVersion.major |
|---|
| 183 | | && transform.version.minor == instVersion.minor) |
|---|
| 184 | | { |
|---|
| 185 | | transforms = transform.URL + ";"; |
|---|
| 186 | | } |
|---|
| 187 | | } |
|---|
| 188 | | } |
|---|
| 189 | | |
|---|
| 190 | | Console.Write("Installing product "+ product.name + "... "); |
|---|
| 191 | | |
|---|
| 192 | | ApplicationDatabase.setProgressHandler( |
|---|
| 193 | | new ACM.Sys.Windows.Installer.ProgressHandler( |
|---|
| 194 | | ProgressHandler)); |
|---|
| 195 | | |
|---|
| 196 | | uint ret; |
|---|
| 197 | | ret = ApplicationDatabase.installProduct(URL, |
|---|
| 198 | | (transforms!=""?"TRANSFORMS=" + transforms:"")); |
|---|
| 199 | | Console.WriteLine(""); |
|---|
| 200 | | |
|---|
| 201 | | if(ret != 0) |
|---|
| 202 | | { |
|---|
| 203 | | Console.WriteLine( |
|---|
| 204 | | "Error code {0} returned from installProduct for " |
|---|
| 205 | | + product.name,ret); |
|---|
| 206 | | Console.WriteLine(ApplicationDatabase.getErrorMessage(ret)); |
|---|
| | 121 | try |
|---|
| | 122 | { |
|---|
| | 123 | object obj = Library.GetProduct(p); |
|---|
| | 124 | if(obj == null) |
|---|
| | 125 | { |
|---|
| | 126 | Console.WriteLine("No such product " + p); |
|---|
| | 127 | continue; |
|---|
| | 128 | } |
|---|
| | 129 | else if(obj is Suite) |
|---|
| | 130 | { |
|---|
| | 131 | InstallSuite((Suite)obj, devel, ignoretransforms); |
|---|
| | 132 | continue; |
|---|
| | 133 | } |
|---|
| | 134 | |
|---|
| | 135 | Product product = (Product)obj; |
|---|
| | 136 | |
|---|
| | 137 | Version instVersion; |
|---|
| | 138 | |
|---|
| | 139 | if(devel) |
|---|
| | 140 | instVersion = product.develVersion; |
|---|
| | 141 | else |
|---|
| | 142 | instVersion = product.stableVersion; |
|---|
| | 143 | |
|---|
| | 144 | if(instVersion == null) |
|---|
| | 145 | { |
|---|
| | 146 | Console.WriteLine("Specified version not listed for product " |
|---|
| | 147 | + product.name); |
|---|
| | 148 | continue; |
|---|
| | 149 | } |
|---|
| | 150 | |
|---|
| | 151 | string URL = ""; |
|---|
| | 152 | Guid productCode = Guid.Empty; |
|---|
| | 153 | if(product.packages != null) |
|---|
| | 154 | { |
|---|
| | 155 | foreach(Package package in product.packages) |
|---|
| | 156 | { |
|---|
| | 157 | if(package.version.major == instVersion.major |
|---|
| | 158 | && package.version.minor == instVersion.minor |
|---|
| | 159 | && package.version.build == instVersion.build) |
|---|
| | 160 | { |
|---|
| | 161 | URL = package.URL; |
|---|
| | 162 | productCode = package.productCode; |
|---|
| | 163 | break; |
|---|
| | 164 | } |
|---|
| | 165 | } |
|---|
| | 166 | } |
|---|
| | 167 | if(URL == "") |
|---|
| | 168 | { |
|---|
| | 169 | Console.WriteLine("No package listed for specified version of " |
|---|
| | 170 | + product.name + ". Contact the repository maintainer."); |
|---|
| | 171 | continue; |
|---|
| | 172 | } |
|---|
| | 173 | |
|---|
| | 174 | InstallState state = ApplicationDatabase.getProductState(productCode); |
|---|
| | 175 | if(state != InstallState.Removed && state != InstallState.Absent |
|---|
| | 176 | && state != InstallState.Unknown) |
|---|
| | 177 | { |
|---|
| | 178 | Console.WriteLine(product.name + " is already the latest version"); |
|---|
| | 179 | continue; |
|---|
| | 180 | } |
|---|
| | 181 | |
|---|
| | 182 | string transforms = ""; |
|---|
| | 183 | if(!ignoretransforms && product.transforms != null) |
|---|
| | 184 | { |
|---|
| | 185 | foreach(Transform transform in product.transforms) |
|---|
| | 186 | { |
|---|
| | 187 | if(transform.version.major == instVersion.major |
|---|
| | 188 | && transform.version.minor == instVersion.minor) |
|---|
| | 189 | { |
|---|
| | 190 | transforms = transform.URL + ";"; |
|---|
| | 191 | } |
|---|
| | 192 | } |
|---|
| | 193 | } |
|---|
| | 194 | |
|---|
| | 195 | Console.Write("Installing product "+ product.name + "... "); |
|---|
| | 196 | |
|---|
| | 197 | ApplicationDatabase.setProgressHandler( |
|---|
| | 198 | new ACM.Sys.Windows.Installer.ProgressHandler( |
|---|
| | 199 | ProgressHandler)); |
|---|
| | 200 | |
|---|
| | 201 | uint ret; |
|---|
| | 202 | ret = ApplicationDatabase.installProduct(URL, |
|---|
| | 203 | (transforms!=""?"TRANSFORMS=" + transforms:"")); |
|---|
| | 204 | Console.WriteLine(""); |
|---|
| | 205 | |
|---|
| | 206 | if(ret != 0) |
|---|
| | 207 | { |
|---|
| | 208 | Console.WriteLine( |
|---|
| | 209 | "Error code {0} returned from installProduct for " |
|---|
| | 210 | + product.name,ret); |
|---|
| | 211 | Console.WriteLine(ApplicationDatabase.getErrorMessage(ret)); |
|---|
| | 212 | } |
|---|
| | 213 | } |
|---|
| | 214 | catch(WiptException e) |
|---|
| | 215 | { |
|---|
| | 216 | Console.WriteLine(e.Message); |
|---|
| 240 | | object obj = Library.GetProduct(p); |
|---|
| 241 | | if(obj == null) |
|---|
| 242 | | { |
|---|
| 243 | | Console.WriteLine("Could not find product " + p); |
|---|
| 244 | | continue; |
|---|
| 245 | | } |
|---|
| 246 | | else if(obj is Suite) |
|---|
| 247 | | { |
|---|
| 248 | | RemoveSuite((Suite)obj); |
|---|
| 249 | | continue; |
|---|
| 250 | | } |
|---|
| 251 | | |
|---|
| 252 | | Product product = (Product)obj; |
|---|
| 253 | | Guid productCode = |
|---|
| 254 | | ApplicationDatabase.findProductByUpgradeCode( |
|---|
| 255 | | product.upgradeCode,0); |
|---|
| 256 | | if(productCode != Guid.Empty) |
|---|
| 257 | | { |
|---|
| 258 | | InstallState state = |
|---|
| 259 | | ApplicationDatabase.getProductState(productCode); |
|---|
| 260 | | if(state != InstallState.Removed |
|---|
| 261 | | && state != InstallState.Absent |
|---|
| 262 | | && state != InstallState.Unknown) |
|---|
| 263 | | { |
|---|
| 264 | | Console.Write("Removing product "+ product.name + "... "); |
|---|
| 265 | | |
|---|
| 266 | | ApplicationDatabase.setProgressHandler( |
|---|
| 267 | | new ACM.Sys.Windows.Installer.ProgressHandler( |
|---|
| 268 | | ProgressHandler)); |
|---|
| 269 | | |
|---|
| 270 | | uint ret = ApplicationDatabase.removeProduct(productCode); |
|---|
| 271 | | Console.WriteLine(""); |
|---|
| 272 | | if(ret != 0) |
|---|
| 273 | | { |
|---|
| 274 | | Console.WriteLine( |
|---|
| 275 | | "Error code {0} returned from removeProduct",ret); |
|---|
| 276 | | Console.WriteLine(ApplicationDatabase.getErrorMessage(ret)); |
|---|
| 277 | | } |
|---|
| | 250 | try |
|---|
| | 251 | { |
|---|
| | 252 | object obj = Library.GetProduct(p); |
|---|
| | 253 | if(obj == null) |
|---|
| | 254 | { |
|---|
| | 255 | Console.WriteLine("Could not find product " + p); |
|---|
| | 256 | continue; |
|---|
| | 257 | } |
|---|
| | 258 | else if(obj is Suite) |
|---|
| | 259 | { |
|---|
| | 260 | RemoveSuite((Suite)obj); |
|---|
| | 261 | continue; |
|---|
| | 262 | } |
|---|
| | 263 | |
|---|
| | 264 | Product product = (Product)obj; |
|---|
| | 265 | Guid productCode = |
|---|
| | 266 | ApplicationDatabase.findProductByUpgradeCode( |
|---|
| | 267 | product.upgradeCode,0); |
|---|
| | 268 | if(productCode != Guid.Empty) |
|---|
| | 269 | { |
|---|
| | 270 | InstallState state = |
|---|
| | 271 | ApplicationDatabase.getProductState(productCode); |
|---|
| | 272 | if(state != InstallState.Removed |
|---|
| | 273 | && state != InstallState.Absent |
|---|
| | 274 | && state != InstallState.Unknown) |
|---|
| | 275 | { |
|---|
| | 276 | Console.Write("Removing product "+ product.name + "... "); |
|---|
| | 277 | |
|---|
| | 278 | ApplicationDatabase.setProgressHandler( |
|---|
| | 279 | new ACM.Sys.Windows.Installer.ProgressHandler( |
|---|
| | 280 | ProgressHandler)); |
|---|
| | 281 | |
|---|
| | 282 | uint ret = ApplicationDatabase.removeProduct(productCode); |
|---|
| | 283 | Console.WriteLine(""); |
|---|
| | 284 | if(ret != 0) |
|---|
| | 285 | { |
|---|
| | 286 | Console.WriteLine( |
|---|
| | 287 | "Error code {0} returned from removeProduct",ret); |
|---|
| | 288 | Console.WriteLine(ApplicationDatabase.getErrorMessage(ret)); |
|---|
| | 289 | } |
|---|
| | 290 | } |
|---|
| | 291 | else |
|---|
| | 292 | Console.WriteLine(p + " is not installed"); |
|---|
| 395 | | object[] list = Library.GetAll(); |
|---|
| 396 | | foreach(object o in list) |
|---|
| 397 | | { |
|---|
| 398 | | if(o is Product) |
|---|
| 399 | | { |
|---|
| 400 | | Product p = (Product)o; |
|---|
| 401 | | Console.WriteLine(p.name); |
|---|
| 402 | | if(p.stableVersion != null) |
|---|
| 403 | | { |
|---|
| 404 | | string installstring=""; |
|---|
| 405 | | foreach(Package k in p.packages) |
|---|
| 406 | | { |
|---|
| 407 | | if(p.stableVersion.major == k.version.major |
|---|
| 408 | | && p.stableVersion.minor == k.version.minor |
|---|
| 409 | | && p.stableVersion.build == k.version.build) |
|---|
| 410 | | { |
|---|
| 411 | | if(ApplicationDatabase.getProductState(k.productCode) |
|---|
| 412 | | == InstallState.Default) |
|---|
| 413 | | installstring="(installed)"; |
|---|
| 414 | | } |
|---|
| 415 | | } |
|---|
| 416 | | Console.WriteLine("\tStable Version: {0}.{1}.{2} {3}", |
|---|
| 417 | | p.stableVersion.major, p.stableVersion.minor, |
|---|
| 418 | | p.stableVersion.build, installstring); |
|---|
| 419 | | } |
|---|
| 420 | | if(p.develVersion != null) |
|---|
| 421 | | { |
|---|
| 422 | | string installstring=""; |
|---|
| 423 | | foreach(Package k in p.packages) |
|---|
| 424 | | { |
|---|
| 425 | | if(p.develVersion.major == k.version.major |
|---|
| 426 | | && p.develVersion.minor == k.version.minor |
|---|
| 427 | | && p.develVersion.build == k.version.build) |
|---|
| 428 | | { |
|---|
| 429 | | if(ApplicationDatabase.getProductState(k.productCode) |
|---|
| 430 | | == InstallState.Default) |
|---|
| 431 | | installstring="(installed)"; |
|---|
| 432 | | } |
|---|
| 433 | | } |
|---|
| 434 | | Console.WriteLine("\tDevelopment Version: {0}.{1}.{2} {3}", |
|---|
| 435 | | p.develVersion.major, p.develVersion.minor, |
|---|
| 436 | | p.develVersion.build, installstring); |
|---|
| 437 | | } |
|---|
| 438 | | } |
|---|
| 439 | | else if(o is Suite) |
|---|
| 440 | | { |
|---|
| 441 | | Suite u = (Suite)o; |
|---|
| 442 | | Console.WriteLine(u.name); |
|---|
| 443 | | foreach(string s in u.products) |
|---|
| 444 | | { |
|---|
| 445 | | Console.WriteLine('\t' + s); |
|---|
| 446 | | } |
|---|
| 447 | | } |
|---|
| | 412 | try |
|---|
| | 413 | { |
|---|
| | 414 | object[] list = Library.GetAll(); |
|---|
| | 415 | foreach(object o in list) |
|---|
| | 416 | { |
|---|
| | 417 | if(o is Product) |
|---|
| | 418 | { |
|---|
| | 419 | Product p = (Product)o; |
|---|
| | 420 | Console.WriteLine(p.name); |
|---|
| | 421 | if(p.stableVersion != null) |
|---|
| | 422 | { |
|---|
| | 423 | string installstring=""; |
|---|
| | 424 | foreach(Package k in p.packages) |
|---|
| | 425 | { |
|---|
| | 426 | if(p.stableVersion.major == k.version.major |
|---|
| | 427 | && p.stableVersion.minor == k.version.minor |
|---|
| | 428 | && p.stableVersion.build == k.version.build) |
|---|
| | 429 | { |
|---|
| | 430 | if(ApplicationDatabase.getProductState(k.productCode) |
|---|
| | 431 | == InstallState.Default) |
|---|
| | 432 | installstring="(installed)"; |
|---|
| | 433 | } |
|---|
| | 434 | } |
|---|
| | 435 | Console.WriteLine("\tStable Version: {0}.{1}.{2} {3}", |
|---|
| | 436 | p.stableVersion.major, p.stableVersion.minor, |
|---|
| | 437 | p.stableVersion.build, installstring); |
|---|
| | 438 | } |
|---|
| | 439 | if(p.develVersion != null) |
|---|
| | 440 | { |
|---|
| | 441 | string installstring=""; |
|---|
| | 442 | foreach(Package k in p.packages) |
|---|
| | 443 | { |
|---|
| | 444 | if(p.develVersion.major == k.version.major |
|---|
| | 445 | && p.develVersion.minor == k.version.minor |
|---|
| | 446 | && p.develVersion.build == k.version.build) |
|---|
| | 447 | { |
|---|
| | 448 | if(ApplicationDatabase.getProductState(k.productCode) |
|---|
| | 449 | == InstallState.Default) |
|---|
| | 450 | installstring="(installed)"; |
|---|
| | 451 | } |
|---|
| | 452 | } |
|---|
| | 453 | Console.WriteLine("\tDevelopment Version: {0}.{1}.{2} {3}", |
|---|
| | 454 | p.develVersion.major, p.develVersion.minor, |
|---|
| | 455 | p.develVersion.build, installstring); |
|---|
| | 456 | } |
|---|
| | 457 | } |
|---|
| | 458 | else if(o is Suite) |
|---|
| | 459 | { |
|---|
| | 460 | Suite u = (Suite)o; |
|---|
| | 461 | Console.WriteLine(u.name); |
|---|
| | 462 | foreach(string s in u.products) |
|---|
| | 463 | { |
|---|
| | 464 | Console.WriteLine('\t' + s); |
|---|
| | 465 | } |
|---|
| | 466 | } |
|---|
| | 467 | } |
|---|
| | 468 | } |
|---|
| | 469 | catch(WiptException e) |
|---|
| | 470 | { |
|---|
| | 471 | Console.WriteLine(e.Message); |
|---|