I know when I install most legacy installers I seem to get a boat load of shortcuts that I then have to unpin. However I recently tried using the util:InternetShortcut element and I got the opposite. I had to search the start screen to find the items to pin. Strangely the Bing1 showed up and I was able to pin it but the Bing2 shortcut did not show up as available. (Edit: Bing2 is showing up now. Weird)
This is kind of a broad question... but what do I need to know here in a Windows 8 world? I'm working in an enterprise IT environment currently and I'm being asked to come up with a strategy of managing the start screen for users and one of the tools I was researching was MSI based installers.
One of the high level requirements I have is to be able to create shortcuts to websites and configure the icon for the shortcut. This seems to be supported by .url files but not supported by util:InternetShortcut. (Edit: The shortcut seems to auto-sync with the target webpage.)
<util:InternetShortcut Id="test1" Directory="ProgramMenuFolder" Name="Bing1" Target="http://www.bing.com" Type="url"/>
<util:InternetShortcut Id="test2" Directory="ProgramMenuFolder" Name="Bing2" Target="http://www.bing.com" Type="link"/>
Explicitly setting the icon and other pieces of a URL shortcut isn't supported by InternetShortcut today. It would be possible but the WiX custom action code just doesn't implement it today. Probably wouldn't take much effort.
As for default pinning, I expect it's a difference between the way the shortcuts are being created in the WiX custom action vs the way the Windows Installer creates shortcuts. The WiX CA is very, very simple and isn't initializing data in the IPropertyStore which is probably why it is ignored by the Start Screen. Again, not to hard to implement but not available today.
Related
I am programming using C++ /CLI with wxWidgets on Windows 11.
I'm Also Using .NET threads
When I create a wxMessageDialog in a secondary thread and run ->ShowModal() , it works.
But when I create a custom dialog in a secondary thread, running ->ShowModal() pops up a wxWidgets debug alert window :
I tried searching on the wxWidgets forum for the same issue but couldn't find one. I found similar issues but none of them addresses my problem.
I also tried to surround MyCustomDialog->ShowModal() with calls to wxMutexGuiEnter(); and wxMutexGuiLeave(); , but that also didn't work.
I also learned about wxThread while scrolling through the forum but if wxMessageDialog works without me having to create a wxThread, I shouldn't have to create a wxThread myself.
I know I shouldn't be calling GUI methods from a secondary thread, but somehow wxMessageDialog's ShowModal() doesnt have a problem with that.
I would like to know how wxMessageDialog works, and if I can implement the same thing with my custom dialog.
Thank you.
In a few words, no there's no way to use a custom dialog from a secondary thread with current implementation and in the foreseeable future.
Even though your current code works today using wxMessageDialog, there's no guarantee that it will continue to work tomorrow, or on different Windows version or on other OS.
Some more details:
wxMessageDialog and a custom dialog are significantly different internally, even though they represent similar UI features.
wxMessageDialog has native implementation, and you can find its wxMessageDialog::ShowModal() implementation in src/msw/msgdlg.cpp.
A custom dialog will be assembled an run by wxWidgets code, even though the dialog itself and other components are native widgets. You can find wxDialog::ShowModal() in src/msw/dialog.cpp.
If you really want to pursue some experimental development (because it would still not be suited for anything else), and being on Win 11, you could try wxRichMessageDialog. It provides more features than wxMessageDialog and on Vista and later versions it has native implementation, which might go along with your "hack".
But again, using UI from secondary threads will lead to a dead end sooner or later.
Having been happy with ClickOnce for a long time, I've been thrust into the weird and wacky world of windows installers. It appears to be a world very short on documentation, unless I don't know what I'm searching for.
I'm aware there's lots of options for building an installer, including Visual Studio setup projects and WiX. Given that I'm looking at a fairly complex scenario, I suspect I'll be going with the latter. What I'm struggling with is doing something like this:
Two things to note about this.
First, it already knows what versions of SQL Server I've got installed. Second, the user can select which options to install and which to skip.
I don't know if there's a particular label for these functions that will help me search for them. But I can't find any details on how to start building this sort of logic into an installer, preferably with WiX.
Can anyone get me started?
This installer UI is WixUI_FeatureTree and it selected by UI reference.
Each line in the UI is a feature.
Each feature can be nested under other feature.
The name of the feature is a property that is set by searching the registry.
To choose if the feature should be enable, expanded etc. check the Feature Element.
Hope it will get you started...
How do I create a localized windows installer package for my WPF application, it has support for 6 languages and I want to have EULA document being localized when user installs the application
I see you tagged Wix and InstallShield, so maybe you are open to try other tools too. Advanced Installer (disclaimer, I work on its development) has in the Professional edition support for multilingual packages.
You just select the languages desired from Translations page, then go to Dialogs page and add a new predefined dialog, select "LicenseAgreementDlg". Advanced Installer will see that you have multiple languages in the package so it will ask you select the EULA file for each language. In roughly 10 minutes you will get your first installer up and running.
I am not quite up to speed on WIX and localization (language support). This online tutorial is a good starting point for you: http://wix.tramontana.co.hu/tutorial/user-interface/do-you-speak-english . Just read through the different User Interface sections.
I don't know which bundling you intend, but in my experience a multi-language setup is less desirable than compiling one MSI file per language. This is easier and faster to compile and work with (very important for large packages), more flexible if you need to bug fix something in a single language, allows you to add new languages easily without full UAT for all languages, and you can deliver the English version as soon as the code is done without waiting several days or weeks for localized files (if any are required).
If you plan to use Windows Installer XML, you can check my answer here. Note that the method is undocumented and not supported by Microsoft, however MS uses it itself and it is working very well.
Just provide a different file for every language transform to the WixVariable WixUILicenseRtf.
I've spent a lot of time fighting with WiX to make an installer that works well with a screen reader. I want the Windows Screen Reader to read the labels and control names out in a sensible and predictable manner, but my findings are that WiX is not very good at producing installers that "sound" right.
Are there best practices or samples that show how an installer, written in WiX, should be structured in order to be fully accessible.
Alternatively, what can I replace WiX with in order to make such an MSI? If I need to replace WiX then I will.
If by “Windows Screen Reader” you mean Narrator don’t waste your time. I’m a screen reader user and Narrator is only good enough to allow you to get enough speech to install a good screen reader. No screen reader users use it on a daily basis so testing with it is pointless. To test with a decent and free screen reader try NVDA found at
http://www.nvda-project.org
I’ve never had issues with installers if they were .msi files; I’ve actually extracted .msi files out of .exe installer packages in order to get passed the custom install code that was not accessible. I had good luck using Visual Studio 2005 to generate accessible installer programs so if your project is a .net app this could be an option.
In Wix, how can I construct a feature tree such that when the parent feature is selected via "Will be installed on local drive" some of the child features get selected by default?
I see that only when I select "Entire feature will be installed.." option I see that the sub features are also getting selected, but all of them get selected. I want some granular control over that.
Any pointers?
thanks
What you are seeing is related to Windows Installer Advertisement. Be sure to read:
Advertisement (Windows)
With this form of advertisement you can install an advertised shortcut or COM registration and the feature and it's components and files won't be installed until you actually try to invoke said entry point. This was a design requirement from 10 years ago when hard drives were expensive and to me is a somewhat useless feature.
Personally I would Feature#AllowAdvertise="no" and Feature#TypicalDefault="install" on each of your features. This should get your Custom Setup looking the way you want it. If it doesn't, I might have misunderstood the question and we need to discuss the INSTALLLEVEL concept.
WiX V3 Feature Element