tag:blogger.com,1999:blog-90534091169442278932024-03-13T18:03:42.945+00:00#region Epic WinWraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.comBlogger154125tag:blogger.com,1999:blog-9053409116944227893.post-57160500928016625322016-07-22T11:13:00.000+01:002016-07-22T11:13:36.640+01:00Set File Permissions so SQL can see external drivesIf you want to host your databases on an external USB hard disk, it may be required to set the file system permissions on the drive so SQL can see it.<br />
<br />
SQL uses a virtual account so its not always easy to set the permissions.
To do this, go into the security tab and add a new user. Change the Location to the Local Machine, then enter the following name MSSQL$[InstanceName]
<br />
<br />
<ol style="font-family: "Segoe UI", "Lucida Grande", Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 17.55px;">
<li><div style="line-height: 18px; padding-bottom: 15px;">
Using Windows Explorer, navigate to the file system location where the database files are stored. Right-click the file system folder, and then click<strong>Properties</strong>.</div>
</li>
<li><div style="line-height: 18px; padding-bottom: 15px;">
On the <strong>Security</strong> tab, click <strong>Edit</strong>, and then <strong>Add</strong>.</div>
</li>
<li><div style="line-height: 18px; padding-bottom: 15px;">
In the <strong>Select Users, Computer, Service Account, or Groups</strong> dialog box, click <strong>Locations</strong>, at the top of the location list, select your computer name, and then click <strong>OK</strong>.</div>
</li>
<li><div style="line-height: 18px; padding-bottom: 15px;">
In the <strong>Enter the object names to select</strong> box, type the name of the per-service SID name listed in the Books Online topic <a href="https://msdn.microsoft.com/en-us/library/ms143504.aspx" style="text-decoration: none;"><strong xmlns="http://www.w3.org/1999/xhtml">Configure Windows Service Accounts and Permissions</strong></a>. (For the Database Engine per service SID name, use <strong>NT SERVICE\MSSQLSERVER</strong> for a default instance, or<strong>NT SERVICE\MSSQL$InstanceName</strong> for a named instance.)</div>
</li>
<li><div style="line-height: 18px; padding-bottom: 15px;">
Click <strong>Check Names</strong> to validate the entry. (If the validation fails, it might advise you that the name was not found. When you click <strong>OK</strong>, a <strong>Multiple Names Found</strong> dialog box appears. Now select the per-service SID name, either <strong>MSSQLSERVER</strong> or <strong>NT SERVICE\MSSQL$InstanceName</strong>, and then click <strong>OK</strong>. Click <strong>OK</strong> again to return to the <strong>Permissions</strong> dialog box.)</div>
</li>
<li><div style="line-height: 18px; padding-bottom: 15px;">
In the <strong>Group or user</strong> names box, select the per-service SID name, and then in the <strong>Permissions for</strong> <name> box, select the <strong>Allow</strong> check box for<strong>Full control</strong>.</name></div>
</li>
<li><div style="line-height: 18px; padding-bottom: 15px;">
Click <strong>Apply</strong>, and then click <strong>OK</strong> twice to exit.</div>
</li>
</ol>
<div>
<span style="color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 13px; line-height: 18px;">https://msdn.microsoft.com/en-us/library/jj219062.aspx</span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 13px; line-height: 18px;"><br /></span></span></div>
<div>
<span style="color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 13px; line-height: 18px;"><br /></span></span></div>
<div class="separator" style="clear: both; text-align: center;">
<a href="https://4.bp.blogspot.com/-ION0ZrBc0ag/V5Hxguff2II/AAAAAAAAAcg/F2JHA1R6dUwCNkLpYxTNQdRE_kp3od6IQCLcB/s1600/SQL1.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="174" src="https://4.bp.blogspot.com/-ION0ZrBc0ag/V5Hxguff2II/AAAAAAAAAcg/F2JHA1R6dUwCNkLpYxTNQdRE_kp3od6IQCLcB/s320/SQL1.PNG" width="320" /></a></div>
<br />
<div class="separator" style="clear: both; text-align: center;">
<a href="https://1.bp.blogspot.com/-Q8zNd5nWRdI/V5HxhdhetVI/AAAAAAAAAck/irpNFQHEMNkhI2jFPw4eCqud4oobj3UhACLcB/s1600/SQL2.PNG" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" height="178" src="https://1.bp.blogspot.com/-Q8zNd5nWRdI/V5HxhdhetVI/AAAAAAAAAck/irpNFQHEMNkhI2jFPw4eCqud4oobj3UhACLcB/s320/SQL2.PNG" width="320" /></a></div>
<div>
<span style="color: #2a2a2a; font-family: "segoe ui" , "lucida grande" , "verdana" , "arial" , "helvetica" , sans-serif;"><span style="font-size: 13px; line-height: 18px;"><br /></span></span></div>
WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-75724029916959109392015-12-18T13:35:00.001+00:002015-12-18T13:35:07.025+00:00Great Solarized Themehttp://ethanschoonover.com/solarizedWraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-39606113807031956932015-01-27T09:42:00.000+00:002015-01-27T09:42:01.031+00:00Great article for finding memory leakshttp://www.codeproject.com/Articles/42721/Best-Practices-No-Detecting-NET-application-memoWraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-78465389145816379722014-04-28T13:06:00.001+01:002014-04-28T13:08:59.048+01:00How to expose DevExpress ClientSideEvents in a User Control<b>User Control:</b>
<br />
Markup:
<br />
<script class="brush: csharp" type="syntaxhighlighter">
<dx:ASPxDateEdit ID="ASPxDateEdit1" runat="server"></dx:ASPxDateEdit>
</script>
<br />
Code Behind:
<br />
<script class="brush: csharp" type="syntaxhighlighter">
[PersistenceMode(PersistenceMode.InnerProperty)]
public DateEditClientSideEvents ClientSideEvents { get { return ASPxDateEdit1.ClientSideEvents; } }
</script>
<br>
<b>Page:</b>
<br />
Markup:
<br />
<script class="brush: xml" type="syntaxhighlighter">
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<uc1:WebUserControl1 runat="server" ID="WebUserControl1">
<clientsideevents ValueChanged="function(s, e) { alert('test'); }" />
</uc1:WebUserControl1>
</form>
</body>
</html>
</script>
<br>
Code Behind:
<br>
<script class="brush: csharp" type="syntaxhighlighter">
public partial class Default : System.Web.UI.Page {
protected void Page_Load(object sender, EventArgs e) {
}
}
</script>WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-40373654199132417462013-09-09T14:32:00.002+01:002013-09-09T14:32:11.347+01:00Extension methods for rounding time up and down
<script class='brush: csharp' type='syntaxhighlighter'>
/// <summary>
/// Rounds time down
/// </summary>
/// <param name="dt">The time</param>
/// <param name="duration">The duration of rounding</param>
/// <returns>Date Time</returns>
public static DateTime RoundDown(this DateTime dt, TimeSpan duration)
{
try
{
return new DateTime((dt.Ticks / duration.Ticks) * duration.Ticks);
}
catch (Exception)
{
throw;
}
}
/// <summary>
/// Rounds time up
/// </summary>
/// <param name="dt">The time</param>
/// <param name="duration">The duration of rouding</param>
/// <returns>Date Time</returns>
public static DateTime RoundUp(this DateTime dt, TimeSpan duration)
{
try
{
return new DateTime(((dt.Ticks + duration.Ticks - 1) / duration.Ticks) * duration.Ticks);
}
catch (Exception)
{
throw;
}
}
</script>WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-34954031511535135062013-09-04T15:39:00.001+01:002013-09-04T15:39:52.254+01:00Here is a generic extension method to clamp values for any IComparable Type.
<script class='brush: csharp' type='syntaxhighlighter'>
/// <summary>
/// Clamps a value to a min and max value
/// </summary>
/// <typeparam name="T">The Type being clampled (must implement IComparable)</typeparam>
/// <param name="value">The Value being Clamped</param>
/// <param name="max">The Max Value Allowed</param>
/// <param name="min">The Min Value Allowed</param>
/// <returns>result as T</returns>
public static T Clamp<T>(this T value, T max, T min) where T : IComparable<T>
{
try
{
T result = value;
if (value.CompareTo(max) > 0)
result = max;
if (value.CompareTo(min) < 0)
result = min;
return result;
}
catch (Exception)
{
throw;
}
}
</script>
WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-4035005197639132672013-07-26T17:01:00.002+01:002013-07-26T17:01:23.139+01:00Select all / all on page checkbox ASPxGridViewhttp://www.devexpress.com/Support/Center/Example/Details/E1682WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-3458065204426372112013-07-15T13:47:00.002+01:002013-07-15T13:47:39.790+01:00Great way to stop session timeouthttp://weblogs.asp.net/stevewellens/archive/2009/06/09/ah-ah-ah-ah-staying-alive-staying-alive.aspxWraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-748587430285491092013-07-02T15:55:00.004+01:002013-07-02T15:57:38.754+01:00Remove Edit / Cancel links from ASPxGridView edit formAdd an Edit Form Template Replacement..
<script class='brush: xml' type='syntaxhighlighter'>
<dx:ASPxGridView ID="ASPxGridViewDefaults" runat="server" AutoGenerateColumns="False" EnableCallBacks="False" KeyFieldName="ObjectIdentifier" OnRowCommand="ASPxGridViewDefaults_RowCommand">
<Columns>
...
</Columns>
<SettingsBehavior AllowGroup="False" AllowSort="False" />
<SettingsPager Mode="ShowAllRecords">
</SettingsPager>
<Templates>
<EditForm>
<dx:ASPxGridViewTemplateReplacement runat="server" ReplacementType="EditFormEditors" />
</EditForm>
</Templates>
</dx:ASPxGridView>
</script>WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-12208622645957211782013-06-11T09:31:00.003+01:002013-06-11T10:26:19.073+01:00Add a print button for ReportViewer Reports in Google ChromeSet up your report viewer as follows:
<script class='brush: xml' type='syntaxhighlighter'>
<asp:Button ID="btnPrint" runat="server" Text="PRINT" Width="75px" UseSubmitBehavior="false" OnClientClick="printElement('ReportViewer_ReportViewer1'); return false;"></asp:Button>
<rv:ReportViewer ID="ReportViewer1" runat="server" Width="100%" Height="100%" AsyncRendering="false" SizeToReportContent="true">
</rv:ReportViewer>
</script>
<script class='brush: csharp' type='syntaxhighlighter'>
function printElement(elementIDString) {
var divToPrint = document.getElementById(elementIDString);
var newWin = window.open('', 'Print-Window');
newWin.document.open();
newWin.document.write('<html><body onload="window.print()">' + divToPrint.innerHTML + '</body></html>');
newWin.document.close();
return false;
}
</script>WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-63050673144115412262013-05-31T13:50:00.002+01:002013-05-31T13:59:02.443+01:00Sys.WebForms.PageRequestManagerServerErrorException: Input string was not in a correct format.IE 10 issue with Image buttons in update panel.
Replace the buttons with something other than an image buttonWraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-87776437875790689992013-05-29T11:21:00.000+01:002013-05-29T11:21:28.496+01:00How to add a filter results button to search items on click rather than automatically - ASPxComboBox DevExpress<script class='brush: xml' type='syntaxhighlighter'>
<dx:ASPxComboBox ID="ASPxComboBoxStockItem" runat="server" DropDownRows="10" EnableCallbackMode="True"
IncrementalFilteringMode="Contains" TextFormatString="{0} {1} {2}" ValueType="System.Int32"
Width="310px" OnItemRequestedByValue="ASPxComboBoxStockItem_ItemRequestedByValue"
OnItemsRequestedByFilterCondition="ASPxComboBoxStockItem_ItemsRequestedByFilterCondition"
ClientInstanceName="ASPxComboBoxStockItem" OnCallback="ASPxComboBoxStockItem_Callback" CallbackPageSize="10" IncrementalFilteringDelay="10000">
<ClientSideEvents ValueChanged="function(s, e) {
if (ASPxComboBoxStockItem.GetSelectedIndex() != -1)
{
ASPxCallbackPanelUnitsAndPrices.PerformCallback(ASPxComboBoxStockItem.GetValue().toString());
ASPxCallbackPanelNominalAccount.PerformCallback('StockItem,'+ASPxComboBoxStockItem.GetValue().toString());
ASPxCallbackPanelWarehouse.PerformCallback(ASPxComboBoxStockItem.GetValue().toString());
}
}" KeyDown="function(s, e) {
// 'Delete' button key code = 46
// 'Backspace' button key code = 8
if (e.htmlEvent.keyCode == 46)
{
s.SetSelectedIndex(-1);
ASPxComboBoxStockItem.SetSelectedIndex(-1);
}
if (e.htmlEvent.keyCode == 8)
{
s.SetSelectedIndex(-1);
ASPxComboBoxStockItem.SetSelectedIndex(-1);
}
}" EndCallback="function(s, e) {
s.SetValue(null);
}" ButtonClick="function(s, e) {
switch(e.buttonIndex)
{
//Filter button
case 0:
s.filterStrategy.Filtering()
s.ShowDropDown();
break;
//Clear button
case 1:
s.SetSelectedIndex(-1);
ASPxComboBoxStockItem.SetSelectedIndex(-1);
break;
default: return;
}
}" />
<Columns>
<dx:ListBoxColumn Caption="Item Code" Name="ItemCode" FieldName="Code" Width="120px" />
<dx:ListBoxColumn Caption="Name" Name="Name" FieldName="Name" Width="325px" />
<dx:ListBoxColumn Caption="Supplier Part No" Name="SupplierPartNo" FieldName="SupplierPartNo"
Width="110px" />
</Columns>
<Buttons>
<dx:EditButton ToolTip="Filter">
<Image Url="~/Content/Images/FindHS.png">
</Image>
</dx:EditButton>
<dx:EditButton ToolTip="Clear">
<Image Url="~/Content/Images/1385_Disable_16x16_72.png">
</Image>
</dx:EditButton>
</Buttons>
</dx:ASPxComboBox>
</script>WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-77432475049567327832013-05-14T12:00:00.001+01:002013-05-14T12:00:54.604+01:00Download a fileHow to transmit a file to a browser for download..
<script class='brush: csharp' type='syntaxhighlighter'>
//Clear response
Response.Clear();
//Dont buffer
Response.Buffer = false;
//Download file
Response.AddHeader("Content-Disposition", String.Format("attachment; filename={0}", this.CurrentFile.FileInfo.Name));
Response.TransmitFile(this.CurrentFile.FileInfo.FullName);
//End the response
Response.End();
</script>WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-1756819813694337822013-02-07T18:01:00.000+00:002013-02-07T18:05:00.680+00:00InstallShield Service install Error 1001Within the InstallShield full application:
Look at Tools->Options->.NET and check to see that you are using the correct version of InstallUtilLib.dll ( in the correct .net version folder)
<div class="separator" style="clear: both; text-align: center;">
<a href="http://2.bp.blogspot.com/-C6XGLxfZzYg/URPr11qB_xI/AAAAAAAAANc/-A7zVR2hE-8/s1600/InstallSheild.png" imageanchor="1" style="margin-left:1em; margin-right:1em"><img border="0" height="326" width="400" src="http://2.bp.blogspot.com/-C6XGLxfZzYg/URPr11qB_xI/AAAAAAAAANc/-A7zVR2hE-8/s400/InstallSheild.png" /></a></div>
WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com5tag:blogger.com,1999:blog-9053409116944227893.post-34353589234344665312013-02-07T17:08:00.002+00:002013-02-07T17:08:41.470+00:00Installshield log setupSetup.exe /v"/l*v \"c:\My Log Files\test.log\""WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-91438973592641395702013-02-06T13:22:00.001+00:002013-02-06T13:22:23.633+00:00Convert DataTable to CSV and download to client<script class='brush:csharp' type='syntaxhighlighter'>
DataTable dt = Objects.Database.BudgetEnquiry.GetBudgetEnquiryListToDataTable(base.CurrentSageDatabase, base.CurrentUser.UserID);
Response.Clear();
Response.ClearHeaders();
Response.ClearContent();
Response.ContentType = "application/octet-stream";
Response.BufferOutput = true;
Response.AddHeader("Content-disposition", "attachment;filename=BudgetData.csv");
string[] columnNames = dt.Columns.Cast<DataColumn>().
Select(column => column.ColumnName).
ToArray();
Response.Write(string.Join(",", columnNames));
Response.Write(Environment.NewLine);
foreach (DataRow row in dt.Rows)
{
for (int i = 0; i < dt.Columns.Count; i++)
{
Response.Write(row[i].ToString() + ",");
}
Response.Write(Environment.NewLine);
}
Response.Flush();
// Prevents any other content from being sent to the browser
Response.SuppressContent = true;
// Directs the thread to finish, bypassing additional processing
HttpContext.Current.ApplicationInstance.CompleteRequest();
</script>WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-67044494093214010002013-02-01T09:17:00.002+00:002013-02-01T09:17:13.322+00:00Virtual PC - Get Virtual PC's to see each otherIf you are using virtual PC and they cant see each other, try setting the network card to the card that is installed in the host machine ( not NAT, or Shared Networking )WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-47483423098089982812013-01-23T13:36:00.003+00:002013-01-23T13:43:06.602+00:00InstallShield. .net install class service not uninstalledIf you are using install shield, and uninstalling the application but a service is left it could be caused by the system thinking the dll's are shared between other applications.<br />
<br />
To resolve this, simply remove the entries relating to your application from the following registry key.<br />
<br />
<span style="background-color: white; font-family: 'Segoe UI', 'Lucida Grande', Verdana, Arial, Helvetica, sans-serif; font-size: 13px; line-height: 16px;">HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\SharedDlls</span><br />
<br />
This should then allow the service to install / uninstall naturally.<br />
<br />
Additionally, you need to check all of the components of the InstallShield install to make sure they are not set as 'Shared' This stops them from being uninstalled.WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-57636859122086478242013-01-23T13:25:00.003+00:002013-01-23T13:25:40.958+00:00Delete windows service from command linesc delete "servicename"<br />
<br />
The service name can be found by right clicking on the service in the services window, and checking the service name field.WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-47796022720292425082013-01-21T16:47:00.002+00:002013-01-21T16:47:33.566+00:00Install Shield ISDEV: error: 0This error can happen if there are readonly files in the install project directoryWraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-65441737672618952402013-01-21T15:09:00.003+00:002013-01-21T15:09:49.067+00:00Install Shield - Service install Project<p>
If you want to create an Install Shield project for an existing .net service installation project it can be achieved using the existing Installer class from the .net project.
</p>
<p>
After adding the files to the Is project, in components view click on the exe/dll that contains the .net installer class.
</p>
<p>
In the properties window in the .net Settings section there is a property called '.net Installer Class'. If you set this property to true, install shield will execute the actions that the existing Microsoft installer would have used.
</p>WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-86029333708718915322013-01-18T14:34:00.003+00:002013-01-18T14:37:44.617+00:00How to Use InstallShield XML Files Changes<p>
Forget the designer and how it tries to make you work, you need to think in terms of XPath queries to get to the element you're looking for. The tree view represents the XPath expression to find existing items, not a typical treeview of an XML file. Here are the steps I used to successfully manage my config file changes.
</p>
<p>
1. Create a component for your existing development XML file and include the XML file in it. Set all of the attributes for the file properly (key file, target location, etc.)
</p>
<p>
2. Switch to XML view and use the import wizard. Only import the keys you want to change
</p>
<p>
3. Once the wizard is done, select the file itself and set the XML File Destination to match the XML file you're modifying.
</p>
<p>
4. Change the search patterns for the keys you want to modify. For some reason, the IDE shows this as the Element Name - this is actually the XPath query to find the element. In my case, I have one key in my config for the database. The "Element Name" in XML changes view is 'add[@key="Database"]'. In other words, remove the 'value' part.
</p>
<p>
5. Delete anything in the attributes section that you aren't trying to change (in my case, the 'value' attribute is the only one I left)
</p>
<p>
6. Set the Value of your attribute as necessary (I use [SQLDATABASE] - my own database Property) and set the operation to Append Value.
</p>
<p>
7. Switch to advanced view and make sure that only "Update first matching element only" is checked (unless you want to replace multiple, identical elements - but then you have other fish to fry)
</p>
<p>
8. I don't know if this is strickly necessary but I'm a bit nutty when it comes to how clean my installs must be - I use the Direct Editor a lot trying to clean up the garbage that the wizards leave lying around. Go to Direct Editor and choose the ISXmlFile table, change the Component of your file to the Component that houses the XML file from step</p>
<p>
9. Now go back to component view and delete the extra, blank component that the XML changes wizard created.
</p>
<p>
Found at:
http://community.flexerasoftware.com/showthread.php?143739-XML-File-Changes-Anyone-have-this-working
</p>WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-89984209721273726582013-01-17T11:35:00.005+00:002013-01-17T11:37:00.336+00:00Installshield - Install rolled back when creating Virtual directory
<p>
Installation is Rolled-back while creating the VirtualDirectory?
</p>
<p>
Further exploration revealed that the Installation rollback happens while creating a mapping between the IIS Application and Physical path. There can be two reasons that the installation gets rolled-back while creating a mapping between IIS Application and Physical path.
</p>
<p>
1. If the web.config is in read only the installation will roll back as it can’t edit the file. But I am not attempting to explictly edit the web.config file while creating the virtual directory.
</p>
<p>
2. If you are trying to map the website to an empty folder then also it will rollback. A valid point:).. why do you want to create a website without any file?
</p>
<p>
So please make sure that the web.config file's read-only attribute is removed before bundling the file with the installer.
</p>
<p>
Note: The contents in this article is verified in InstallShield 2012 SP1 Premier Editions with Basic MSI Project.
</p>
<p>
Solution found and taken from http://installjournal.blogspot.co.uk/2012/11/installation-is-rolled-back-while.html
</p>WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-32387758132519380012012-12-28T11:06:00.000+00:002012-12-28T11:06:26.145+00:00Team Foundation Server The path is already mapped in workspaceThis problem can occur when trying to change the collection a project is mapped to.
Its to do with the TFS cache on the local machine.
You can resolve the error by deleting the cache files at:
<p>
%APPDATA%\Local\Microsoft\Team Foundation\4.0\Cache
</p>
If you are using an older version of team foundation server then change the version number to match.
WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0tag:blogger.com,1999:blog-9053409116944227893.post-28578119906950105872012-12-10T11:36:00.003+00:002012-12-10T11:38:08.806+00:00DevExpress how to validate all tabsseparate each page of controls by Validation Group.
<script class='brush: xml' type='syntaxhighlighter'>
<dx:ASPxButton ID="ASPxButtonSaveAndSubmit" runat="server" Text="Save & Submit" OnClick="ASPxButtonSaveAndSubmit_Click">
<ClientSideEvents Click="function(s, e) {
var processOnServer = false;
e.processOnServer = processOnServer;
ASPxPageControlHeader.SetActiveTab(ASPxPageControlHeader.GetTabByName('Company'));
var companyValid = ASPxClientEdit.ValidateGroup('Company');
if (!companyValid) return;
ASPxPageControlHeader.SetActiveTab(ASPxPageControlHeader.GetTabByName('Contacts'));
var contactsValid = ASPxClientEdit.ValidateGroup('Contacts');
if (!contactsValid) return;
ASPxPageControlHeader.SetActiveTab(ASPxPageControlHeader.GetTabByName('Trading'));
var tradingValid = ASPxClientEdit.ValidateGroup('Trading');
if (!tradingValid) return;
if( companyValid && contactsValid && tradingValid )
{
processOnServer = confirm('Are you sure you want to create this account?');
}
e.processOnServer = processOnServer;
}" />
</script>WraithNathhttp://www.blogger.com/profile/07606943913251109316noreply@blogger.com0