通过Node.js 获取电脑安装的软件,支持Windows和Mac两个平台。
👨💻 安装
npm install get-installed-apps
🔌 用法
ES6 Module
import {getInstalledApps} from 'get-installed-apps'
getInstalledApps().then(apps => {
console.log(apps)
})
CommonJS
const {getInstalledApps} = require('get-installed-apps')
getInstalledApps().then(apps => {
console.log(apps)
})
如果你只想在mac平台上使用,可以这么做:
import {getMacInstalledApps} from 'get-installed-apps'
getMacInstalledApps().then(apps => {
console.log(apps)
})
如果你只想在windows平台上使用,可以这么做:
import {getWinInstalledApps} from 'get-installed-apps'
getWinInstalledApps().then(apps => {
console.log(apps)
})
✅ 输出
返回一个数组。
下面是一个vscode的软件信息返回值, appName, appIdentifier, appInstallDate, appVersion这四个值是新的属性,主要保证双端统一。
- macOS
[{ _kMDItemDisplayNameWithExtensions: 'Visual Studio Code.app', appName: 'Visual Studio Code', kMDItemAppStoreCategory: '开发者工具', kMDItemAppStoreCategoryType: 'public.app-category.developer-tools', kMDItemCFBundleIdentifier: 'com.microsoft.VSCode', appIdentifier: 'com.microsoft.VSCode', kMDItemContentCreationDate: '2023-06-07 21:45:16 +0000', kMDItemContentCreationDate_Ranking: '2023-06-07 00:00:00 +0000', kMDItemContentModificationDate: '2023-06-07 21:45:16 +0000', kMDItemContentType: 'com.apple.application-bundle', kMDItemCopyright: 'Copyright', kMDItemDateAdded: '2023-06-20 11:13:54 +0000', appInstallDate: '2023-06-20 11:13:54 +0000', kMDItemDisplayName: 'Visual Studio Code', kMDItemDocumentIdentifier: '0', kMDItemFSContentChangeDate: '2023-06-07 21:45:16 +0000', kMDItemFSCreationDate: '2023-06-07 21:45:16 +0000', kMDItemFSFinderFlags: '0', kMDItemFSInvisible: '0', kMDItemFSIsExtensionHidden: '1', kMDItemFSLabel: '0', kMDItemFSName: 'Visual Studio Code.app', kMDItemFSNodeCount: '1', kMDItemFSOwnerGroupID: '20', kMDItemFSOwnerUserID: '501', kMDItemFSSize: '544298942', kMDItemInterestingDate_Ranking: '2023-07-06 00:00:00 +0000', kMDItemKind: '应用程序', kMDItemLastUsedDate: '2023-07-06 09:53:00 +0000', kMDItemLastUsedDate_Ranking: '2023-07-06 00:00:00 +0000', kMDItemLogicalSize: '544298942', kMDItemPhysicalSize: '546988032', kMDItemUseCount: '9', kMDItemVersion: '1.79.0', appVersion: '1.79.0' }],
- Windows
[
{
appIdentifier: '{771FD6B0-FA20-440A-A002-3B3BAC16DC50}_is1',
'Inno Setup: Setup Version': '6.0.5 (u)',
'Inno Setup: App Path': 'D:\software\Microsoft VS Code',
InstallLocation: 'D:\software\Microsoft VS Code\',
'Inno Setup: Icon Group': 'Visual Studio Code',
'Inno Setup: User': 'CYJ',
'Inno Setup: Selected Tasks': 'associatewithfiles,addtopath,runcode',
'Inno Setup: Deselected Tasks': 'desktopicon,addcontextmenufiles,addcontextmenufolders',
'Inno Setup: Language': 'simplifiedChinese',
DisplayName: 'Microsoft Visual Studio Code (User)',
appName: 'Microsoft Visual Studio Code (User)',
DisplayIcon: 'D:\software\Microsoft VS Code\Code.exe',
UninstallString: '"D:\software\Microsoft VS Code\unins000.exe"',
QuietUninstallString: '"D:\software\Microsoft VS Code\unins000.exe" /SILENT',
DisplayVersion: '1.80.0',
appVersion: '1.80.0',
Publisher: 'Microsoft Corporation',
appPublisher: 'Microsoft Corporation',
URLInfoAbout: 'https://code.visualstudio.com/',
HelpLink: 'https://code.visualstudio.com/',
URLUpdateInfo: 'https://code.visualstudio.com/',
NoModify: '0x1',
NoRepair: '0x1',
InstallDate: '20230709',
appInstallDate: '20230709',
MajorVersion: '0x1',
MinorVersion: '0x50',
VersionMajor: '0x1',
VersionMinor: '0x50',
EstimatedSize: '0x55f14'
}
]
🤔 原理
- macOS 通过获取Applications文件夹下所有的文件,然后通过mdls获取文件的属性,然后解析相应的信息,形成结构的app信息的对象。
- Windows 主要是读取注册表的数据,然后解析相应的信息,形成结构的app信息的对象