@@ -87,146 +87,138 @@ INotificationService notificationService
8787 . ThenByAscending ( p => p . DisplayName )
8888 )
8989 . ObserveOn ( SynchronizationContext . Current )
90- . Subscribe ( ) ;
90+ . Subscribe ( _ =>
91+ {
92+ if ( ShownPackages . Count > 0 )
93+ return ;
9194
92- AllPackagesCache . AddOrUpdate ( packageFactory . GetAllAvailablePackages ( ) ) ;
93- if ( ShownPackages . Count > 0 )
94- return ;
95+ ShowIncompatiblePackages = true ;
96+ } ) ;
9597
96- ShowIncompatiblePackages = true ;
98+ AllPackagesCache . AddOrUpdate ( packageFactory . GetAllAvailablePackages ( ) ) ;
9799 }
98100
99101 [ RelayCommand ]
100- private void InstallComfyForInference ( )
102+ private async Task InstallComfyForInference ( )
101103 {
102104 var comfyPackage = ShownPackages . FirstOrDefault ( x => x is ComfyUI ) ;
103105 if ( comfyPackage == null )
104106 return ;
105107
106108 isInferenceInstall = true ;
107- InstallPackage ( comfyPackage ) ;
109+ await InstallPackage ( comfyPackage ) ;
108110 }
109111
110112 [ RelayCommand ]
111- private void InstallPackage ( BasePackage selectedPackage )
113+ private async Task InstallPackage ( BasePackage selectedPackage )
112114 {
113- Task . Run ( async ( ) =>
114- {
115- var installLocation = Path . Combine (
116- settingsManager . LibraryDir ,
117- "Packages" ,
118- selectedPackage . Name
119- ) ;
120-
121- var steps = new List < IPackageStep >
122- {
123- new SetPackageInstallingStep ( settingsManager , selectedPackage . Name ) ,
124- new SetupPrerequisitesStep ( prerequisiteHelper , pyRunner , selectedPackage ) ,
125- } ;
126-
127- // get latest version & download & install
128- if ( Directory . Exists ( installLocation ) )
129- {
130- var installPath = new DirectoryPath ( installLocation ) ;
131- await installPath . DeleteVerboseAsync ( logger ) ;
132- }
133-
134- var downloadVersion = await selectedPackage . GetLatestVersion ( ) ;
135- var installedVersion = new InstalledPackageVersion { IsPrerelease = false } ;
115+ OnPrimaryButtonClick ( ) ;
136116
137- if ( selectedPackage . ShouldIgnoreReleases )
138- {
139- installedVersion . InstalledBranch = downloadVersion . BranchName ;
140- installedVersion . InstalledCommitSha = downloadVersion . CommitHash ;
141- }
142- else
143- {
144- installedVersion . InstalledReleaseVersion = downloadVersion . VersionTag ;
145- }
117+ var installLocation = Path . Combine ( settingsManager . LibraryDir , "Packages" , selectedPackage . Name ) ;
118+
119+ var steps = new List < IPackageStep >
120+ {
121+ new SetPackageInstallingStep ( settingsManager , selectedPackage . Name ) ,
122+ new SetupPrerequisitesStep ( prerequisiteHelper , pyRunner , selectedPackage )
123+ } ;
124+
125+ // get latest version & download & install
126+ if ( Directory . Exists ( installLocation ) )
127+ {
128+ var installPath = new DirectoryPath ( installLocation ) ;
129+ await installPath . DeleteVerboseAsync ( logger ) ;
130+ }
131+
132+ var downloadVersion = await selectedPackage . GetLatestVersion ( ) ;
133+ var installedVersion = new InstalledPackageVersion { IsPrerelease = false } ;
134+
135+ if ( selectedPackage . ShouldIgnoreReleases )
136+ {
137+ installedVersion . InstalledBranch = downloadVersion . BranchName ;
138+ installedVersion . InstalledCommitSha = downloadVersion . CommitHash ;
139+ }
140+ else
141+ {
142+ installedVersion . InstalledReleaseVersion = downloadVersion . VersionTag ;
143+ }
144+
145+ var torchVersion = selectedPackage . GetRecommendedTorchVersion ( ) ;
146+ var recommendedSharedFolderMethod = selectedPackage . RecommendedSharedFolderMethod ;
147+
148+ var installedPackage = new InstalledPackage
149+ {
150+ DisplayName = selectedPackage . DisplayName ,
151+ LibraryPath = Path . Combine ( "Packages" , selectedPackage . Name ) ,
152+ Id = Guid . NewGuid ( ) ,
153+ PackageName = selectedPackage . Name ,
154+ Version = installedVersion ,
155+ LaunchCommand = selectedPackage . LaunchCommand ,
156+ LastUpdateCheck = DateTimeOffset . Now ,
157+ PreferredTorchIndex = torchVersion ,
158+ PreferredSharedFolderMethod = recommendedSharedFolderMethod
159+ } ;
160+
161+ var downloadStep = new DownloadPackageVersionStep (
162+ selectedPackage ,
163+ installLocation ,
164+ new DownloadPackageOptions { VersionOptions = downloadVersion }
165+ ) ;
166+ steps . Add ( downloadStep ) ;
167+
168+ var unpackSiteCustomizeStep = new UnpackSiteCustomizeStep ( Path . Combine ( installLocation , "venv" ) ) ;
169+ steps . Add ( unpackSiteCustomizeStep ) ;
170+
171+ var installStep = new InstallPackageStep (
172+ selectedPackage ,
173+ installLocation ,
174+ installedPackage ,
175+ new InstallPackageOptions
176+ {
177+ SharedFolderMethod = recommendedSharedFolderMethod ,
178+ VersionOptions = downloadVersion ,
179+ PythonOptions = { TorchIndex = torchVersion }
180+ }
181+ ) ;
182+ steps . Add ( installStep ) ;
183+
184+ var setupModelFoldersStep = new SetupModelFoldersStep (
185+ selectedPackage ,
186+ recommendedSharedFolderMethod ,
187+ installLocation
188+ ) ;
189+ steps . Add ( setupModelFoldersStep ) ;
190+
191+ var setupOutputSharingStep = new SetupOutputSharingStep ( selectedPackage , installLocation ) ;
192+ steps . Add ( setupOutputSharingStep ) ;
193+
194+ var addInstalledPackageStep = new AddInstalledPackageStep ( settingsManager , installedPackage ) ;
195+ steps . Add ( addInstalledPackageStep ) ;
196+
197+ var runner = new PackageModificationRunner
198+ {
199+ ShowDialogOnStart = false ,
200+ HideCloseButton = false ,
201+ ModificationCompleteMessage = $ "{ selectedPackage . DisplayName } installed successfully"
202+ } ;
203+
204+ runner
205+ . ExecuteSteps ( steps )
206+ . ContinueWith ( _ =>
207+ {
208+ notificationService . OnPackageInstallCompleted ( runner ) ;
146209
147- var torchVersion = selectedPackage . GetRecommendedTorchVersion ( ) ;
148- var recommendedSharedFolderMethod = selectedPackage . RecommendedSharedFolderMethod ;
210+ EventManager . Instance . OnOneClickInstallFinished ( false ) ;
149211
150- var installedPackage = new InstalledPackage
151- {
152- DisplayName = selectedPackage . DisplayName ,
153- LibraryPath = Path . Combine ( "Packages" , selectedPackage . Name ) ,
154- Id = Guid . NewGuid ( ) ,
155- PackageName = selectedPackage . Name ,
156- Version = installedVersion ,
157- LaunchCommand = selectedPackage . LaunchCommand ,
158- LastUpdateCheck = DateTimeOffset . Now ,
159- PreferredTorchIndex = torchVersion ,
160- PreferredSharedFolderMethod = recommendedSharedFolderMethod
161- } ;
162-
163- var downloadStep = new DownloadPackageVersionStep (
164- selectedPackage ,
165- installLocation ,
166- new DownloadPackageOptions { VersionOptions = downloadVersion }
167- ) ;
168- steps . Add ( downloadStep ) ;
169-
170- var unpackSiteCustomizeStep = new UnpackSiteCustomizeStep (
171- Path . Combine ( installLocation , "venv" )
172- ) ;
173- steps . Add ( unpackSiteCustomizeStep ) ;
174-
175- var installStep = new InstallPackageStep (
176- selectedPackage ,
177- installLocation ,
178- installedPackage ,
179- new InstallPackageOptions
180- {
181- SharedFolderMethod = recommendedSharedFolderMethod ,
182- VersionOptions = downloadVersion ,
183- PythonOptions = { TorchIndex = torchVersion }
184- }
185- ) ;
186- steps . Add ( installStep ) ;
187-
188- var setupModelFoldersStep = new SetupModelFoldersStep (
189- selectedPackage ,
190- recommendedSharedFolderMethod ,
191- installLocation
192- ) ;
193- steps . Add ( setupModelFoldersStep ) ;
194-
195- var addInstalledPackageStep = new AddInstalledPackageStep ( settingsManager , installedPackage ) ;
196- steps . Add ( addInstalledPackageStep ) ;
212+ if ( ! isInferenceInstall )
213+ return ;
197214
198215 Dispatcher . UIThread . Post ( ( ) =>
199216 {
200- var runner = new PackageModificationRunner
201- {
202- ShowDialogOnStart = false ,
203- HideCloseButton = false ,
204- ModificationCompleteMessage = $ "{ selectedPackage . DisplayName } installed successfully"
205- } ;
206-
207- runner
208- . ExecuteSteps ( steps )
209- . ContinueWith ( _ =>
210- {
211- notificationService . OnPackageInstallCompleted ( runner ) ;
212-
213- EventManager . Instance . OnOneClickInstallFinished ( false ) ;
214-
215- if ( ! isInferenceInstall )
216- return ;
217-
218- Dispatcher . UIThread . Post ( ( ) =>
219- {
220- navigationService . NavigateTo < InferenceViewModel > ( ) ;
221- } ) ;
222- } )
223- . SafeFireAndForget ( ) ;
224-
225- EventManager . Instance . OnPackageInstallProgressAdded ( runner ) ;
217+ navigationService . NavigateTo < InferenceViewModel > ( ) ;
226218 } ) ;
227219 } )
228220 . SafeFireAndForget ( ) ;
229221
230- OnPrimaryButtonClick ( ) ;
222+ EventManager . Instance . OnPackageInstallProgressAdded ( runner ) ;
231223 }
232224}
0 commit comments