Patent Description:
<CIT> discloses a cloud storage system that provides remote access to a file associated with the cloud storage system. In response to a request to access the file, the cloud storage system identifies applications available to the request generator and capable of accessing the file, which may include both online web-based applications and applications installed on a device with which the user is accessing the file. The cloud storage system determines an application type of an identified application, and provides file access to the identified application based on the application type.

Furthermore, the <CIT> discloses a software program running on a computer and automatically managed, monitored and updated with a newer version in a completely automated fashion, without interruption of its primary function, and in a manner that is completely transparent to the user of the computer. This is achieved by means of a control module that performs the functions of locating and identifying other versions of its associated program, determining whether the other versions are older or newer than currently stored versions, and downloading a newer version. Multiple versions of the program can remain accessible on the computer, and the control module manages the launching of a particular version that may be required. Statistical data relating to the launching and operation of the program is collected and uploaded to a central location on a regular basis.

When a user selects a file to open via a user device, the user device (for example, the operating system) determines a software application to use to open and process the file. For example, when the file is a spreadsheet file, the user device may identify a locally-installed software application configured to open and process this file type. Similarly, when the file is a word processing file, the user device identifies a locally-installed software application configured to open and process this file type. In some embodiments, the user device uses a file extension of the file to determine a file type and compares the determined file type to stored mappings representing software applications configured to open and process such file types. For example, a ". pdf' file extension designates portable document format files, which may be associated with Acrobat Reader® provided by Adobe Systems, Inc. ppt" file extension designates presentation files, which may be associated with PowerPoint® provided by Microsoft Corporation, and a ". docx" file extension designates word processing files, which may be associated with Word® provided by Microsoft Corporation.

In some situations, the user device may not identify any locally-installed applications that are configured to open files of the requested file type. When this occurs, the user device may prompt the user to select an application from a list of available applications, which may include applications locally installed on the user device as well as applications available for download to the user device. If a user selects an application from the list that is not actually configured to open and process files of the requested file type, the user may not be able to access the file, may obtain a distorted or incomplete view of the data included in the file, or may not be able to interact with the data included in the file (edit, print, or the like) effectively.

Alternatively, when the user device identifies a locally-installed software application configured to open and process files of the requested file type, the user device opens the file as requested using the identified application. The identified application, however, may not be the most recent version of the application, which may again limit the user's access to and interaction with the file. For example, when the identified application is a word processing application, the version of the application locally-installed at the user device may not provide collaboration functionality, advanced editing functionality, or other functionality that only more recent versions of the application provide. Accordingly, in these situations, the locally-installed version of the application at the user device limits the processing of the opened file.

Thus, embodiments described here provide a solution to this limitation in functionality by not only determining whether a user device includes a locally-installed application for opening a particular file type but also determining what version of this application is installed and using (for example, automatically) a web-based adaptation of the application to provide relevant functionality for a particular file.

One or more embodiments are described and illustrated in the following description and accompanying drawings. These embodiments are not limited to the specific details provided herein and may be modified in various ways. Furthermore, other embodiments may exist that are not described herein. Also, the functionality described herein as being performed by one component may be performed by multiple components in a distributed manner. Likewise, functionality performed by multiple components may be consolidated and performed by a single component. Similarly, a component described as performing particular functionality may also perform additional functionality not described herein. For example, a device or structure that is "configured" in a certain way is configured in at least that way, but may also be configured in ways that are not listed. Furthermore, some embodiments described herein may include one or more electronic processors configured to perform the described functionality by executing instructions stored in non-transitory, computer-readable medium. Similarly, embodiments described herein may be implemented as non-transitory, computer-readable medium storing instructions executable by one or more electronic processors to perform the described functionality. As used in the present application, "non-transitory computer-readable medium" comprises all computer-readable media but does not consist of a transitory, propagating signal. Accordingly, non-transitory computer-readable medium may include, for example, a hard disk, a CD-ROM, an optical storage device, a magnetic storage device, a ROM (Read Only Memory), a RAM (Random Access Memory), register memory, a processor cache, or any combination thereof.

