Guest x64@favorite.my Posted November 9, 2008 Posted November 9, 2008 I am writing an MSI installation package which needs to give Users access to win.ini and _default.pif, and further to overwrite _default.pif with a new file. Both of these are in the system root directory which is usually c:\windows The code I have come up with is; takeown /A /F %systemroot%\win.ini takeown /A /F %systemroot%\_default.pif icacls %systemroot%\_default.pif /grant Users:F icacls %systemroot%\win.ini /grant Users:F This works for Vista. However \windows\_default.pif is a windows protected file so when the installer tries to write to it, it fails and the original file remains in place. How can I get around windows file protection so my installer can write a new _default.pif file? Alternatively how can I edit the _default.pif file in the MSI install so the "close window on exit" checkbox gets unchecked, which is what I am trying to achieve? Next question. How can I differentiate between XP and Vista in my batch file / command script? I can find no environment variable to tell me which version of Windows is running, although there is a ver command to tell the user the version number. Can I pipe the output of the ver command somehow to get the version number, how would I do this, and is there a simpler way using a return code from a small C program or something? Thanks very much for answers. Sorry about the mega crosspost but I really need to find some answers to these questions. Quote
Guest x64@favorite.my Posted November 10, 2008 Posted November 10, 2008 I think the file _default.pif cannot be overwritten by my MSI because it is under Windows File Protection. Even if I delete the file the MSI still cannot write a new _default.pif Is there any way around this? On Sun, 09 Nov 2008 20:19:05 +0000, x64@favorite.my wrote: <span style="color:blue"> >I am writing an MSI installation package which needs to give Users >access to win.ini and _default.pif, and further to overwrite >_default.pif with a new file. Both of these are in the system root >directory which is usually c:windows > >The code I have come up with is; > >takeown /A /F %systemroot%win.ini > >takeown /A /F %systemroot%_default.pif > >icacls %systemroot%_default.pif /grant Users:F > >icacls %systemroot%win.ini /grant Users:F > >This works for Vista. However windows_default.pif is a windows >protected file so when the installer tries to write to it, it fails >and the original file remains in place. How can I get around windows >file protection so my installer can write a new _default.pif file? >Alternatively how can I edit the _default.pif file in the MSI install >so the "close window on exit" checkbox gets unchecked, which is what I >am trying to achieve? > >Next question. How can I differentiate between XP and Vista in my >batch file / command script? I can find no environment variable to >tell me which version of Windows is running, although there is a ver >command to tell the user the version number. Can I pipe the output of >the ver command somehow to get the version number, how would I do >this, and is there a simpler way using a return code from a small C >program or something? > >Thanks very much for answers. Sorry about the mega crosspost but I >really need to find some answers to these questions.</span> Quote
Guest x64@favorite.my Posted November 11, 2008 Posted November 11, 2008 I do the following; takeown /A /F C:\Windows icacls C:\Windows /grant Users:F /inheritance:e takeown /A /F %systemroot%\win.ini takeown /A /F %systemroot%\_default.pif icacls %systemroot%\win.ini /grant Users:F icacls %systemroot%\_default.pif /grant Users:F But my MSI install package still does not overwrite _default.pif. However I can use "copy" command to overwrite _default.pif. How do I get MSI install package to overwrite the file, what do I need to do? I could perhaps install _default.pif in some other directory and issue a "copy" command but that would be a roundabout and indirect way of doing it. Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.