{"action":"created","issue":{"url":"https://api.github.com/repos/chocolatey/choco/issues/1521","repository_url":"https://api.github.com/repos/chocolatey/choco","labels_url":"https://api.github.com/repos/chocolatey/choco/issues/1521/labels{/name}","comments_url":"https://api.github.com/repos/chocolatey/choco/issues/1521/comments","events_url":"https://api.github.com/repos/chocolatey/choco/issues/1521/events","html_url":"https://github.com/chocolatey/choco/issues/1521","id":306599127,"number":1521,"title":"Chocolatey should fail a package if its dependency packages fail to install","user":{"login":"ajklotz","id":9448682,"avatar_url":"https://avatars2.githubusercontent.com/u/9448682?v=4","gravatar_id":"","url":"https://api.github.com/users/ajklotz","html_url":"https://github.com/ajklotz","followers_url":"https://api.github.com/users/ajklotz/followers","following_url":"https://api.github.com/users/ajklotz/following{/other_user}","gists_url":"https://api.github.com/users/ajklotz/gists{/gist_id}","starred_url":"https://api.github.com/users/ajklotz/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ajklotz/subscriptions","organizations_url":"https://api.github.com/users/ajklotz/orgs","repos_url":"https://api.github.com/users/ajklotz/repos","events_url":"https://api.github.com/users/ajklotz/events{/privacy}","received_events_url":"https://api.github.com/users/ajklotz/received_events","type":"User","site_admin":false},"labels":[{"id":163217590,"url":"https://api.github.com/repos/chocolatey/choco/labels/0%20-%20_Triaging","name":"0 - _Triaging","color":"eeeeee","default":false}],"state":"open","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":1,"created_at":"2018-03-19T19:21:38Z","updated_at":"2018-03-20T13:22:08Z","closed_at":null,"author_association":"NONE","body":"Chocolatey should not attempt to install a package if a dependency package (listed in .nuspec) failed to install properly. But this should not stop progress on any other independent chocolatey packages. The scenario here would be custom chocolatey packages with embedded .msi files with dependency packages listed in the nuspec file.\r\n\r\nFor example, say I have 3 chocolatey packages to install: packageA, packageB and packageC. packageB has 2 dependency packages.\r\n`choco install packageA packageB packageC`\r\n(I'm assuming chocolatey will install in the order from left to right)\r\npackageA installs successfully. \r\npackageB fails to install one of its dependency packages - _packageB should not attempt install_\r\npackageC installs successfully."},"comment":{"url":"https://api.github.com/repos/chocolatey/choco/issues/comments/374595050","html_url":"https://github.com/chocolatey/choco/issues/1521#issuecomment-374595050","issue_url":"https://api.github.com/repos/chocolatey/choco/issues/1521","id":374595050,"user":{"login":"jberezanski","id":1577094,"avatar_url":"https://avatars3.githubusercontent.com/u/1577094?v=4","gravatar_id":"","url":"https://api.github.com/users/jberezanski","html_url":"https://github.com/jberezanski","followers_url":"https://api.github.com/users/jberezanski/followers","following_url":"https://api.github.com/users/jberezanski/following{/other_user}","gists_url":"https://api.github.com/users/jberezanski/gists{/gist_id}","starred_url":"https://api.github.com/users/jberezanski/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/jberezanski/subscriptions","organizations_url":"https://api.github.com/users/jberezanski/orgs","repos_url":"https://api.github.com/users/jberezanski/repos","events_url":"https://api.github.com/users/jberezanski/events{/privacy}","received_events_url":"https://api.github.com/users/jberezanski/received_events","type":"User","site_admin":false},"created_at":"2018-03-20T13:22:08Z","updated_at":"2018-03-20T13:22:08Z","author_association":"MEMBER","body":"This has been a thorn in my side for quite a long time now.\r\n\r\nIf packageB depends on depX and depX fails to install, there are three scenarios for packageB:\r\n1) packageB installs successfully, but the application fails at runtime (example: when KB2533623 fails to install, dotnetcore-runtime.install gets installed but running `dotnet -h` fails);\r\n2) packageB installation fails (possibly causing a cascade of failures, if other packages depend on it), presenting the user with an (usually unhelpful) error message (example: when KB2919355 fails to install on 2012 R2,  dotnet4.6.1 will fail with exit code 5100 - which translates to \"the system does not meet the requirements\", but the user probably won't know that)\r\n3) packageB _seems_ to install successfully, but the application or one of its components does not actually get installed (because, for example, the native installer is implemented in such a way that it silently skips some install steps when it does not detect certain prerequisites - case in point: dotnetcore-windowshosting, whose sole reason for existence is to install the IIS ASP.NET Core module, but the native installer will silently skip installing the module if IIS is not present) and the user is misled into thinking the application was fully installed.\r\n\r\nIn each scenario the user experience would be much better if Chocolatey displayed a warning: \"Aborting installation of packageB because one of its dependencies (depX) failed to install. Please retry the installation after fixing the problem.\"\r\n\r\n> How would you handle a meta package - one like dev-tools that has a bunch of dependencies on unrelated packages?\r\n\r\nThe same as with \"normal\" packages. A dependency fails -> metapackage does not get installed. Otherwise, it would give the impression that all tools are present."}}
{"actor":{"display_login":"jberezanski"}}