In addition, the phraseology and terminology used herein is for the purpose of description and should not be regarded as limiting. For example, the use of "including," "containing," "comprising," "having," and variations thereof herein is meant to encompass the items listed thereafter and equivalents thereof as well as additional items. The terms "connected" and "coupled" are used broadly and encompass both direct and indirect connecting and coupling. Further, "connected" and "coupled" are not restricted to physical or mechanical connections or couplings and can include electrical connections or couplings, whether direct or indirect. In addition, electronic communications and notifications may be performed using wired connections, wireless connections, or a combination thereof and may be transmitted directly or through one or more intermediary devices over various types of networks, communication channels, and connections. Moreover, relational terms such as first and second, top and bottom, and the like may be used herein solely to distinguish one entity or action from another entity or action without necessarily requiring or implying any actual such relationship or order between such entities or actions.

As described above, even if a user device includes a locally-installed version of an application for accessing files of a particular file type, the version of this installed application may limit the ability of the user to access or interact with data within the file. Accordingly, embodiments described herein determine a version of a locally-installed software application and automatically determine, based on this version, whether to open a requested file using the locally-installed software application or a web-based adaptation of the application to provide unrestricted or relevant software functionality.

<FIG> schematically illustrates a system <NUM> for opening a file. The system <NUM> may be, for example, a cloud-based storage or computing environment. The system <NUM> includes one or more servers (such as a server <NUM>) and one or more user devices (such as a user device <NUM> and a user device <NUM>). The servers <NUM> and the user devices <NUM> and <NUM> communicate over one or more wired or wireless communication networks <NUM>. Portions of the wireless communication networks <NUM> may be implemented using a wide area network, such as the Internet, a local area network, such as a Bluetooth™ network or Wi-Fi, and combinations or derivatives thereof. It should be understood that each server included in the system <NUM> may communicate with any number of user devices, and the two user devices <NUM> and <NUM> illustrated in <FIG> are purely for illustrative purposes. Similarly, it should also be understood that the system <NUM> may include any number of servers and the single server <NUM> illustrated in <FIG> is purely for illustrative purposes. Also, in some embodiments, one of the user devices <NUM>, <NUM> may communicate with the server <NUM> through one or more intermediary devices (not shown).

As described below, the server <NUM> stores a plurality of files <NUM> (such as a first file <NUM> and a second file <NUM>) accessible via the user devices <NUM> and <NUM>. As illustrated in <FIG>, the server <NUM> may transfer a file to a user device via the communication network <NUM> when the server <NUM> receives a request for the file from the user devices (and in some cases proper credentials for accessing the file) or as part of a periodic synchronization between files stored on the server <NUM> and files stored on the user devices. In some embodiments, the server <NUM> also initially receives a file from a user device for storage purposes. For example, as noted above, the server <NUM> may provide a cloud-storage environment where users may upload or synchronize files locally stored on a user device with the cloud-storage environment and, thus, may subsequently access the uploaded files from the cloud-storage environment from the same or a different user device.

Each of the user devices <NUM> and <NUM> is used by a user or tenant of the system <NUM>, and each user device <NUM>, <NUM> includes an electronic device, such as a smart phone, a smart watch, a tablet computer, a laptop computer, mixed reality headsets, or the like. For example, as illustrated in <FIG>, the user device <NUM> includes an electronic processor <NUM> (for example, a microprocessor, application-specific integrated circuit (ASIC), or another suitable electronic device), a memory <NUM> (for example, a non-transitory, computer-readable storage medium), and a communication interface <NUM> such as a transceiver, for communicating over the communication network <NUM> and, optionally, one or more additional communication networks or connections. As illustrated in <FIG>, the user device <NUM> also includes a display device <NUM> and an input device <NUM>. The display device <NUM> may be, for example, a touchscreen, a liquid crystal display ("LCD"), a light-emitting diode ("LED") display, an organic LED ("OLED") display, an electroluminescent display ("ELD"), and the like. The input device <NUM> may be, for example, a keypad, a mouse, a touchscreen (for example, as part of the display device <NUM>), a microphone, a camera, or the like. The electronic processor <NUM>, the memory <NUM>, the communication interface <NUM>, the display device <NUM>, and the input device <NUM> communicate wirelessly, over one or more communication lines or buses, or a combination thereof. It should be understood that the user device <NUM> may include additional components than those illustrated in <FIG> in various configurations and may perform additional functionality than the functionality described in the present application. Also, it should be understood that, although not described or illustrated herein, the user device <NUM> may include similar components and perform similar functionality as the user device <NUM>.

