cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Deploying through Active Directory

I've created an MSI which installs/uninstalls ok through group policies in Active Directory.

I see within Advanced Deployment Options that there is a deployment count in the the Advanced Diagnostic Information panel.

No matter which way I've tried, this never increases despite the package installing. Tried with a normal user, admins etc. No real documentation around from Microsoft regarding this just "It's there" (but doesn't work).

Would like this to work to see that packages are being deployed where needed. Looking at all machines eventlogs to see it successfully installed would be too time consuming.

Has anyone had any success with this working?
(6) Replies
Forgot to update my post for anyone looking into similar situations.
The deployment count is purely there for how many times a package has been redeployed and was as much use as sign posts on the moon.

I have incorporated my own method of auditing packages that are being installed/uninstalled using Active Directory to PCs - with success, and will log if a pc fails to complete the task. Just four simple custom actions inserted into the sequences. I will give details if anyone is in a similar situation.
That would be interesting to see what you are doing to capture that info?

Thanks
I'll post the details on here later in the week - just need to finish a Novell client uninstall package first 😛
I would also be interested in seeing your custom actions. Thanks

Nick
You need to set up a shared directory on a server such as \\packageserver\software deployment audit$. For each package, create a suitable folder. This is where the custom actions will dump blank files during the un/install. (Make sure you set suitable security on this share)

At the start of the package install it creates a .SIN file. The end of the install creates a FIN file. Begining of an uninstall a SUN file and the end of the uninstall a FUN file. This file allows you to get a date/time stamp of the PCs package operation.

A program will be required to collect the details from this files (and remove) into an audit database, which would need to be run regularly. I've a bare bones program that does this for me but have near enough tidied this up to a effective gui to manage all packages audits. I will make this available at the end of next week (17th April 04). www.thorny.co.uk/software.htm

For your package:

Create four custom actions called AuditFinishInstall, AuditFinishUninstall, AuditStartInstall and AuditStartUninstall as VBScript code stored directly in the custom action.

Use the Custom Action Wizard for each to be as follows:
The code for each one needs to be as follows:

Set WshNetwork=CreateObject("Wscript.Network")
PcName="\\\Software Deployment Audit$\\" + WshNetwork.computername + "."
Set fso=CreateObject("Scripting.FileSystemObject")
Err.Clear
On Error Resume Next
Set okFile = fso.CreateTextFile(PcName, False)


make this the same folder name as the package is installed in eg: "Registry & File Fixes"

for each VB Script this needs to be amended as follows:

AuditFinishUninstall = ".FUN", AuditFinishInstall = ".FIN", AuditStartUninstall = ".SUN" and AuditStartInstall = ".SIN"

For AuditFinishInstall, AuditStartInstall and AuditStartUninstall set the following:

Return Processing: Synchronous (Check exit code)
In-Script Execution: Immediate Execution

For AuditFinishUninstall set the following:
Return Processing: Asynchronous (Waits for exit code)
In-Script Execution: Commit Execution

Also make the following changes in the sequence:
AuditFinishInstall: Sequence Number = Immediately after "InstallFinalise". Condition = Not Installed

AuditFinishUninstall: Sequence Number = Immediately before "InstallFinalise". Condition = REMOVE="ALL"

AuditStartInstall: Sequence Number = Immediately action in list. Condition = Not Installed

AuditStartUninstall: Sequence Number = Immediately after "InstallInitialize". Condition to be REMOVE="ALL" - otherwise if uninstalled by a direct call to the msi and not add/remove programs, the script will not run.

The above will need tweaking per package.
For example to accomodate any ForceReboot or ScheduleReboots you may need to use the AFTERREBOOT condition on the two finishing custom actions. One I have needed to do is set the AuditFinishInstall to have a condition of only "Not REMOVE="ALL".


Do let me know of any issues or improvements that can be made to this.
So far this has been doing the job I require, espcially doing an assigned installation during bootup.
You may also want to change the following for your AD GPO for the package:

Computer Configuration > Administrative Templates > System > Group Policy:
Enable: Apply Group Policy for computers asynchronously during startup
Disable: Software installation policy processing
Computer Configuration > Administrative Templates > Windows Components > Windows Installer:
Enable with check on: Always install with elevated priviliges
Disable: Allow user control over installs
Disable: Enable user to browse for source while elevated
Enable: Logging