How can we add custom logic while installing exe created by installshield - vb6

Is there any way to add custom logic which should be executed while installing the application created by installshield wizard ? Logic i need to implement includes checking internet connection and searching for key in registry ,if the conditions are valid then continue installing application else show message to user and stop installation . i have searched for options in installshield wizard but i didn't find any solution.
I even made a logic diagram
By the way i am using vb6 .

After some research i ended up with the installscript solution . In installshiled we can add InstallScript and sequence it in different event , for checking internet connection and registry value etc ..i made a custom dll to check my logic and called it via installscript . this link will be useful if we have to call dll function via installscript.Here is code snippet to use dll function in installscript
prototype [CallingConvention] [ReturnType] DLLName.FunctionName( ParamType1, ParamType2, ... );
For example:
prototype BOOL ConnectionCheckdll.CheckInternetConnection( INT, INT, INT );
UseDLL( SUPPORTDIR ^ "ConnectionCheckdll.dll" );
bResult = ConnectionCheckdll.CheckInternetConnection( nInt1, nInt2, nInt3 );
UnUseDLL( SUPPORTDIR ^ "ConnectionCheckdll.dll" );

Related

Tool for creating object representations for Entities in Dynamics

Similar to Entity Framework I would like to know if there is a tool or nuget package I can use where I can just send the Dynamics URL and credentials in order to create object models from a Dynamics System. I'm trying to avoid creating custom DTOs.
You can use CrmSvcUtil to generate strongly-typed classes for entities.
Command line:
CrmSvcUtil.exe /url:http://<serverName>/<organizationName>/XRMServices/2011/Organization.svc /out:<outputFilename>.cs /username:<username> /password:<password> /domain:<domainName> /namespace:<outputNamespace> /serviceContextName:<serviceContextName>
GUI: (by Daryl from community)
Early Bound Generator in XrmToolbox & its video tutorial + documentation
Early Bound Generator included in the XrmToolbox is the simplest. https://www.xrmtoolbox.com/
Find the right configuration then take the command line and include it in a batch file under source control. You'll have to run it each time you add fields in CRM, depending on your needs. If you lose your starting configuration, your code might not be compatible the next time you generate.

jbpm form builder's "IO Data" search is displaying processes only from default package

Problem:
I have form builder embedded in guvnor. When I create a new form definition within from guvnor, and provide the package for the form definition, still I can't see processes from that package. The only processes that I can get in that search are conming from DEFAULT package.
Expectation:
I want to get processes only from the package which I have provided in popup screen while creating form definition.
Environment:
I am using drools-guvnor 5.4.0.Final with jbpm-form-builder.war downloaded from the following path.
https://repository.jboss.org/nexus/content/groups/public-jboss/org/jbpm/jbpm-form-builder-distribution/5.4.0.Final/
To get the processes from the package follow the following steps ,
i. Create a form without any process attachment
ii. Save it
iii. Then again open it and press Search
iv. Processes from the selected package will appear
This issue was first reported and fixed in Version 5.2 as stated in the below jboss JIRA issues.
https://issues.jboss.org/browse/JBPM-3157#comment-12777068

How can I validate custom dialog input in a .NET Installer class?