As illustrated in <FIG>, the memory <NUM> of the user device <NUM> includes an operating system <NUM>, a synchronization application <NUM>, an application <NUM> configured to open files of one or more file types, and a browser application <NUM>. It should be understood that the memory <NUM> may store additional applications and data, including locally stored files and the applications and data stored in the memory <NUM> may be stored on multiple memory devices or modules. Also, in some embodiments, the functionality described herein as being provided by the operating system <NUM>, the synchronization application <NUM>, and the application <NUM> may be distributed and combined in various configurations. For example, the functionality provided by the synchronization application <NUM> may be divided among multiple different applications or the functionality provided by the synchronization application <NUM> (or a portion thereof) may be performed by the application <NUM>, the operating system <NUM>, or a combination thereof.

The synchronization application <NUM> (when executed by the electronic processor <NUM>) is configured to manage the uploading and downloading of files to the cloud-storage environment provided through the server <NUM>. For example, the synchronization application <NUM> may provide a user interface that allows a user to specify what locally-stored files should be uploaded to the cloud-storage environment and other synchronization parameters, such as how frequently to perform synchronizations, when to synchronize files stored within the cloud-storage environment with locally-stored files, and the like. In some embodiments, when a user selects a file to open on the user device <NUM> or <NUM>, the synchronization application <NUM> also automatically downloads a most recent version of the selected file from the cloud-storage environment to the user device <NUM> or <NUM>. Similarly, as a user makes and commits changes to a locally-stored file, the synchronization application <NUM> automatically applies similar updates to the version of the file stored within the cloud storage environment.

As noted above, the application <NUM> (when executed by the electronic processor <NUM>) is configured to open files of one or more file types. For example, the application <NUM> may be Word® provided by Microsoft Corporation, which is configured to open word processing files, such as files with the file extension ". " The application <NUM> is also associated with a version. For example, when the application <NUM> is Word®, the application <NUM> may be a <NUM> version, a <NUM> version, a <NUM> version, or the like. It should be understood that the version of an application may be specified in terms of a year, a sequential number (for example, version <NUM>), a build, update, or installation number, a unique name, or the like. The operating system <NUM> maintains a list of installed applications and a mapping that designates what file types each installed application is configured to open and may also store a version of each currently-installed application.

The browser application <NUM> (as executed by the electronic processor <NUM>) allows the user device <NUM> or <NUM> to access a web page, including web-based applications. In some embodiments, the browser application <NUM> is configured as a generic browser application configured to access any web page accessible over a communication network, such as the Internet. For example, the browser application <NUM> may include Internet Explorer® provided by Microsoft Corporation, Safari® provided by Apple, Inc. , Chrome® provided by Google LLC, or Firefox® provided by Mozilla Corporation. However, in other embodiments, the browser application <NUM> may be configured as a dedicated-purposes browser application configured to access a specific web page or specific web-based application.

