Complete application localization across all supported languages

This commit is contained in:
Hakan Seven committed 2026-09-07 01:05:02 +03:00
1 parent 96c794c072
commit d66e89ca19
78 files changed
+26043 -877

No files matched your search

+15 -90
View File
@@ -1,26 +1,4 @@
<?xml version='1.0' encoding='windows-1252'?>
<!--
WiX source for the Windows MSI installer.
Build (CI / locally with WiX Toolset 3.x in PATH):
candle.exe -arch x64 -dVersion=<x.y.z> -dSource=target\release\OpenCADStudio.exe \
-dIcon=packaging\windows\AppIcon.ico packaging\windows\main.wxs \
-out packaging\windows\main.wixobj
light.exe packaging\windows\main.wixobj -ext WixUIExtension -out OpenCADStudio.msi
Provides:
* Per-machine install under Program Files\Open CAD Studio.
* Start Menu shortcut under Programs\Open CAD Studio.
* Desktop shortcut.
* File associations for .dwg and .dxf via a single ProgID; both
route through `OpenCADStudio.exe "%1"` so the OS hands the file
path to the app as argv[1] (consumed in OpenCADStudio::boot).
* Default Programs registration (Capabilities + RegisteredApplications)
so the app shows up in Settings > Default Apps and can be set as the
default handler for .dwg / .dxf.
* Standard Add/Remove Programs entry with icon.
* MajorUpgrade — installing a newer MSI replaces the old version.
-->
<?xml version='1.0' encoding='UTF-8'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Product
Id='*'
@@ -33,8 +11,8 @@
<Package
Id='*'
Keywords='Installer'
Description='Open CAD Studio Installer'
Keywords='!(loc.Installer)'
Description='!(loc.InstallerDescription)'
Manufacturer='Hakan Seven'
InstallerVersion='450'
Languages='1033'
@@ -44,7 +22,7 @@
<MajorUpgrade
Schedule='afterInstallInitialize'
DowngradeErrorMessage='A newer version of [ProductName] is already installed. Setup will now exit.' />
DowngradeErrorMessage='!(loc.DowngradeError)' />
<Media Id='1' Cabinet='product.cab' EmbedCab='yes' />
@@ -54,12 +32,7 @@
<Property Id='ARPURLINFOABOUT' Value='https://github.com/HakanSeven12/OpenCADStudio' />
<Property Id='ARPURLUPDATEINFO' Value='https://github.com/HakanSeven12/OpenCADStudio/releases' />
<Property Id='ARPCONTACT' Value='Hakan Seven' />
<Property Id='ARPCOMMENTS' Value='2D/3D CAD application for DWG and DXF drawings.' />
<!--
Hide "Repair" from the Apps & Features entry — there is no repair flow.
"Modify" is deliberately left enabled: WixUI_FeatureTree supports it, so
users can add/remove the optional Desktop shortcut feature later.
-->
<Property Id='ARPCOMMENTS' Value='!(loc.ApplicationDescription)' />
<Property Id='ARPNOREPAIR' Value='1' />
<Directory Id='TARGETDIR' Name='SourceDir'>
@@ -77,70 +50,40 @@
Id='StartMenuShortcut'
Directory='ProgramMenuDir'
Name='Open CAD Studio'
Description='Launch Open CAD Studio'
Description='!(loc.Launch)'
WorkingDirectory='APPLICATIONROOTDIRECTORY'
Icon='AppIcon.ico'
IconIndex='0'
Advertise='yes' />
</File>
<!-- DWG/DXF file-type icons, generated from the mimetype SVGs
(CI: magick image-vnd.{dwg,dxf}.svg -> {dwg,dxf}.ico). -->
<File Id='DwgIco' Name='dwg.ico' DiskId='1' Source='packaging\windows\dwg.ico' />
<File Id='DxfIco' Name='dxf.ico' DiskId='1' Source='packaging\windows\dxf.ico' />
<!-- DWG thumbnail provider (IThumbnailProvider). Ships beside the
exe; OpenCADStudio self-registers it under HKCU on startup
(see file_association::install_thumbnailer). -->
<File
Id='DwgThumbDll'
Name='dwg_thumbnailer_win.dll'
DiskId='1'
Source='target\release\dwg_thumbnailer_win.dll' />
<!--
File associations. Two ProgIDs (one per extension) so the
`<Verb Id='open'>` rows don't collide on the same registry
primary key — both ProgIDs invoke the same exe with the
file path as `argv[1]`.
-->
<ProgId
Id='OpenCADStudio.DWG'
Description='DWG Drawing'
Description='!(loc.DwgDrawing)'
Icon='DwgIco'
IconIndex='0'>
<Extension Id='dwg' ContentType='image/vnd.dwg'>
<Verb Id='open' Command='Open' TargetFile='OpenCADStudioEXE' Argument='"%1"' />
<Verb Id='open' Command='!(loc.Open)' TargetFile='OpenCADStudioEXE' Argument='"%1"' />
</Extension>
</ProgId>
<ProgId
Id='OpenCADStudio.DXF'
Description='DXF Drawing'
Description='!(loc.DxfDrawing)'
Icon='DxfIco'
IconIndex='0'>
<Extension Id='dxf' ContentType='image/vnd.dxf'>
<Verb Id='open' Command='Open' TargetFile='OpenCADStudioEXE' Argument='"%1"' />
<Verb Id='open' Command='!(loc.Open)' TargetFile='OpenCADStudioEXE' Argument='"%1"' />
</Extension>
</ProgId>
</Component>
<!--
Default Programs registration. The ProgId/Extension rows above
register the handlers, but modern Windows (8+) guards the actual
default via a per-user UserChoice hash an installer can't forge.
Publishing Capabilities + a RegisteredApplications entry is the
supported way in: it makes Open CAD Studio appear in Settings >
Default Apps and the "Open with" list, so .dwg / .dxf can be set
to it. The keys are HKLM-wide, so the shell picks them up on its
next association query without a forced refresh.
-->
<Component Id='DefaultPrograms' Guid='6f3e9b2a-1c4d-4f8a-9b7e-2d5a8c1f0e63' Win64='yes'>
<!--
Applications\<exename>\DefaultIcon is what Windows shows in the
"Open with" context-menu list and "Choose another app" picker.
Without it the entry appears with a blank generic document icon.
-->
<RegistryValue
Root='HKLM'
Key='SOFTWARE\Classes\Applications\OpenCADStudio.exe\DefaultIcon'
@@ -181,7 +124,7 @@
Key='Software\Open CAD Studio\Capabilities'
Name='ApplicationDescription'
Type='string'
Value='2D/3D CAD application for DWG and DXF drawings.' />
Value='!(loc.ApplicationDescription)' />
<RegistryValue
Root='HKLM'
Key='Software\Open CAD Studio\Capabilities\FileAssociations'
@@ -219,18 +162,12 @@
</Component>
</Directory>
</Directory>
<!--
Desktop shortcut. A non-advertised shortcut with an explicit Target;
the HKCU registry value is the component KeyPath (a shortcut on its own
cannot be a KeyPath for a per-user resource).
-->
<Directory Id='DesktopFolder' Name='Desktop'>
<Directory Id='DesktopFolder' Name='!(loc.Desktop)'>
<Component Id='DesktopShortcutComp' Guid='c5c7f1c4-3d8a-4efd-b049-4662d9143dcd'>
<Shortcut
Id='DesktopShortcut'
Name='Open CAD Studio'
Description='Launch Open CAD Studio'
Description='!(loc.Launch)'
Target='[APPLICATIONROOTDIRECTORY]OpenCADStudio.exe'
WorkingDirectory='APPLICATIONROOTDIRECTORY'
Icon='AppIcon.ico'
@@ -250,25 +187,15 @@
<ComponentRef Id='MainExecutable' />
<ComponentRef Id='DefaultPrograms' />
<ComponentRef Id='ProgramMenuDirComp' />
<!-- Optional, user-deselectable in the feature tree (default on). -->
<Feature
Id='DesktopShortcut'
Title='Desktop shortcut'
Description='Add a shortcut to Open CAD Studio on the desktop.'
Title='!(loc.DesktopShortcut)'
Description='!(loc.DesktopShortcutDescription)'
Level='1'
Absent='allow'>
<ComponentRef Id='DesktopShortcutComp' />
</Feature>
</Feature>
<!--
Refresh the shell after install so the new .dwg / .dxf file-type icons
and associations appear immediately instead of only after a reboot or an
icon-cache rebuild. `ie4uinit -show` rebuilds the per-user icon cache.
Immediate execution keeps property access ([SystemFolder]); Return='ignore'
means it can never fail the install, and the NOT REMOVE condition skips it
on uninstall.
-->
<CustomAction
Id='RefreshShellIcons'
Directory='APPLICATIONROOTDIRECTORY'
@@ -278,8 +205,6 @@
<InstallExecuteSequence>
<Custom Action='RefreshShellIcons' After='InstallFinalize'>NOT REMOVE</Custom>
</InstallExecuteSequence>
<!-- Installer UI + finish-screen launch checkbox (see ui.wxs). -->
<UIRef Id='OpenCADStudioUI' />
</Product>
+14
View File
@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8"?>
<WixLocalization xmlns="http://schemas.microsoft.com/wix/2006/localization" Culture="en-US" Codepage="1252">
<String Id="Launch">Launch Open CAD Studio</String>
<String Id="InstallerDescription">Open CAD Studio Installer</String>
<String Id="Installer">Installer</String>
<String Id="DwgDrawing">DWG Drawing</String>
<String Id="DxfDrawing">DXF Drawing</String>
<String Id="DesktopShortcut">Desktop shortcut</String>
<String Id="DesktopShortcutDescription">Add a shortcut to Open CAD Studio on the desktop.</String>
<String Id="DowngradeError">A newer version of [ProductName] is already installed. Setup will now exit.</String>
<String Id="Open">Open</String>
<String Id="Desktop">Desktop</String>
<String Id="ApplicationDescription">2D/3D CAD application for DWG and DXF drawings</String>
</WixLocalization>
+2 -32
View File
@@ -1,39 +1,9 @@
<?xml version='1.0' encoding='windows-1252'?>
<!--
Installer UI for the Windows MSI, kept separate from the package/feature
definition in main.wxs. Linked in via `<UIRef Id='OpenCADStudioUI' />`
there; both files are compiled together by candle and linked by light
(which needs `-ext WixUIExtension` for the WixUI_Minimal dialog set).
Provides:
* WixUI_FeatureTree wizard (Welcome → License → Features → Progress →
Finish). The Features page lets the user deselect the optional Desktop
shortcut feature (default on).
* A pre-ticked "Launch Open CAD Studio" checkbox on the finish screen
that starts the freshly installed exe when the user clicks Finish.
-->
<?xml version='1.0' encoding='UTF-8'?>
<Wix xmlns='http://schemas.microsoft.com/wix/2006/wi'>
<Fragment>
<!--
Finish-screen "Launch Open CAD Studio" checkbox.
WIXUI_EXITDIALOGOPTIONALCHECKBOX=1 pre-ticks the checkbox; the Publish
below fires the launch action when the user clicks Finish with it checked.
-->
<Property Id='WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT' Value='Launch Open CAD Studio' />
<Property Id='WIXUI_EXITDIALOGOPTIONALCHECKBOXTEXT' Value='!(loc.Launch)' />
<Property Id='WIXUI_EXITDIALOGOPTIONALCHECKBOX' Value='1' />
<!--
License shown on the WixUI_Minimal EULA page. Without this variable WiX
falls back to its built-in placeholder (Lorem ipsum) RTF. Point it at the
project's GPL-3 text (License.rtf, generated from the repo LICENSE).
-->
<WixVariable Id='WixUILicenseRtf' Value='$(var.License)' />
<!--
Start the installed exe after the wizard closes. FileKey points at the
File defined in main.wxs (light resolves the cross-fragment reference).
asyncNoWait lets the installer exit cleanly while the app starts.
-->
<CustomAction
Id='LaunchApplication'
FileKey='OpenCADStudioEXE'