/build/static/layout/Breadcrumb_cap_w.png
08/14/2018 297 views

SCCM deployment
Installshield MSI/MST
VB Script

Hello All,

Using SCCM for per-machine install. I am using an MSI with transform as my install files that SCCM points to.

I have a package that installs folder structure and files to the User's Roaming folder (AppDataFolder). This is being done by an Active Setup that creates folders/files in the user's Roaming profile upon logging into Windows (post install & reboot).

The install works fine, it is the Uninstall that raises the issue. I have a standard folder/file removal script that works fine with hard coded paths. But hard coded paths are not an option for removing anything from a Roaming profile. How can I add "Appdatafolder" or "%appdata%" equivalent to a VB script so that it applies to anyone performing the uninstall from SCCM?

Here is the standard folder/file script I am using. It is good for deleting hard coded paths as shown:

'--------Delete files-------------
Set objFSO = CreateObject("Scripting.FileSystemObject")
On Error Resume Next
strComputer = "."
If objFSO.FolderExists("C:\ProgramData\VendorFolderName\SoftwareFolderName") Then
                objFSO.DeleteFile("C:\ProgramData\VendorFolderName\SoftwareFolderName\*.*"), True
                objFSO.DeleteFolder("C:\ProgramData\VendorFolderName\SoftwareFolderName"), True
End If
Set objFSO = Nothing


Can I use an Environmental Variable such as %appdata% or equivalent to use in a VB script for Roaming folder?

0 Comments   [ + ] Show comments

Comments


All Answers

0

Hi rcooder

try this

' Code to get value of env var

Dim myVar

Dim WshShell

Set WshShell = Wscript.CreateObject("WScript.Shell")

myVar = WshShell.ExpandEnvironmentStrings("%APPDATA%")

' Value of env var in myVar  N.B. No trailing slash so you need to prepend it if required

' Now do something like this depending on the folder structure

 objFSO.DeleteFile(myVar & "\VendorFolderName\SoftwareFolderName\*.*"), True

Answered 08/15/2018 by: olditguy
Second Degree Blue Belt

  • Thank you for responding. I found what fixed my issue. I used the following:
    '--------Delete folders-------------
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Dim objWShell
    Set objWShell = WScript.CreateObject("WScript.Shell")
    Dim appData
    appData = objWShell.expandEnvironmentStrings("%APPDATA%")
    On Error Resume Next
    strComputer = "."
    If objFSO.FIleExists(appData + "\Microsoft\Word\STARTUP\WordAddIn.dotm") Then
    objFSO.DeleteFile(appData + "\Microsoft\Word\STARTUP\WordAddIn.dotm")
    End If
    Set objFSO = Nothing
0

Thanks again olditguy! I didn't get around to trying it but here is the fix that worked for me:


'--------Delete folders-------------
Set objFSO = CreateObject("Scripting.FileSystemObject")
Dim objWShell
Set objWShell = WScript.CreateObject("WScript.Shell")
Dim appData
appData = objWShell.expandEnvironmentStrings("%APPDATA%")
On Error Resume Next
strComputer = "."
If objFSO.FIleExists(appData + "\Microsoft\Word\STARTUP\WordAddIn.dotm") Then
 objFSO.DeleteFile(appData + "\Microsoft\Word\STARTUP\WordAddIn.dotm")
End If
Set objFSO = Nothing

Answered 08/16/2018 by: rcooder
Senior Yellow Belt

Don't be a Stranger!

Sign up today to participate, stay informed, earn points and establish a reputation for yourself!

Sign up! or login

Share