As illustrated in <FIG>, the server <NUM> is an electronic device that includes an electronic processor <NUM> (for example, a microprocessor, application-specific integrated circuit (ASIC), or another suitable electronic device), a memory <NUM> (a non-transitory, computer-readable storage medium), and a communication interface <NUM>, such as a transceiver, for communicating over the communication networks <NUM> and, optionally, one or more additional communication networks or connections. The electronic processor <NUM>, the memory <NUM>, and the communication interface <NUM> communicate wirelessly, over one or more communication lines or buses, or a combination thereof. It should be understood that the server <NUM> may include additional components than those illustrated in <FIG> in various configurations and may perform additional functionality than the functionality described in the present application. Also, the functionality described herein as being performed by the server <NUM> may be distributed among multiple devices, such as multiple servers operated within the system <NUM>.

As illustrated in <FIG>, the server <NUM> stores (in the memory <NUM>) a plurality of files <NUM> (including the first file <NUM> and the second file <NUM>), and a synchronization manager <NUM>. It should be understood that the memory <NUM> included in the server <NUM> may store additional applications and data, and the data and applications stored in the memory <NUM> may be stored on multiple memory devices or modules and may be configured and distributed in various configurations. For example, in some embodiments, the memory <NUM> also stores a web-based application <NUM>, which is a web-based adaptation of the application <NUM>. Also, in some embodiments, the functionality described herein as being provided by the synchronization manager <NUM> or the web-based application <NUM> may be distributed and combined in various configurations. For example, the functionality provided by the synchronization manager <NUM> may be divided among multiple different applications or the functionality provided by the synchronization manager <NUM> (or a portion thereof) may be performed by the web-based application <NUM>.

The synchronization manager <NUM> may communicate with the synchronization application <NUM> installed on the user devices <NUM> and <NUM> to manage the uploading of files from the user devices <NUM> and <NUM> and the downloading of files to the user devices <NUM> and <NUM>, including the synchronization of files stored on a user device and stored within the cloud-based storage environment. Similarly, the user devices <NUM> and <NUM> can access the web-based application <NUM> using the browser application <NUM> as described above. For example, if a user wants to open a file stored within the cloud-based storage environment within the web-based application <NUM>, the user uses the browser application <NUM> to access the web-based application <NUM> and select the requested file currently stored in the cloud-based storage environment.

As described above, when the user is not working within the web-based application <NUM> and requests access to a file stored within the cloud-based storage environment, the synchronization application <NUM> installed on the user device <NUM> or <NUM> communicates with the synchronization manager <NUM> installed on the server <NUM> to download a copy of the requested file to the user device <NUM> or <NUM> (the memory <NUM>). The downloaded copy is then opened within a locally-installed application configured to open the file type of the downloaded file (which the operating system <NUM> may select). Depending on the version of the locally-installed application, however, the user may not be able to fully access or interact with the data included in the downloaded file. For example, if the downloaded file was created or edited using a version of a word processing application that allows and tracks documentation collaboration that the locally-installed version of the word processing application does not support, this data and functionality is not available to the user and, hence, information is lost or restricted. Similarly, if the downloaded file was created or edited using a version of a presentation application that animates images that the locally-installed version of the word processing application does not support, this data and functionality is not available to the user.

Accordingly, to solve these and other problems, the system <NUM> may be configured to determine a version of a software application locally-installed at the user device <NUM> or <NUM> and determine whether to open a file using the locally-installed version of the application or a web-based adaptation application based on the version. For example, if a more recent version of the application is available as the web-based application <NUM>, the file may be opened through the web-based application <NUM>. In some embodiments, the locally-installed version of the application does not need to be the most recent version of the application to be used. In particular, the web-based application <NUM> may only be used when the version of the locally-installed application is a predetermined version, such as an out-of-date version, a version that is no longer supported, or a version that is otherwise inadequate for accessing files.

<FIG> illustrates a method <NUM> of opening files using the system <NUM>. The method <NUM> is primarily described as being performed by the synchronization application <NUM> as installed on a user device <NUM> or <NUM> (as executed by the electronic processor <NUM>). However, as described in further detail below, in other embodiments, the method <NUM> may be performed by other applications or devices and may be performed by a combination of applications or devices.

