Tracking Installs with Inno Installer - inno-setup

I'm using the Inno installer for my application.
I've been trying to figure out how to track how many app installations I get. I've been using browser popup after install, but would like to do it with the installer rather than a popup.
Can't find and addons. So I'm wondering if anyone has done this.
Should I just stick with the popup?

You could always have your installer use curl
to make a call out to your webpage...
You could just drop the curl program in the temp folder for the install... execute the call to your page and then delete curl from the temp directory. Of course they could block they could block the call with a personal firewall but that is not any different then them blocking your popup. This would be hidden for the most part which is what I think you are looking for.
You could always write a pascal script right in innosetup to do the call utilizing the winhttp library
Or you could just write a vbscript and execute that with the cscript engine to do the same http call.
That should point you to at least 3 different options to do what you need.

Just in case you have not solved the issue I came across this post that will help. it is a script that will post data via http post
HTTP POST request in Inno Setup Script
hope this helps. i am planning to use is my self and i will post a comment to let you know if it worked out

Related

Installshield Suite Update URL prompt

Currently when i enter the Update URL and that is triggered by the Setup.exe application, the user has no choice but to download the update. There is no prompt to the user as IF they would like to perform the update first or not, they are simply forced to download the update when one is found. My exe is 430MB so i don't want them to be forced to download that if they don't want to. Is there a way to intercept the check and ONLY download/update the exe if the user answers YES to a prompt? I see in the /debuglog file that the URL is checked than immediately starts the download and displays the 'ISDownloadProgress' dialog. But also shows that the 'InstallationWelcome' dialog is shown as well even though it is not. It must be hidden somehow i guess.
The Update URL setting is best suited for a downloading setup launcher which is itself quite small. Since downloading setup launchers can be invalidated if the resources they fetch are moved or removed, it doesn't let the user choose whether to get the updated launcher.
Since this behavior is not currently optional, you could file an enhancement request with the support team, or you could write a wrapper that performs a similar check.

Troi plugin function not working in FileMaker WebDirect

For purposes of being able to select from multiple file from the computer or network, I am using the following script command which works great in native FileMaker 14:
Set Variable [$dosFN; value: TrFile_SelectFileDialog( " -AllowMultipleFiles" ; "Please select one or more files" ;)]
In testing to make sure this works, I am doing a custom dialog to display the value of $dosFN and an example that successfully comes back would show:
From drive as:
C:\Files\img1.jpg
C:\Files\img2.jpg
or from network as:
\\ACI-2008-01\Files\img1.jpg
\\ACI-2008-01\FIles\img2.jpg
What is not work is when I attempt the same thing in a webdirect environment which is only showing the following when I perform the same script without even a file selection dialog box:
$$-4222
So how can I possibly make this work as desired in a webdirect environment?
This is not possible. This call is supposed to display the select file dialog. The plug-in does this by calling a function from one of the system libraries. In Web Direct you work with the database via a browser. Behind the scenes FileMaker silently converts the layouts and scripts into something that can run in the browser (lots of HTML, CSS, and JavaScript). But it cannot convert all and this call is one of things it cannot convert. As a result the plug-in only runs on the FileMaker server in a completely different environment and has no way to make a system call on another computer.
You may have better luck with FileMaker's own Insert File script step. It seems to be compatible with Web Direct. It cannot select multiple files though. (Also, other plug-in functions may still work in Web Direct but keep in mind that they actually run on the server, not the computer that runs the browser.)
The latest version of Troi file seems to be webdirect compatible, but it has to be installed on the FileMaker server as a server-side plugin. In any case check their documentation first, as it is usually quite detailed and if it does not help, you might get in touch with their support.
From how I understand it, the plug-in is running server side and has no way to display an interface on the client side (web browser). I do not believe there is a way to do what you are trying to do with Troi File, but you may just need to contact Troi.

Opening a website automatically using secure code

