I have MSI's in english, german and a MST transform file for german installer.
Now in burn boostrapper how to bundle these MSI's and MST's so that appropriate localized MST is applied to the msi during runtime ?
<Bundle ....>
<Chain>
<PackageGroupRef Id='Netfx4Full' />
<PackageGroupRef Id='SQLServerCompact4.0' />
<MsiPackage Id="EN_MSI_x86"
SourceFile="$(var.MsiDir_x86)MyApp_x86.msi"
Compressed="yes" EnableFeatureSelection="no" Vital="yes" Visible="no"
InstallCondition="NOT VersionNT64">
<MsiProperty Name="INSTALL_LANG" Value="1033" />
<MsiProperty Name="TRANSFORMS" Value="[SystemLanguageID].mst"/>
<Payload Id="1031.mst" Compressed="yes" Name="de-localization" SourceFile="$(var.MsiDir_x86)1031.mst" />
</MsiPackage>
</Chain>
</Bundle>
Is this the right way to include MST in the bundle ?
I guess the error is in the payload attributes. If you swap the values of Id an Name it should work. The msi installer looks for a file named 1031.mst but you named it de-localization.
Related
I'm writing a DNN 9 custom module using ASP.NET MVC. My development site is setup at dnndev.me and the module is located in C:\websites\dnndev.me\DesktopModules\MVC|MyModule
My DNN manifest is as follows:
<dotnetnuke type="Package" version="5.0">
<packages>
<package name="Onboarding" type="Module" version="00.00.05">
<friendlyName>Onboarding</friendlyName>
<description>Onboarding</description>
<iconFile>~/Icons/Sigma/Software_32X32_Standard.png</iconFile>
<owner>
<name>example.com</name>
<organization>example.com</organization>
<url>https://example.com/</url>
<email>info#example.com</email>
</owner>
<license src="License.txt"></license>
<releaseNotes src="ReleaseNotes.txt"></releaseNotes>
<dependencies>
<dependency type="CoreVersion">08.00.00</dependency>
</dependencies>
<components>
<component type="Script">
<scripts>
<basePath>DesktopModules\MVC\MyModule</basePath>
<script type="Install">
<path>Providers\DataProviders\SqlDataProvider</path>
<name>00.00.01.SqlDataProvider</name>
<version>00.00.01</version>
</script>
<script type="UnInstall">
<path>Providers\DataProviders\SqlDataProvider</path>
<name>Uninstall.SqlDataProvider</name>
<version>00.00.01</version>
</script>
</scripts>
</component>
<component type="ResourceFile">
<resourceFiles>
<basePath>DesktopModules/MVC/MyModule</basePath>
<resourceFile>
<name>Resources.zip</name>
</resourceFile>
</resourceFiles>
</component>
<component type="Module">
<desktopModule>
<moduleName>Onboarding</moduleName>
<foldername>Onboarding</foldername>
<businessControllerClass>MySite.Modules.Onboarding.Components.FeatureController</businessControllerClass>
<supportedFeatures />
<moduleDefinitions>
<moduleDefinition>
<friendlyName>Onboarding</friendlyName>
<defaultCacheTime>0</defaultCacheTime>
<moduleControls>
<moduleControl>
<controlKey />
<controlSrc>Example.Modules.Onboarding.Controllers/Onboarding/Index.mvc</controlSrc>
<supportsPartialRendering>False</supportsPartialRendering>
<controlTitle />
<controlType>View</controlType>
<iconFile />
<helpUrl />
<viewOrder>0</viewOrder>
</moduleControl>
<moduleControl>
<controlKey>Edit</controlKey>
<controlSrc>Example.Modules.Onboarding.Controllers/Onboarding/Edit.mvc</controlSrc>
<supportsPartialRendering>False</supportsPartialRendering>
<controlTitle>Edit Onboarding Records</controlTitle>
<controlType>Edit</controlType>
<iconFile />
<helpUrl />
<viewOrder>0</viewOrder>
<supportsPopUps>True</supportsPopUps>
</moduleControl>
<moduleControl>
<controlKey>Settings</controlKey>
<controlSrc>Example.Modules.Onboarding.Controllers/Settings/Settings.mvc</controlSrc>
<supportsPartialRendering>False</supportsPartialRendering>
<controlTitle>Onboarding Settings</controlTitle>
<controlType>Edit</controlType>
<iconFile />
<helpUrl />
<viewOrder>0</viewOrder>
</moduleControl>
</moduleControls>
</moduleDefinition>
</moduleDefinitions>
</desktopModule>
</component>
<component type="Assembly">
<assemblies>
<assembly>
<name>Onboarding.dll</name>
<path>bin</path>
</assembly>
<assembly>
<name>RestSharp.dll</name>
<path>bin</path>
</assembly>
<assembly>
<name>EntityFramework.dll</name>
<path>bin</path>
</assembly>
<assembly>
<name>EntityFramework.SqlServer.dll</name>
<path>bin</path>
</assembly>
<assembly>
<name>Newtonsoft.Json.dll</name>
<path>bin</path>
</assembly>
</assemblies>
</component>
</components>
</package>
The module won't install despite ensuring that all assemblies are in the bin folder under dnndev.me.
What must I do to rectify this issue?
If you built your MVC module using the Chris Hammond template, you will have the msbuild process for packaging the module that is driven by the file: BuildScripts/ModulePackage.targets
In that file, there is a line of code:
<Copy SourceFiles="$(MSBuildDnnBinPath)\$(AssemblyName).dll" DestinationFolder="$(MSBuildProjectDirectory)\Package\bin"/>
That is responsible for picking up the module's assembly in your local install's bin folder and copying it to the package folder that gets zipped. There is no automated step for including other custom dlls in there. This line occurs twice: once for the 'source' package and the other for the 'install' package.
Most of the time, I will just update this script to include my dependencies. Example:
<Copy SourceFiles="$(MSBuildDnnBinPath)\$(AssemblyName).dll" DestinationFolder="$(MSBuildProjectDirectory)\Package\bin"/>
<Copy SourceFiles="$(MSBuildDnnBinPath)\Onboarding.dll" DestinationFolder="$(MSBuildProjectDirectory)\Package\bin"/>
This isn't the most elegant solution as you need to hardcode your dependencies in the build script. But it works for simple modules. If you know a little about msbuild, you could use a copy step that includes all dlls in a folder and move your dependencies to a single folder and include all of them from the folder.
The way you do it means that the assemblies are included in your install package. To test if the assembies are installed (in the bin folder), you need to add a dependency, but there is no dependency to an assembly containing a version number or something alike. The trick is to add a dependency to a type defined in the assembly, e.g.
<dependency type="Type">DocumentFormat.OpenXml.Extensions.WorksheetWriter</dependency>
AFAIR it is important that the value of the type attribute is case-sensitive, so it has to be "Type", and not "type" or "TYPE".
I have a WPF app that uses log4net. When I run it in Visual Studio, the log file is created in the Debug or Release folder as expected.
However, when I create an installer and run the installed app, the log file is not created. I added the following lines to the code...
string logFilePath = ((Hierarchy)LogManager.GetRepository())
.Root.Appenders.OfType<FileAppender>()
.FirstOrDefault()?.File;
using (StreamWriter sw = new StreamWriter(#"d:\log.log")) {
sw.WriteLine("Log file: " + logFilePath);
}
...to enable me to check that the log file was being written in the location I expected. It showed me that the log file was supposed to be written to C:\Program Files (x86)\Physio Diary\PhysioDiaryClient.log which is what I expected.
However, the file doesn't exist. Any idea why?
Here is the top of the App.config file...
<?xml version="1.0"
encoding="utf-8"?>
<configuration>
<configSections>
<section name="log4net"
type="log4net.Config.Log4NetConfigurationSectionHandler,Log4net" />
</configSections>
<log4net>
<appender name="RollingFileAppender"
type="log4net.Appender.RollingFileAppender">
<param name="File"
value="PhysioDiaryClient.log" />
<appendToFile value="true" />
<rollingStyle value="Size" />
<maxSizeRollBackups value="2" />
<maximumFileSize value="1MB" />
<staticLogFileName value="true" />
<layout type="log4net.Layout.PatternLayout">
<conversionPattern value="%date [%thread] %-7level %logger - %message%newline%exception" />
</layout>
</appender>
<root>
<level value="DEBUG" />
<appender-ref ref="RollingFileAppender" />
</root>
</log4net>
The bottom of the file looks like this...
<startup>
<supportedRuntime version="v4.0"
sku=".NETFramework,Version=v4.5.2" />
</startup>
</configuration>
The bits in between are all to do with the WCF services that the app uses.
Anyone any ideas?
Edit: As a test, I tried hard-coding the log file path in App.config to my D: drive (so it's hard-coded, and no question of a permissions issue), but the file still wasn't created.
Thanks to #dymanoid for pointing me in the right direction. The log4net docs are a bit weak in this area, but I found this answer that pointed out that you can use normal environment variables in the config file.
With the aid of this list of environment variables, I ended up with the following...
<param name="File"
value="${LOCALAPPDATA}\Physio Diary\PhysioDiaryClient.log" />
This correctly write the file to C:\Users\MyUsername\AppData\Local\Physio Diary\PhysioDiaryClient.log
Hope this helps someone.
I am new to Wix Installer. I have a requirement where I have to provide credentials for SQL Server login and run a script from a specific path.
I am not getting what's going wrong.The project is build successfully and .msi is created. After running it I get the following Error:
Error 26204. Error -2147217900: failed to execute SQL string, error detail: Incorrect syntax near '»'., SQL key: CreateUpsizingDatabase SQL string: print convert(varchar(25),GetDate(),121) + ' Executing file: SqlTest.sql'
My Sql Script File is as below:
print convert(varchar(25),GetDate(),121) + ' Executing file: SqlTest.sql'
Below is My code:
<?xml version="1.0" encoding="UTF-8"?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi"
xmlns:util="http://schemas.microsoft.com/wix/UtilExtension"
xmlns:sql="http://schemas.microsoft.com/wix/SqlExtension">
<Product Id="*" Name="SqlTest" Language="1033" Version="1.0.0.0" Manufacturer="BLRSCCMCAS01" UpgradeCode="0931a445-07bf-4494-b130-a1f96155021f">
<Package InstallerVersion="200" Compressed="yes" InstallScope="perMachine" />
<MajorUpgrade DowngradeErrorMessage="A newer version of [ProductName] is already installed." />
<MediaTemplate />
<Feature Id="ProductFeature" Title="SqlTest" Level="1">
<ComponentGroupRef Id="ProductComponents" />
</Feature>
<Binary Id="CreateUpsizingDatabase" SourceFile="C:\Temp\SqlTest.sql" />
<util:User Id="SQLUser" Name="[User]" Password="[Password]" />
<sql:SqlDatabase Id="SqlDatabase" Database="[MyDb]" Server="[Server]" User="SQLUser" />
</Product>
<Fragment>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLFOLDER" Name="SqlTest" />
</Directory>
</Directory>
</Fragment>
<Fragment>
<ComponentGroup Id="ProductComponents" Directory="INSTALLFOLDER">
<Component Id="SqlComponent" Guid="15CCE46E-8EA5-42CA-80C5-AC3DB30A9716">
<sql:SqlScript Id="CreateDatabases" SqlDb="SqlDatabase" ExecuteOnInstall="yes" BinaryKey="CreateUpsizingDatabase" />
<CreateFolder/>
</Component>
</ComponentGroup>
</Fragment>
</Wix>
It looks like you have a UTF8 BOM () in there. Try saving the file as "Unicode (UTF8 Without signature)" using the advanced save options in visual studio.
I got the same error, UTF8 with or without signature both failed.
I think the chars in our script string cause the problem (in my case, I included some chinese chars).
I tried to re-generated sql script from sql server, and save this file in ANSI format. It works!
And i did some query, the chinese chars are correct in sql server.
an article you might want to refer: http://windows-installer-xml-wix-toolset.687559.n2.nabble.com/Error-executing-sql-scripts-with-WIX-td1488703.html
In application there is no separate dependencies for 32 or 64 bit. It's a common WPF application and i'm not using any third party .dll. If i pull the release folder files and run in it on Win 8.1 64 bit it's working.
When i tried to run the application after the installation,the application is not launching , no error message and even i tried to launch it from command prompt..no error message.
I'm using Wix 3.8 to make the installer.
Here are the steps what i did so for:
VS 2012 Configuration manager:
Debug:
Release:
PrintUtility is the exe of the applicaiton.
PrintUtilityExe is the BootStrapper of WIX.
SetupProjectInstaller is the .msi installer of WIX.
When i made the installer through WIX: SetupProjectInstaller.msiand installed it on Win 64 bit 8.1, the application is not launching.
Here is the wix code: Product.wxs
<?xml version="1.0"?>
<?define ProductVersion = "1.0.0.0"?>
<?define ProductUpgradeCode = "9fe100b5-8486-46c4-b3ab-15da1931ba4d"?>
<?define SourceDir = "C:\Users\krangaraj\Documents\Visual Studio 2012\Projects\TestPrintUtility\TestPrintUtility\bin\x86\Release" ?>
<?define SourceDirImages = "C:\Users\krangaraj\Documents\Visual Studio 2012\Projects\TestPrintUtility\TestPrintUtility\bin\x86\Release\Res" ?>
<Wix xmlns="http://schemas.microsoft.com/wix/2006/wi">
<Product Id="*" UpgradeCode="$(var.ProductUpgradeCode)"
Name="TestPrint Utility" Version="$(var.ProductVersion)" Manufacturer="TTT" Language="1033" >
<Package InstallerVersion="200" Compressed="yes" Comments="Windows Installer Package" InstallScope="perMachine"/>
<Media Id="1" Cabinet="TestPrintUtility.cab" EmbedCab="yes"/>
<Icon Id="ProductIcon" SourceFile="TestPrintInstaller.ico"/>
<Icon Id="TestPrintInstaller.ico" SourceFile="TestPrintInstaller.ico"/>
<Property Id="ARPPRODUCTICON" Value="TestPrintInstaller.ico" />
<Upgrade Id="$(var.ProductUpgradeCode)">
<UpgradeVersion Minimum="$(var.ProductVersion)" OnlyDetect="yes" Property="NEWERVERSIONDETECTED"/>
<UpgradeVersion Minimum="0.0.0" Maximum="$(var.ProductVersion)" IncludeMinimum="yes" IncludeMaximum="no"
Property="OLDERVERSIONBEINGUPGRADED"/>
</Upgrade>
<Condition Message="A newer version of this software is already installed.">NOT NEWERVERSIONDETECTED</Condition>
<Directory Id="TARGETDIR" Name="SourceDir">
<Directory Id="ProgramFilesFolder">
<Directory Id="INSTALLDIR" Name="TestPrint Utility">
<Component Id="TestPrintUtility" Guid="{47D7C69E-81C2-4FD6-B77B-790FBF5F7B39}">
<File Id="TestPrintUtility.exe" Source="$(var.SourceDir)\TestPrintUtility.exe" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="bGround.png" Guid="{64AE1DAD-2502-4171-AF80-A153D59D8996}">
<File Id="bGround.png" Source="$(var.SourceDir)\bGround.png" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="cspstat.dll" Guid="{69CAD367-A9D1-46E7-B8BA-CF839D034175}">
<File Id="cspstat.dll" Source="$(var.SourceDir)\cspstat.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="TTT.I18N.dll" Guid="{B20D2708-0422-4617-815F-C9143A75833F}">
<File Id="TTT.I18N.dll" Source="$(var.SourceDir)\TTT.I18N.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="TTTDongleManage.dll" Guid="{B4A38CE6-C34E-4391-9DCA-A142DB3BCA66}">
<File Id="TTTDongleManage.dll" Source="$(var.SourceDir)\TTTDongleManage.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="HtmlAgilityPack.dll" Guid="{D63578BD-902A-4899-A0BF-C82146117B03}">
<File Id="HtmlAgilityPack.dll" Source="$(var.SourceDir)\HtmlAgilityPack.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="HtmlAgilityPack.pdb" Guid="{8CD7A15D-C92E-4F41-A097-8A06CFB01774}">
<File Id="HtmlAgilityPack.pdb" Source="$(var.SourceDir)\HtmlAgilityPack.pdb" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="HtmlAgilityPack.xml" Guid="{95B2ABCB-3E8C-4824-850C-7C3D29FB814D}">
<File Id="HtmlAgilityPack.xml" Source="$(var.SourceDir)\HtmlAgilityPack.xml" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="KGDLLV10.dll" Guid="{AB144098-3E3E-42AD-94A4-ED8F40E93915}">
<File Id="KGDLLV10.dll" Source="$(var.SourceDir)\KGDLLV10.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="Microsoft.Expression.Interactions.dll" Guid="{1EEF5A4C-B0AF-4528-8F57-80A8A62743EB}">
<File Id="Microsoft.Expression.Interactions.dll" Source="$(var.SourceDir)\Microsoft.Expression.Interactions.dll" KeyPath="yes" Checksum="yes"/>
</Component>
<Component Id="Microsoft.Expression.Interactions.xml" Guid="{8D772282-693B-4B4F-8D50-BC0A74F694E1}">
<File Id="Microsoft.Expression.Interactions.xml" Source="$(var.SourceDir)\Microsoft.Expression.Interactions.xml" KeyPath="yes" Checksum="yes"/>
</Component>
</Directory>
</Directory>
<Directory Id="ProgramMenuFolder">
<Directory Id="ProgramMenuSubfolder" Name="TestPrint Utility">
<Component Id="ApplicationShortcuts" Guid="12345678-1234-1234-1234-333333333333">
<Shortcut Id="ApplicationShortcut1" Name="TestPrint Utility" Description="TestPrint Utility"
Target="[INSTALLDIR]TestPrintUtility.exe" WorkingDirectory="INSTALLDIR"/>
<RegistryValue Root="HKCU" Key="Software\TTT PIE\TestPrintUtility"
Name="installed" Type="integer" Value="1" KeyPath="yes"/>
<RemoveFolder Id="ProgramMenuSubfolder" On="uninstall"/>
</Component>
</Directory>
</Directory>
<Directory Id="DesktopFolder" Name="Desktop">
<Component Id="ApplicationShortcutDesktop" Guid="{C80E4373-F31A-4A2E-90A5-F3E2EFD149AA}">
<Shortcut Id="ApplicationDesktopShortcut"
Name="TestPrint Utility"
Description="TestPrint Utility"
Target="[INSTALLDIR]TestPrintUtility.exe"
WorkingDirectory="INSTALLDIR"/>
<RemoveFolder Id="DesktopFolder" On="uninstall"/>
<RegistryValue
Root="HKCU"
Key="Software/MyAppName"
Name="installed"
Type="integer"
Value="1"
KeyPath="yes"/>
</Component>
</Directory>
</Directory>
<InstallExecuteSequence>
<RemoveExistingProducts After="InstallValidate"/>
</InstallExecuteSequence>
<Feature Id="DefaultFeature" Level="1">
<ComponentRef Id="TestPrintUtility"/>
<ComponentRef Id="bGround.png"/>
<ComponentRef Id="cspstat.dll"/>
<ComponentRef Id="TTT.I18N.dll"/>
<ComponentRef Id="TTTDongleManage.dll"/>
<ComponentRef Id="HtmlAgilityPack.dll"/>
<ComponentRef Id="HtmlAgilityPack.pdb"/>
<ComponentRef Id="HtmlAgilityPack.xml"/>
<ComponentRef Id="KGDLLV10.dll"/>
<ComponentRef Id="Microsoft.Expression.Interactions.dll"/>
<ComponentRef Id="Microsoft.Expression.Interactions.xml"/>
</Feature>
</Product>
</Wix>
Note: To minimize it i removed some part of comportment code from the above lines
Then i used this final piece code to make the final .msi:
set WIX_BIN=C:\Program Files\WiX Toolset v3.8\bin\
echo Wix Toolset Bin Path: %WIX_BIN%
"%WIX_BIN%candle.exe" Product.wxs -ext WixUtilExtension
if exist Product.wixobj ("%WIX_BIN%light.exe" -out Product.msi Product.wixobj -ext WixUIExtension -ext WixUtilExtension)
Here is the SetupProjectInstaller.wixproj code:
<?xml version="1.0" encoding="utf-8"?>
<Project ToolsVersion="4.0" DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<PropertyGroup>
<Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration>
<Platform Condition=" '$(Platform)' == '' ">x86</Platform>
<ProductVersion>3.8</ProductVersion>
<ProjectGuid>f5d8db53-64db-41d7-9cf9-fb9a151fd45b</ProjectGuid>
<SchemaVersion>2.0</SchemaVersion>
<OutputName>SetupProjectInstaller</OutputName>
<OutputType>Package</OutputType>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' AND '$(MSBuildExtensionsPath32)' != '' ">$(MSBuildExtensionsPath32)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
<WixTargetsPath Condition=" '$(WixTargetsPath)' == '' ">$(MSBuildExtensionsPath)\Microsoft\WiX\v3.x\Wix.targets</WixTargetsPath>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
<DefineConstants>Debug</DefineConstants>
</PropertyGroup>
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|x86' ">
<OutputPath>bin\$(Configuration)\</OutputPath>
<IntermediateOutputPath>obj\$(Configuration)\</IntermediateOutputPath>
</PropertyGroup>
<ItemGroup>
<Compile Include="Product.wxs" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\Utility\.Design\.Design.csproj">
<Name>.Design</Name>
<Project>{58a00d29-5dc5-4b9e-a18d-6fe6d1f0c1cf}</Project>
<Private>True</Private>
<DoNotHarvest>True</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
<ProjectReference Include="..\Utility\Utility.csproj">
<Name>Utility</Name>
<Project>{7316ff68-d2ba-4b9a-8d92-15e93ac7bc4e}</Project>
<Private>True</Private>
<DoNotHarvest>True</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
<ProjectReference Include="..\Utility\WPFSpark\WPFSpark.csproj">
<Name>WPFSpark</Name>
<Project>{98be1309-ceb4-45ee-b4ad-28baf0570fab}</Project>
<Private>True</Private>
<DoNotHarvest>True</DoNotHarvest>
<RefProjectOutputGroups>Binaries;Content;Satellites</RefProjectOutputGroups>
<RefTargetDir>INSTALLFOLDER</RefTargetDir>
</ProjectReference>
</ItemGroup>
<Import Project="$(WixTargetsPath)" />
<!--
To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Wix.targets.
<Target Name="BeforeBuild">
</Target>
<Target Name="AfterBuild">
</Target>
-->
</Project>
Please help me that how can i make it work on Win 64 bit OS. Thank you very much.
SS:
![enter image description here][3]
![enter image description here][4]
![enter image description here][5]
Edit:
Finally i moved my project to VS2012 on Windows 8 OS 64 bit. When i launch the project in VS & it's working fine.
In my understanding i'm making some mistake in Configuration side and also in WIX side. Any help guys???
Note: The application can be installed on Win 32 without any problem.
When you create a 32-bit MSI (compiled as x86) and then try to install it on a 64-bit OS, the registry entries will get written to the WOW64 hive (HKEY_LOCAL_MACHINE\Software\Wow6432Node\Microsoft). The 64-bit version of Windows looks in the 64-bit registry hive and not the WOW64 registry hive when looking for custom registry entries. In your WIX script I see that there are couple of registry entries which gets set, that might be going to the WOW64 hive and that could be the possible reason why your application is not running properly. One solution is to build the MSI in both x86 and x64, if it finally gets deployed to 32 and 64 bit OS.
Having trouble creating a manifest for a couple of modules. The module controls live in:
DesktopModules/Org/ItemManagement
Each module does related but different things, and so should be draggable onto a page as a standalone module.
After looking around, I think I need to create multiple package definitions in the manifest, so I have done that. I have then uploaded the controls and the manifest to the above folder, and installed using Host->Extensions->Create New Module->From Manifest
It seemed to installed okay, appears in the extension list, and appears in the module bar to add to a page; however, when I drag to a location on the page, the page errors on the call to /DesktopModules/internalservices/API/controlbar/AddModule with "The requested resource does not support http method 'GET'.".
If I put each control in a separate folder and install using Host->Extensions->Create New Module->From Control everything works fine, however this is not ideal as all controls will eventually share resources liek CSS, scripts etc., and ideally I want them to just get them from the ModulePath, just so everything is in one place.
Is there anything obviously wrong in my manifest?
<?xml version="1.0" encoding="UTF-8"?>
<dotnetnuke type="Package" version="5.0">
<packages>
<package name="Org_My_Items" type="Module" version="01.00.00">
<friendlyName>My Items</friendlyName>
<description>
My Items grid
</description>
<owner>
<name>Org</name>
<organization>Org</organization>
<email>noreply#example.com</email>
</owner>
<components>
<component type="Module" version="01.00.00">
<desktopModule>
<moduleName>My Items</moduleName>
<foldername>Org</foldername>
<moduleDefinitions>
<moduleDefinition>
<friendlyName>My Items</friendlyName>
<moduleControls>
<moduleControl>
<controlSrc>DesktopModules/Org/ItemManagement/MyItems.ascx</controlSrc>
<controlTitle>My Items</controlTitle>
<controlKey>MyItems</controlKey>
<controlType>View</controlType>
</moduleControl>
</moduleControls>
</moduleDefinition>
</moduleDefinitions>
</desktopModule>
</component>
</components>
</package>
<package name="Org_My_Details" type="Module" version="01.00.00">
<friendlyName>My Details</friendlyName>
<description>
My Details summary display
</description>
<owner>
<name>Org</name>
<organization>Org</organization>
<email>noreply#example.com</email>
</owner>
<components>
<component type="Module" version="01.00.00">
<desktopModule>
<moduleName>My Details</moduleName>
<foldername>Org</foldername>
<moduleDefinitions>
<moduleDefinition>
<friendlyName>My Details</friendlyName>
<moduleControls>
<moduleControl>
<controlSrc>DesktopModules/Org/ItemManagement/MyDetails.ascx</controlSrc>
<controlTitle>My Details</controlTitle>
<controlKey>MyDetails</controlKey>
<controlType>View</controlType>
</moduleControl>
</moduleControls>
</moduleDefinition>
</moduleDefinitions>
</desktopModule>
</component>
</components>
</package>
</packages>
</dotnetnuke>
I have a similar package setup with my open-source DNN Social module. Compare what I have as it is working to install two desktop modules, each with their own module definition, and living in the same folder.
One thing I noticed is that you have specified a controlkey for your module controls. It is my understanding that DNN looks for one control within each moduledefinition with an empty control key <controlKey /> which denotes the default view of the module. Maybe that is an issue?