As illustrated in <FIG>, the method <NUM> includes receiving a request for a file associated with a user device <NUM> or <NUM> (at block <NUM>). A request may be initiated by a user of the user device <NUM> or <NUM> by selecting a file within a file structure or manager of the user device <NUM> or <NUM>. In some embodiments, the request is initiated by a user using a user device to open a file locally-stored on the user device. For example, the operating system <NUM>, the synchronization application <NUM>, the application <NUM>, or a combination thereof may provide a user interface displaying available files, including files locally stored on the user device, which may also be mirrored on the cloud-based storage environment. In some embodiments, the available files may also include files currently stored on the cloud-based storage environment and available for download to the user device. It should be understood that a user may not directly initiate the request for a particular document. For example, another application installed at the user device <NUM> or <NUM> may initiate the request for the file, which may be based on user action, such as the opening of an electronic mail (email) message or the like.

Based on the request, the synchronization application <NUM> determines a file type of the requested file (at block <NUM>) and determines an application <NUM> locally-installed on the user device <NUM> or <NUM> configured to open the determinend file type (at block <NUM>). As noted above, file types may be designated by the file extension of a file. In some embodiments, the synchronization application <NUM> may interact with the operating system <NUM> to determine a file type, to determine the locally-installed application <NUM> associated with the file type, or both. For example, as noted above, the operating system <NUM> may store mappings that associate particular file types with particular installed applications.

After determining the locally-installed application <NUM> configured to open the requested file (at block <NUM>), the synchronization application <NUM> determines a version of the determined locally-installed application <NUM> (at block <NUM>). Again, in some embodiments, the synchronization application <NUM> communicates with the operating system <NUM> to obtain this information. In other embodiments, this information may be stored within the synchronization application <NUM> or the synchronization application <NUM> may be configured to communicate with the locally-installed application <NUM> to request this informaiton.

Depending on the version of the locally-installed application <NUM>, the synchronization application <NUM> determines whether to open the requested file using the locally-installed application <NUM> or a web-based adaptation of the application. For example, as illustrated in <FIG>, in some embodiments, the synchronization application <NUM> is configured to compare the version of the locally-installed application <NUM> to one or more predetermined versions of the application (at block <NUM>) and is configured to selectively open the file using a web-based adaptation of the application based on the results of comparing the version of the locally-installed application <NUM> to at least one of the predetermined versions (at block <NUM>).

In some embodiments, the predetermined versions may include a most-recent version of the application or a predetermined number of the most recent versions (current versions). Also, in some embodiments, the predetermined versions may include a most-frequently or commonly used version, which may or may not be the most recent or even a current version of the application. Accordingly, the predetermined versions may be recommended versions of the application for opening and interacting with files. The synchronization application <NUM> may have the predetermined versions hardcoded or may obtain the predetermined versions from the server <NUM> or another source periodically or on demand. Accoridngly, in this embodiment, when the version of the locally-installed application <NUM> is not equal to at least one of the predetermined versions (which may indicate that the locally-installed version is out-of-date), the synchronization application <NUM> opens the requested file using the web-based adaptation of the application (through the browser application <NUM>). In this situation, the web-based application <NUM> may access the file through the server <NUM> without downloading a local copy of the file to the user device <NUM> or <NUM>. However, in other embodiments, a local copy of the file may still be downloaded and may be used within the web-based application <NUM>. Alternaitvely, when the version of the locally-installed application <NUM> is equal to at least one of the predetermined versions, the synchronization application <NUM> opens the requested file using the locally-installed version of the application <NUM>. In particular, the synchronization application <NUM> may download a local copy of requested file to the user device <NUM> or <NUM> (the memory <NUM>), which is opened and displayed using the locally-installed application <NUM>.

