我試圖爲Visual Studio Installer項目創建一個自定義操作來修改配置文件的權限。自定義操作 - 錯誤1001:找不到文件myApp.InstallState
的Installer.cs如下:
public override void Commit(IDictionary savedState)
{
base.Commit(savedState);
// Get path of our installation (e.g. TARGETDIR)
//string configPath = System.IO.Path.GetDirectoryName(Context.Parameters["AssemblyPath"]) + @"\config.xml";
string configPath = @"C:\Program Files\Blueberry\Serial Number Reservation\config.xml";
// Get a FileSecurity object that represents the current security settings.
FileSecurity fSecurity = File.GetAccessControl(configPath);
//Get SID for 'Everyone' - WellKnownSidType works in non-english systems
SecurityIdentifier everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null);
// Add the FileSystemAccessRule to the security settings.
fSecurity.AddAccessRule(new FileSystemAccessRule(everyone, FileSystemRights.Modify | FileSystemRights.Synchronize, InheritanceFlags.ContainerInherit | InheritanceFlags.ObjectInherit, PropagationFlags.None, AccessControlType.Allow));
// Set the new access settings.
File.SetAccessControl(configPath, fSecurity);
}
public override void Install(IDictionary stateSaver)
{
base.Install(stateSaver);
}
public override void Rollback(IDictionary savedState)
{
base.Rollback(savedState);
}
public override void Uninstall(IDictionary savedState)
{
base.Uninstall(savedState);
}
然後,添加主輸出(Installer類=真)到安裝項目的自定義操作的提交部分。
當我運行安裝程序,我得到以下錯誤:
Error 1001: Could not find file 'c:\mypath\myapp.InstallState'
精練我發現的相似經歷的幾個例子網頁,但沒有提供的解決方案都爲我工作。
任何想法?
這是我的情況,在自定義操作屬性中,當我需要它執行時,名爲InstallerClass的屬性被設置爲True - 因此將其更改爲False爲我做了訣竅。 –
如果OP出現錯誤,並且更改InstallerClass屬性對我沒有任何影響 - 無論是在修復我的實際問題之前還是之後,這都是在我的CustomActionData值中修復缺少的引號。 – vapcguy