I want to open a website(say www.google.com) automatically whenever I am logon. This can be achieved through batch script and VBA macros but it can not be implemented on organisational level due to security concerns.
Is there any secure way to open a particular website using some piece of code.
Please let me know. Thanks in advance.
Regards,
Shrikant Salunke
There are lots of ways to do this, but I'm not sure exactly when you mean by "whenever I am logon".
Basically, if you want the most portable, multilingual way to open a web page with a program you are going to be passing a shell command that looks like this (following your example)
open https://www.google.com
This will open the specified URL (I think it must be a complete URL - including scheme) on the default browser.
Now the "when I am logon" part is what could make things complicated.
If by "when I am logon" you mean whenever you open your browser, then you don't even need to do this you can just reset your browser's homepage.
If you mean whenever you logon to your proxy, you just have to make sure that the first proxy request you send contains the correct request URI. In the case of google the correct URI would be google.com:443. The URI will have the format <hostname>:<portnumber>. The default HTTPS port number is 443. The default HTTP port number is 80.
If you mean whenever you logon to your system then you just need to execute the command open https://www.google.com within a login shell script. Login scripts are system dependent but you may refer to this post if you use a Unix-like or Posix compliant OS. If you use Windows I don't know how to help you but I'm sure there's a way to do it.
If you mean whenever you log into some program you wrote then things get really easy. You just have to make a call to that open command. Almost every language has a built in method for interacting with a shell. You just have to find that method in whatever platform you're using.
I honestly don't know if this will be helpful but good luck!
Edit
How to Run a Batch Shell Script Securely
What you need to do is run the script with a different trustlevel. Since you're using Batch you can do this by executing your script using the runas command (docs). This command allows you to adjust the trustlevel under which the script is executed without changing users. By changing the privileges of the executable, you can prevent it doing anything malicious. All it needs is enough "trust" to execute the open command.
If you need this fully automated throughout your organization, you can wrap your Batch file in a second Batch file that will call the runas command. This wrapper script will not run with reduced privileges but it also won't interact with the internet so you don't have to worry about it as much. You would be able to execute the wrapper script as a login script, and then everything should work.
Honestly I'm not a Windows person but I hope this helps!

How to execute a setup from an application to update it?

I'am currently writing an application that has to search on a web site if an update exists for this application. If it is the case the application download a setup file (created with inosetup) and then execute it.
My application is written in C++. And I do not arrive to do this process. I'am trying to call the setup using system(). If the command is system("mysetup") I cannot obtain what I want because the setup cannot replace the exe (currently running). So, I have tried to use system("cmd /C mysetup"), system("cmd/C start /min mysetup"), system ("cmd /C start /min /separate mysetup") without success. In these cases, the fact to stop the application also stop the setup. So I suppose that the setup is considered as a child process.
I have seen in some posts that it might be possible to use execcl(). But this function is in unistd.h. And this library is a little bit to specific for my needs (I need to be able to run on virtualized windows).
So do you have a way to do what I want?
Thanks for your help
OK,
A colleague to me gave me the solution. As we are using QT a QProcess::startDetached does exactly what I want.

Run a vbscript under an IIS application

I have a vbs file that runs fine and I want to run it under an IIS7 application name. Can this be done? If so, how?
thanks
You could look under "Handler Mappings" in IIS and add one similar to ASP which is how I used to run VBScript on the server side years ago. This does imply that the file is on a web server and you are OK with HTML output of the result.
Just for fun, I was wondering how to do this. I found an article on the Microsoft support site which told me this was possible at one time. As of IIS 7.5 this is even easier than the article suggests. You simply need to create the mapping in IIS:
Steps
Go to the IIS configuration and select the site you'd like to use
VBS files with.
Go to the Handler Mappings configuration for that site.
Click Add Script Map... on the right hand side.
Set the Request Path to *.vbs
Set the Executable to "C:\Windows\System32\cscript.exe" //NOLOGO %s %s
Set the Name to something you'll remember if you need to.
Restart IIS (possibly optional but I did this)
Then, test it with a script such as the following:
WScript.Echo "Content-Type: text/html"
WScript.Echo
WScript.Echo "If you see this, it worked."
Save it as test.vbs in your site and go to the URL to see the results. Every script used this way must begin output with the first two lines of this script or IIS will not use it.
Note: I also have the CGI (from the Windows installation disk) and Fast-CGI (from the Windows download center) modules installed. I'm not sure whether either of these are actually needed though.

Resources