As an alternative to comparing a version of the locally-installed application <NUM> to one or more predetermined versions representing recent, current, or recommended versions, the synchronization application <NUM> may be configured to compare the version to one or more predetermined versions representing out-of-date versions. Accordingly, in this embodiment, when the version of the locally-installed application <NUM> is not equal to at least one of the predetermined versions (indicating that the locally-installed version is not out-of-date), the synchronization application <NUM> opens the requested file using the locally-installed version of the application <NUM>, and, alternaitvely, when the version of the locally-installed application <NUM> is equal to at least one of the predetermined versions (indicating that the locally-installed version is out-of-date), the synchronization application <NUM> opens the requested file using the web-based application <NUM>.

Also, in some embodiments, the synchronization application <NUM> considers other factors when determining whether to open the requested file using the locally-installed version or the web-based adaptation. For example, the synchronization application <NUM> may use attributes of the requested file, such as file creation date, last file modification data, data included in the file representing whether particular functionality only associated with more recent versions was used when creating or editing the file, or the like. Similarly, in some embodiments, the synchronization application <NUM> considers attributes of the user requesting the file, such as an organization the user is included in, what access rights the user has to web-based adaptations of the application, preferences or default settings associated with the user, or the like. Furthermore, in some embodiments, the synchronization application <NUM> considers attributes of the user device <NUM> or <NUM> where the request originated from, such a type or version of the operating system <NUM>, the type or version of the browser application <NUM>, a signal strength available to the communication interface <NUM> for accessing a web-based adaptation of the application, or the like. All or a subset of these factors may be considered when determining whether to use a locally-installed version or a web-based adaptation and, sometimes, may be used to determine the predetermined versions to compare the locally-installed version to or to determine what web-based adaptation to use (when multiple versions are available).

In some embodiments, when the synchronization application <NUM> determines that a web-based application <NUM> should be used to open a file (as compared to the locally-installed version), the synchronization application <NUM> may automatically open the file using the web-based adaptation. Alternatively, the synchronization application <NUM> may display a prompt to a user prompting the user to confirm or deny the use of the web-based adaptation. <FIG> illustrates one example of such a prompt <NUM>, which prompts the user to confirm whether the web-based adaptation should be used. Thus, a user may manually override the application selection performed by the synchronization application <NUM>. In some embodiments, whether the user is prompted before using the web-based adaptation can be controlled as part of the settings or configurations available through the synchronization application <NUM>. Similarly, in some embodiments, when a user confirms the use of the web-based application <NUM>, the synchronization application <NUM> may set a default setting (for the user) to use the web-based application <NUM> in future similar situations. Alternatively, the synchronization application <NUM> may be configured to display a second prompt to a user asking the user whether such a default setting should be established or whether the synchronization application <NUM> should continue to prompt the user for instructions on what version to use. In some embodiments, the synchronization application <NUM> may generate the above prompt prior to determining the version of the locally-installed application <NUM> to provide for a faster response in situations where the user wants to use the locally-installed application <NUM> regardless of whether another version is available as a web-based application.

In some embodiments, the prompt provided by the synchronization application <NUM> may inform the user of the different versions and may inform the user what data or functionality may be unavailable if the user chooses to use the locally-installed application <NUM>. For example, the prompt may specify that the locally-installed application <NUM> does not provide particular functionality or may not correctly display particular data within the file. Thus, this information may allow a user to determine whether the functionality provided via the web-based application <NUM> would be beneficial. Again, the format, frequency, and triggers for such prompts or information may be configured on a user-basis through the synchronization application <NUM> or automatically by the synchronization application <NUM> based on previous interactions with the user.

It should be understood that the prompts and informational messages described above may be displayed in response to a request to open a particular available file or in response to other user activities or triggers. For example, as illustrated in <FIG>, the synchronization application <NUM> may be configured to display one or more messages <NUM> to alert a user of new or updated files available through the cloud-based storage environment (change to service throughout). Part of these messages may provide information regarding differences between a web-based adaptation of an application and the locally-installed version, additional or different functionality provided via the web-based adaptation, or a combination thereof. The messages may also indicate particular files that the user may want to consider using the web-based adaptation to obtain enhanced or full functionality or access to the file. Thus, a user may be able to use this information to directly use the web-based adaptation as compared to the locally-installed version, obtain an updated version of the application for local installation, or a combination thereof.

