How to set write permission to a single file in WiX - wix

I have an MVC app and I need to set write permission to Everyone on a single file.
The file is generated on the fly during installation by a custom action script. The file itself is created inside the app folder.
I know the final path of the file, after the installation process
Online I've seen only examples for setting permission to folders and subfolders, none of them seemed to address my issue

Related

unable to include external files in a project

I have created the default play application in IntelliJ in directory P. I have over-written the default index.scala.html with my own html code. The html code refers to some css and js files which are outside the directory P. To include these external files, I added the directory of these files using project configuration settings.
My webpage doesn't load properly as the server returns 404 for the css and js files. What am I doing wrong?
When you added your directory using project structure, you only say:
Hey, IDEA, please consider this folder part of my project, consider
its contents source code and display it when I open my project.
However, when you deploy or run your app, you only deploy the usual folders to the server, which contain the resources which will be available for clients to access.
The external directory is not part of these directories and will not be deployed.
What you can do is to copy the file from the external directory as a part of your build process before deploying the application.
EDIT: Detailed answer here: What is intellij's build process for play applications

Windows VB.NET Application exe run as administrator

I created an application that is installed from the setup file which installs all the files required by the program. When I update the application, I can only share the exe files of the update application to the user and not the entire installation package/setup file(not possible due to constraints)(Reason: so that he can run the application with out me having to make a new installation package/setup file and user having to install from the setup file) I am unsuccessful in my attempts so far. Can any one suggest if this is possible or if I am doing something wrong?
P.S : I have added the manifest file with privilege of always working as an administrator with out which I am unable to run my base application ( Error : Access to the path c:/xxxx/Tnsnames.ora denied)
Manifest file is the answer.
Manifest file is a file in VB project which contains the information
about the contents of file distribution. It may contain checksum or
hash to verify that file is original and isn't modified in any way.
Modifying a file will change its checksum value.
You need to replace asInvoker with requireAdministrator or highestAvailable
Updated link:
Full tutorial

Where to place the program.exe.config file when creating a WIX installer

I'm creating a WIX installer for a C# application.
In the application I use System.Configuration.ConfigurationManager.AppSettings[Setting1] to get settings.
My question is, where must I place the program.exe.config file on the machine in order for it to work?
I can't place it with the program in ProgramFiles directory, since those files are read-only.
I tried:
Configuration config = ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.PerUserRoamingAndLocal);
config.AppSettings.Settings[Config1].Value = "Value1";
config.Save();
Unfortunately I don't know where it's looking.
Thanks your replies, Trevy
It should be in the same folder of the program.exe. Use wix to copy both program.exe and program.exe.config to the required folder.
If you need to edit the configuration file during the installation you will need to do it using a custom action in wix. Make sure you pass the file path to the custom action and write the code to read the configurations in that file and edit.
The problem isn't that the files there are readonly - the problem is that you are trying to update files in the Program Files folder with your config.Save, and you can't do that if you are a limited user, and you are always limited (even if you are admin) unless you elevate. The short answer is that:
If your app routinely updates files in restricted areas then it probably needs elevation, so give it an elevation manifest.
If however you require you app to be used by limited users and allow them to update that config file then don't install to Program Files. Choose User Appdata folder, for example. Windows is probably using your config file during program startup, so you can't separate it from the exe.
When I was creating an installer for my app, I found I couldn’t save my settings.
The reason is because the Program Files repository, from a practical point of view, is read-only (Applications should never run with elevated permissions). When installing a program, the only time we modify the MyApp.exe.config file is at installation/upgrade/repair time.
The config file has many sections. One of them is userSettings. This is where we store any data we need to modify during the lifetime of the application. When run for the first time, Windows creates a hidden file in the user’s AppData folder. That is why we can save user settings, even though the config file is in the same directory as the MyApp.exe
So the answer is, if we run into permission errors when trying to save our settings it means we are writing our settings to the wrong section of the config file. We need to place it in the userSettings section and nowhere else.
For convenience, Visual Studios has a settings editor (the settings tab of the properties page). It allows you to create strongly typed user and application settings. The generated class lets you save user settings, but not application settings for the above reasons.

Permissions for ALL APPLICATION PACKAGES issue

I have a config.txt file in my VS 2013 project. Here is its permissions for ALL APPLICATION PACKAGES :
When I get a setup.exe by compiling an InstallShield LE project inside my solution, and when I run setup.exe, I get this config.txt under Program Files with these permissions :
I want all permissions to be allowed after extracting setup.exe. How can I do that? Thanks
By default the ProgramFiles folder and all subdirectories and files have only Read and Read&Execute permissions for security purposes. So, all files which copies to this folder inherite these permissions.
To change file or folder permissions with help of InstallShield, you could refer to the approtiate documentation. Also it could be achived by launching different tools for working with permissions, like subinacl.exe, icacls.exe, etc with help of custom actions.
But, as mentioned Michael Urman in comments, it's bad idea to place config files with write access under ProgramFiles (and other system folders), because of possible security issues.
So, I also reccomend to refrain from using this logic and store these files in User profile folders.

Getting jQuery Error on using ezzeelfinder

Hi I am trying to use ezzeelfinder as file manager
I am getting the following error:
TypeError: jQuery(selector).elfinder is not a function
Query(selector).elfinder().elfinder("instance");
I am using the exact code from the Yii extension website. I do not know what is going wrong, I am using windows 7 with Apache (XAMPP)?
Continuing our discussion from previous ElFinder question let me try to explain more.
Can you look at what is inside elfinder.min.js file included from assets directory (you can use Firebug: Net tab > expand request of /assets/abcdef/elfinder.min.js > Response tab)? It wasn't a script (but some HTML with error) when I've reproduced a problem with such error. So if this JavaScript file is not included then there is no elfinder method extending jQuery and the error message you receive is fair.
Seems to me that this one is a permission issue. elfinder.min.js file cannot be published to assets directory for some reasons. Make sure that all permissions to elfinder.min.js file WITHIN extension's directory are granted. After granting the permissions to this file clean up assets directory and try again. At last, check whether the script has been really published to assets directory and has granted permissions there.
I don't know whether it will be helpful for you but I have an archive with demo files that can demonstrate extension's basic usage (made under Ubuntu though): http://ezze.org/yii/ezzeelfinderdemo.zip
Extract the contents of this archive to the root folder of Yii basic application created from command line using yiic script.