Skip to content

Commit b6c97e9

Browse files
committed
Changes needed to install msix for all users, provided by ddomingos-encora on github
1 parent aad0c95 commit b6c97e9

File tree

1 file changed

+22
-4
lines changed

1 file changed

+22
-4
lines changed

Installer.cpp

Lines changed: 22 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -186,7 +186,7 @@ Package GetSparsePackage()
186186

187187
try
188188
{
189-
packages = packageManager.FindPackagesForUser(L"");
189+
packages = packageManager.FindPackages();
190190
}
191191
catch (winrt::hresult_error)
192192
{
@@ -214,7 +214,7 @@ HRESULT NppShell::Installer::RegisterSparsePackage()
214214
}
215215

216216
PackageManager packageManager;
217-
AddPackageOptions options;
217+
StagePackageOptions options;
218218

219219
const wstring externalLocation = GetContextMenuPath();
220220
const wstring sparsePkgPath = externalLocation + L"\\NppShell.msix";
@@ -224,14 +224,32 @@ HRESULT NppShell::Installer::RegisterSparsePackage()
224224

225225
options.ExternalLocationUri(externalUri);
226226

227-
auto deploymentOperation = packageManager.AddPackageByUriAsync(packageUri, options);
227+
auto deploymentOperation = packageManager.StagePackageByUriAsync(packageUri, options);
228228
auto deployResult = deploymentOperation.get();
229229

230230
if (!SUCCEEDED(deployResult.ExtendedErrorCode()))
231231
{
232232
return deployResult.ExtendedErrorCode();
233233
}
234234

235+
Package package = GetSparsePackage();
236+
if (package == NULL)
237+
{
238+
return S_FALSE;
239+
}
240+
241+
winrt::hstring familyName = package.Id().FamilyName();
242+
243+
deploymentOperation = packageManager.ProvisionPackageForAllUsersAsync(familyName);
244+
deployResult = deploymentOperation.get();
245+
246+
if (!SUCCEEDED(deployResult.ExtendedErrorCode()))
247+
{
248+
return deployResult.ExtendedErrorCode();
249+
}
250+
251+
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0);
252+
235253
return S_OK;
236254
}
237255

@@ -251,7 +269,7 @@ HRESULT NppShell::Installer::UnregisterSparsePackage()
251269
}
252270

253271
winrt::hstring fullName = package.Id().FullName();
254-
auto deploymentOperation = packageManager.RemovePackageAsync(fullName, RemovalOptions::None);
272+
auto deploymentOperation = packageManager.RemovePackageAsync(fullName, RemovalOptions::RemoveForAllUsers);
255273
auto deployResult = deploymentOperation.get();
256274

257275
if (!SUCCEEDED(deployResult.ExtendedErrorCode()))

0 commit comments

Comments
 (0)