As noted above, although the method <NUM> is described herein as being performed by the synchronization application <NUM> as installed on the user device <NUM> or user device <NUM>, the method <NUM> or portions thereof may be performed by other applications or devices. For example, in some embodiments, the method <NUM> or portions thereof may be performed by the synchronization manager <NUM> installed on the server <NUM>. For example, when the server <NUM> receives a request from a user device <NUM> or <NUM> (via the synchronization application <NUM> for a file), the synchronization manager <NUM> may determine whether the file should be opened using a locally-installed version of the application at the user device <NUM> or <NUM> or a web-based adaptation. Similarly, in some embodiments, the operating system <NUM> or the application <NUM> installed on the user device <NUM> or <NUM> is configured to perform the method <NUM> or a portion thereof. For exmaple, the method <NUM> is not limited to cloud-based storage services or environment and may be performed when a request is made to open a locally-stored file. In this situation, if the file is ultimately opened within a web-based adaptation of the application, the file may be uploaded to the server <NUM> or another server providing the web-based adaptation.

Also, embodiments described herein may be used in situations where a user device <NUM> or <NUM> does not include a locally-installed application configured to open a requested file. For example, when a user device <NUM> or <NUM> does not include a locally-installed application for opening a requested file, the web-based adaptation may be used. Simlarly, factors regarding the file, the user, the user device <NUM> or <NUM>, or a combination thereof, may be used to select a particular web-based adaptation to use or select a particular version for local installation at the user device <NUM> or <NUM>. For example, in some embodiments, messages or a user interface may be provided to aid a user in updating a version of an application or initially installing an application.

Claim 1:
A system (<NUM>) for opening a file (<NUM>) via a user device (<NUM>, <NUM>), the system (<NUM>) comprising
an electronic processor (<NUM>) configured to
receive (<NUM>) a request to open the file (<NUM>),
determine (<NUM>) a file type of the file (<NUM>),
determine (<NUM>) an application (<NUM>) installed on the user device (<NUM>, <NUM>) configured to open files of the file type,
determine (<NUM>) a version of the application (<NUM>) installed on the user device (<NUM>, <NUM>),
compare (<NUM>) the version of the application (<NUM>) installed on the user device (<NUM>, <NUM>) to a predetermined version, and
selectively open (<NUM>) the file (<NUM>) using a web-based adaptation (<NUM>) of the application based on comparing the version of the application installed on the user device to the predetermined version;
wherein selectively opening the file (<NUM>) using the web-based adaptation (<NUM>) of the application (<NUM>) based on comparing the version of the application (<NUM>) installed on the user device (<NUM>, <NUM>) to the predetermined version includes, when the version of the application (<NUM>) installed on the user device (<NUM>, <NUM>) is not equal to the predetermined version, opening the file (<NUM>) using the web-based adaptation (<NUM>) of the application (<NUM>) and, when the version of the application (<NUM>) installed on the user device (<NUM>, <NUM>) is equal to the predetermined version, opening the file (<NUM>) using the application (<NUM>) installed on the user device (<NUM>, <NUM>), wherein the predetermined version represents a recent, current, or recommended version; or
wherein selectively opening the file (<NUM>) using the web-based adaptation (<NUM>) of the application (<NUM>) based on comparing the version of the application (<NUM>) installed on the user device (<NUM>, <NUM>) to the predetermined version includes, when the version of the application (<NUM>) installed on the user device (<NUM>, <NUM>) is not equal to the predetermined version, selectively opening the file (<NUM>) using the application (<NUM>) installed on the user device (<NUM>, <NUM>) and, when the version of the application (<NUM>) installed on the user device (<NUM>, <NUM>) is equal to the predetermined version, opening the file (<NUM>) using the web-based adaptation (<NUM>) of the application (<NUM>), wherein the predetermined version represents an out-of-date version or a version that is no longer supported or a version that is otherwise inadequate for accessing files.