By: Paul S. Cilwa Viewed: 11/19/2019
Posted: 8/3/2018
Topics/Keywords: #Computers #Programming #Organica #VB.NET Page Views: 515
How to determine if Organica has ever before been run on this computer.

What happens the very first time a user puts his foot in the water, so to speak, and runs Organica? We've already made an effort to "position" the running program so that it is "in" the user's home directory. But Organica needs to be able to create a directory for itself, with at least an INI file with default preferences.

Previously we put code in Frame to locate the user directory. But that's not enough for real life. We're going to append two procedures to the ThisUser class.

The first does the work of creating an Organica.ini file in any specified location.

ThisUser.vb (append)

Private Function CreateOrganicaHome(ByVal HomePath As String) As ProfileDocument IO.Directory.CreateDirectory(HomePath) HomePath = My.Computer.FileSystem.CombinePath(HomePath, "Organica.ini") Dim IniFile As New ProfileDocument(HomePath) With IniFile .WriteData("IconPath", "[UserPhoto]") .WriteData("DisplayName", "[UserDisplayName]") .UserSince = Now.Date.ToString("d") .WriteLink("Music", KnownFolders.MyMusic().FullName, "Icons\Music.png") .WriteLink("Pictures", KnownFolders.MyPictures().FullName, "Icons\Photos.png") .WriteLink("Videos", KnownFolders.MyVideos().FullName, "Icons\Videos.png") .WriteLink("Documents", KnownFolders.MyVideos().FullName, "Icons\Documents.png") End With Return IniFile End Function

Please note that this code is going to create three links to Music, Pictures, Videos and Documents. These links include icons for those Folders. Here are the ones I chose to use, for your convenience.

Then we're ready to enhance the Directory property of ThisUser. This property has the task of determining where the initialization should take place, where the .INI file should go, and then invoke the above routine to do the work.

ThisUser.vb (enhance)

Public ReadOnly Property Directory() As String Get Dim UserPath As String Dim OrganicaPath As String UserPath = KnownFolders.MyProfile.FullName OrganicaPath = My.Computer.FileSystem.CombinePath(UserPath, "Organica") If System.IO.Directory.Exists(OrganicaPath) Then Return OrganicaPath Else If MsgBox("Welcome! Organica needs to create an initial Home folder to proceed. May I do that?", MsgBoxStyle.YesNo + MsgBoxStyle.Information, "Welcome to Organica!") = MsgBoxResult.Yes Then CreateOrganicaHome(OrganicaPath) Else MsgBox("It is most gratifying that your enthusiasm for Organica continues unabated." & "We look forward to your custom in future lives.", MsgBoxStyle.Exclamation) End End If Return OrganicaPath End If End Get End Property