I have a VS 2010 Setup project.
In the setup project I have a custom dialog, and a custom action.
Both work, I can even debug my custom action and it receives correctly the input the user provides in the custom dialog.
I would like to validate user input and only allow user go to next step if the input is valid.
I can show a messagebox with MessageBox.Show, but how can I prevent to go to the next step until the user corrects the input?
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
string myInput = Context.Parameters["MY_INPUT"]; // Value from custom dialog
if (myInput ..... )
{
// Not a valid input, we do not want to proceed to the next step
MessageBox.Show("Not a valid input, please correct it");
// What to do here?
// How can I tell the Installer do not accept this input?
}
else
{
// Valid input...
}
}
Thx for answers
The simplest method of achieving this is set a property from your custom action and use that property to condition the NewDialog event that is called when the user press the "Next" button, so the event does not get executed if the condition is not true.
A .NET Installer class custom action cannot set the property directly from its code, but you could use your C# code to write another type of custom action that can get/set properties, as in this example: http://www.advancedinstaller.com/user-guide/qa-c-sharp-ca.html
EDIT: You can do that by editing the MSI generated from VS with Orca, however, this is quite painful I would say as you need to edit multiple tables manually, like Binary, CustomActions, ControlEvent. Here is something to get you started with that:http://support.microsoft.com/kb/255905
Another method would be to switch creating the setup package with a more advanced setup authoring tool. If you want to go with a free and powerful one I recommend WiX (http://wix.sourceforge.net/), it will take you some time to get started with it but its way faster than editing in Orca. The commercial alternative, which will allow you to edit your project even faster and much easier is Advanced Installer (http://www.advancedinstaller.com), but you will need an Enterprise license for what you require to accomplish.

Disable Images, ActiveX Etc in VB6 WebBrowser control using DLCTL_NO_

Like the title says, i want to disable images, and ActiveX Controls in the vb6 webbrowser control using DLCTL_NO_RUNACTIVEXCTLS and DLCTL_NO_DLACTIVEXCTLS
Microsoft talk about it here: http://msdn.microsoft.com/en-us/library/aa741313.aspx
But i dont see any way to access IDispatch::Invoke from the vb6 application.
Any help would be greatly appreciated.
I do not think VB6 let you to add the ambient properties. Try host the ActiveX in another container (e.g. an ActiveX host written by yourself - but I do not know how much time you want to invest to declare VB-friendly OLE interfaces and implement them - or use another ActiveX like the one at http://www.codeproject.com/KB/atl/vbmhwb.aspx instead.
You don't access IDispatch::Invoke in VB6, you just write you method and IDispatch is automagically implemented.
Public Function DlControl() As Long
DlControl = DLCTL_NO_DLACTIVEXCTLS Or ...
End FUnction
Then just open Tools->Procedure Attributes and for DlControl function open Advanced and assign Procedure ID to -5512 (DISPID_AMBIENT_DLCONTROL). That's first part.
Second part is to set the client site to you custom implementation of IOleClientSite. You'll need a custom typelib, try Edanmo's OLELIB for declaration of these interfaces.
Here is a delphi sample how to hook your implementation of IOleClientSite. Apparently you'll alse have to call OnAmbientPropertyChange at some point.

ClickOnce: How do I pass a querystring value to my app *through the installer*?

My company currently builds separate MSI's for all of our clients, even though the app is 100% the same across the board (with a single exception, an ID in the app.config).
I would like to show them that we can publish in once place with ClickOnce, and simply add a query string parameter for each client's installer.
Example: http://mysite.com/setup.exe?ID=1234-56-7890
The issue that I'm having is that the above ("ID=1234...") is not being passed along to the "myapplication.application". What is happening instead is, the app is being installed successfully, and it is running the first time with an activation context, but the "ActivationUri" does not contain any query string values.
Is there a way to pass query string values FROM THE INSTALLER URL to the application's launch URL? If so, how?
After much searching (and discussing), the answer is simply that the current version of ClickOnce doesn't work that way. The installer does not pass the URL onto the application up it's first run.
Here is what I have done for a workaround (and it works great).
Change my setup package to have all of the required files uncompressed and loose (as apposed to using a CAB file, or embedding them in the installer).
Make an ASP.NET application (using Routing for URL handling) that listens for a request to "mysite.com/Installer/00123/Setup.exe"
Note: the route should listen for "/Installer/{ID}/*" where {ID} is 5 digits.
There is actually no directory called "00123", but rather, I'm using ASP.NET Routing to pickup those requests and then I map it to my actual directory that has the installer file in it.
I then hijack the request (parse the setup.exe to find the embedded URL that tells the installer program where to find the rest of the files... I then replace "/00000/" with the request URL that the user went to - in this case "00123".
As each file is being requested, I know which "version" of the file to send, because the ClickOnce Installer will be looking for "mysite.com/Installer/00123/SomeFile.dll" (or whatever).
Instead of using a 5-digit ID, you could use a GUID... it's up to you.
This solution works great for our organization... we currently have 37 clients who require unique customizations to their installer package, but we only have to actually build and publish ONE installer package and simply use the hijack method above.
At this point we have placeholders that we swap out so that it's easy to customize installers for as many clients as we want.
Example: in the app.config file we have displayName="{OrgName}" which is automatically replaced by one of the values in the database.
For me, "http://mysite.com/myapplication.application?id=1234-56-7890" seems to do the trick.
I know this is outdated, but I just wanted to provide the current solution.
To retrieve querystring parameters in a ClickOnce application:
Point the app/download/setup link to the application (with .application extension), not "setup.exe"
Add this function to your ClickOnce application to retrieve the querystring parameter collection:
private NameValueCollection GetQueryStringParameters()
{
NameValueCollection nameValueTable = new NameValueCollection();
if (ApplicationDeployment.IsNetworkDeployed)
{
string queryString = ApplicationDeployment.CurrentDeployment.ActivationUri.Query;
nameValueTable = HttpUtility.ParseQueryString(queryString);
}
return (nameValueTable);
}
Then to get a querystring param value:
var querystringParams = GetQueryStringParameters();
string param_value = querystringParams["param_name"];
Don't forget the Usings:
using System.Collections.Specialized;
using System.Deployment.Application;
using System.Web;
Source: https://learn.microsoft.com/en-us/visualstudio/deployment/how-to-retrieve-query-string-information-in-an-online-clickonce-application?view=vs-2019

Resources