ConstructiVision v3.60 Installer File Dependencies Analysis¶
Installer File: setup.ins (62,596 bytes)
Decompiled Source: setup.rul (108,922 bytes, 3,707 lines)
Target Example: AutoCAD 2000 installation
Date of Analysis: 2025
Executive Summary¶
The ConstructiVision v3.60 installer (setup.ins) orchestrates a complex dance of file reading, data extraction, processing, and writing across multiple locations. This document maps all file dependencies, data flows, and transformation processes.
Key Finding: The installer reads configuration from 5 sources, extracts installation paths and menu structures, and writes to 3 destinations (file system, acad.rx, Windows Registry).
Installation Package Structure¶
Files in the Installer Package¶
The installer is distributed as a CD-ROM or download with these files:
v3_60\ (Installation Media Root)
??? Setup.exe (71,680 bytes - InstallShield launcher)
??? setup.ins (62,596 bytes - Compiled installer script)
??? setup.rul (108,922 bytes - Decompiled source, NOT in package)
??? SETUP.INI (99 bytes - Launcher configuration)
??? Setup.bmp (1,440,054 bytes - Welcome screen graphic)
??? Readme.txt (8,496 bytes - User documentation)
??? Autorun.inf (27 bytes - CD autorun configuration)
?
??? data1.cab (2,644,300 bytes - MAIN APPLICATION FILES)
??? data1.hdr (6,947 bytes - CAB file metadata)
??? DATA.TAG (100 bytes - Installation marker)
?
??? _sys1.cab (175,312 bytes - InstallShield system files)
??? _sys1.hdr (3,999 bytes - System CAB metadata)
??? _user1.cab (5,572 bytes - User interface resources)
??? _user1.hdr (4,387 bytes - User CAB metadata)
?
??? _INST32I.EX_ (297,989 bytes - 32-bit installer engine)
??? _ISDel.exe (27,648 bytes - Uninstaller helper)
??? _Setup.dll (34,816 bytes - Setup DLL)
?
??? lang.dat (4,484 bytes - Language/localization data)
??? layout.bin (650 bytes - UI layout information)
??? os.dat (434 bytes - OS compatibility data)
??? setup.lid (44 bytes - License ID)
data1.cab Contents (Application Files)¶
The data1.cab file (2.6 MB) contains all ConstructiVision application files. Based on the Readme.txt, this includes:
For AutoCAD 2000 Installation:¶
data1.cab
??? csv.vlx (Visual LISP executable - main program for 2000)
??? pcms.arx (ARX module - cost management)
??? pcms2.arx (ARX module - extended cost features)
??? csv.hlp (Help file)
??? csv.mnc (Compiled menu)
??? csv.mnr (Menu resource file)
??? csv.mns (Menu source file)
??? csv.mnu (Menu template file)
??? csvmenu.lsp (Menu loader script)
??? Manual.rtf (User manual)
??? Wincss.exe (Registration manager)
??? Uninst.isu (Uninstaller configuration)
??? [Sample Files] (Optional, see below)
??? Btch.scr (Batch utilities script template)
??? CSS001.dwg through CSS017.dwg (Sample panel drawings)
??? CSSsite.dwg (Sample site drawing)
??? Mprop.mpr & Mprop.scr (Mass properties templates)
??? Panel.scr (Panel script template)
??? Pnllist.txt (Panel list)
??? [xx]clist.txt (Entity list data)
??? [xx]Tlist.txt (Tilt-up entity data)
??? Wcl.txt (Weld connection definitions)
??? Wclsave.txt (Weld connection backup)
Note: AutoCAD R14 installations would include csv.arx instead of csv.vlx as the main program file.
Files the Installer READS (Dependencies)¶
1. String Table (Embedded in setup.ins)¶
Source: Internal to setup.ins compiled bytecode
Access Method: StrLoadString("", "STRING_ID", variableName)
Purpose: Localized text strings for UI, error messages, registry keys
Strings Loaded:
String ID |
Purpose |
Example Value |
|---|---|---|
|
Product display name |
“ConstructiVision” |
|
Publisher name |
“ConstructiVision” or company name |
|
Version string |
“3.60” |
|
Registry base path |
“SOFTWARE\ConstructiVision\v3.60” |
|
Uninstall registry path |
Base key for uninstaller |
|
Control Panel display |
“ConstructiVision for AutoCAD “ |
|
Installer window title |
“ConstructiVision Installer” |
|
Caption bar text |
“ConstructiVision Setup” |
|
Resolution error |
“Requires 800x600 resolution” |
|
OS bitness error |
“Requires 32-bit Windows” |
|
Process detection |
“AutoCAD is running. Please close…” |
|
Uninstaller creation fail |
“Unable to create uninstaller” |
|
Menu modification fail |
“Unable to modify AutoCAD menu” |
|
File copy error |
“Error copying files” |
|
Component install error |
“Error installing component” |
Example Usage:
StrLoadString("", "PRODUCT_NAME", lString0)
// lString0 now contains "ConstructiVision"
2. license.txt (License Agreement)¶
Source: SUPPORTDIR ^ "license.txt"
Location on Media: Inside _user1.cab or data1.cab
Read By: function104 ? function27
Purpose: Display license agreement dialog during installation
File Format: Plain text file
Size: Estimated 2-10 KB
Content: Software license terms, warranty disclaimers, usage restrictions
Read Method:
lString3 = SUPPORTDIR ^ "license.txt"
function27(titleText, promptText, buttonText, lString3)
// function27 opens file, displays in scrollable dialog
// User must accept to continue
Data Extracted: None (file displayed as-is to user)
3. acad2000.cfg (AutoCAD Configuration File)¶
Source: User’s file system (searched recursively)
Search Pattern: FindAllFiles(driveRoot, "acad2000.cfg", resultPath, recursive=1)
Purpose: Detect AutoCAD 2000 installation location
File Location: Typically C:\Program Files\AutoCAD 2000\acad2000.cfg
File Format: Plain text INI-style configuration file
Size: ~5-20 KB
Example acad2000.cfg Contents:
[System Variables]
ACADVER="15.06"
ACADPREFIX="C:\Program Files\AutoCAD 2000\Support"
TEMPPREFIX="C:\TEMP\"
[System Paths]
ACAD="C:\Program Files\AutoCAD 2000"
Support="C:\Program Files\AutoCAD 2000\Support"
Fonts="C:\Program Files\AutoCAD 2000\Fonts"
Help="C:\Program Files\AutoCAD 2000\Help"
Data Extracted:
File Path - The directory containing acad2000.cfg reveals AutoCAD root
Installation Directory - Extracted via path parsing
Processing:
FindAllFiles(string14, "acad2000.cfg", string17, 1)
// string14 = drive root (e.g., "C:\")
// string17 = RESULT: full path to acad2000.cfg
// Example result: "C:\Program Files\AutoCAD 2000\acad2000.cfg"
// Extract directory:
string15 = ExtractDirectory(string17)
// string15 = "C:\Program Files\AutoCAD 2000\"
Why This File:
AutoCAD 2000 created this file during installation
Guaranteed to exist in every AutoCAD 2000 installation
Location indicates AutoCAD root directory
More reliable than registry (which could be missing or corrupted)
4. acad.rx (ARX Autoload File)¶
Source: [AutoCAD Root]\acad.rx
Location (AC2000): C:\Program Files\AutoCAD 2000\acad.rx
Read By: Multiple functions during installation
Purpose: Read existing ARX autoload entries, check for conflicts, modify
File Format: Plain text, one ARX path per line
Example acad.rx Contents (Before Installation):
C:\Program Files\AutoCAD 2000\Express\acetutil.arx
C:\Program Files\AutoCAD 2000\Express\acettest.arx
C:\Program Files\AutoCAD 2000\Express\acetmain.arx
C:\Program Files\AutoCAD 2000\Support\SomeOtherApp\other.arx
Read Operations:
Existence Check:
FindFile(TARGETDIR, "acad.rx", string22)
lNumber0 = LAST_RESULT
// Result: 0 if found, negative if not found
Content Search (Check for Existing Entry):
FileGrep("acad.rx", "csv.arx", foundLine, lineNumber, caseSensitive=1)
lNumber0 = LAST_RESULT
// Result: 0 if "csv.arx" found in file, negative if not found
Backup Creation:
CopyFile("acad.rx", "acad._rx")
// Creates: C:\Program Files\AutoCAD 2000\acad._rx
Data Extracted:
Existence of ConstructiVision entries (to prevent duplicates)
Line numbers of existing entries
Full file content (preserved during modification)
5. Windows Registry (AutoCAD Configuration)¶
Root Key: HKEY_USERS\.Default\Software\Autodesk\Autocad\[Version]\
Example for AC2000: HKU\.Default\Software\Autodesk\Autocad\R15.0\
Read Operations:
Check if Registry Key Exists:
string23 = ".Default\\Software\\Autodesk\\Autocad\\" + string18
// string18 = "R15.0" for AutoCAD 2000
RegDBSetDefaultRoot(HKEY_USERS) // -2147483645
RegDBKeyExist(string23)
lNumber0 = LAST_RESULT
// Result: 0 if exists, negative if not
Query Subkeys (Enumerate Profiles):
RegDBQueryKey(string23, 1, listHandle)
// Populates listHandle with subkey names
// Example subkeys: "Profiles\Default", "Applications", "Menus"
Read Menu Configuration:
string24 = string23 + "\\Profiles\\" + profileName + "\\Menus"
RegDBGetKeyValueEx(string24, "ACAD", dataType, value, valueSize)
// Reads current menu configuration
// Example value: "acad;express;myapp"
Read Dialogs\Appload\Startup Count:
string25 = string23 + "\\Dialogs\\Appload\\Startup"
RegDBGetKeyValueEx(string25, "NumApps", dataType, countString, valueSize)
StrToNum(number50, countString)
// Determines how many apps are already autoloading
Data Extracted:
AutoCAD profile names
Current menu group list
Existing autoload application count
Menu popup structure
6. Component Definitions (MEDIA)¶
Source: InstallShield MEDIA object (built into setup.ins at compile time)
Purpose: Define what files to copy and where
Access Methods:
ComponentListItems(MEDIA, componentName, listHandle)
ComponentIsItemSelected(MEDIA, itemName)
ComponentTotalSize(MEDIA, componentName, sizeType, flags)
ComponentMoveData(MEDIA, moveFlags, reserved)
Component Structure (Inferred):
MEDIA Object
??? Component: "Core Files" (Always installed)
? ??? csv.vlx ? [TARGETDIR]\csv.vlx
? ??? pcms.arx ? [TARGETDIR]\pcms.arx
? ??? pcms2.arx ? [TARGETDIR]\pcms2.arx
? ??? csv.mnc ? [TARGETDIR]\csv.mnc
? ??? csv.mnr ? [TARGETDIR]\csv.mnr
? ??? csv.mns ? [TARGETDIR]\csv.mns
? ??? csv.mnu ? [TARGETDIR]\csv.mnu
? ??? csvmenu.lsp ? [TARGETDIR]\csvmenu.lsp
? ??? csv.hlp ? [TARGETDIR]\csv.hlp
? ??? Manual.rtf ? [TARGETDIR]\Manual.rtf
? ??? Wincss.exe ? [TARGETDIR]\Wincss.exe
?
??? Component: "Sample Files" (Optional, custom install)
??? Target: <smpdir> ? [TARGETDIR]\Project Files\CSV Sample Site\
??? CSS001.dwg through CSS017.dwg
??? CSSsite.dwg
??? Btch.scr
??? Mprop.mpr, Mprop.scr
??? Panel.scr
??? Pnllist.txt
??? [Various .txt files]
Target Directory Variable:
ComponentSetTarget(MEDIA, "<smpdir>", string21)
// string21 = "C:\Program Files\AutoCAD 2000\Project Files\CSV Sample Site\"
Data Processing & Transformation¶
Process 1: AutoCAD Path Detection ? Installation Paths¶
Input: acad2000.cfg file path
Output: Multiple installation path variables
Transformation:
INPUT (from FindAllFiles):
string17 = "C:\Program Files\AutoCAD 2000\acad2000.cfg"
PROCESSING:
string15 = ExtractDirectory(string17)
// string15 = "C:\Program Files\AutoCAD 2000\"
string19 = string15 + "Support\ConstructiVision\"
// string19 = "C:\Program Files\AutoCAD 2000\Support\ConstructiVision\"
string20 = string15 + "Project Files\"
// string20 = "C:\Program Files\AutoCAD 2000\Project Files\"
string21 = string20 + "CSV Sample Site\"
// string21 = "C:\Program Files\AutoCAD 2000\Project Files\CSV Sample Site\"
TARGETDIR = string19
// Sets installer's global target
OUTPUT PATHS:
Main Installation: C:\Program Files\AutoCAD 2000\Support\ConstructiVision\
Sample Files: C:\Program Files\AutoCAD 2000\Project Files\CSV Sample Site\
Process 2: Version String ? Registry Path¶
Input: AutoCAD version detection
Output: Registry key paths
Transformation:
INPUT:
User selected "AutoCAD 2000" in version dialog
PROCESSING:
string18 = "R15.0" // AutoCAD 2000 internal version
// (R14 would be "R14.0")
string23 = ".Default\\Software\\Autodesk\\Autocad\\" + string18
// string23 = ".Default\\Software\\Autodesk\\Autocad\\R15.0"
string24 = string23 + "\\Profiles\\" + profileName + "\\Menus"
// string24 = ".Default\\Software\\Autodesk\\Autocad\\R15.0\\Profiles\\<<Unnamed Profile>>\\Menus"
string25 = string23 + "\\Dialogs\\Appload\\Startup"
// string25 = ".Default\\Software\\Autodesk\\Autocad\\R15.0\\Dialogs\\Appload\\Startup"
OUTPUT REGISTRY PATHS:
Base: HKU\.Default\Software\Autodesk\Autocad\R15.0\
Menus: HKU\.Default\Software\Autodesk\Autocad\R15.0\Profiles\<<Unnamed Profile>>\Menus\
Startup: HKU\.Default\Software\Autodesk\Autocad\R15.0\Dialogs\Appload\Startup\
Process 4: Autoload Count Increment¶
Input: Current NumApps registry value
Output: Updated count and new entry positions
Transformation:
INPUT (Read from Registry):
string27 = "3" // Current number of autoload apps
PROCESSING:
StrToNum(number50, string27)
// number50 = 3
number50 = number50 + 1
// number50 = 4 (first new entry)
NumToStr(string26, number50)
// string26 = "4"
lString0 = string19 + "pcms2.arx"
// lString0 = "C:\Program Files\AutoCAD 2000\Support\ConstructiVision\pcms2.arx"
RegDBSetKeyValueEx(string25, string26, REG_SZ, lString0, -1)
// Sets "4" = "C:\...\pcms2.arx"
number50 = number50 + 1
// number50 = 5 (second new entry)
NumToStr(string26, number50)
string26 = string26 + "Startup"
// string26 = "5Startup"
lString0 = string19 + "csv.vlx"
RegDBSetKeyValueEx(string25, string26, REG_SZ, lString0, -1)
// Sets "5Startup" = "C:\...\csv.vlx"
NumToStr(string27, number50)
RegDBSetKeyValueEx(string25, "NumApps", dataType, string27, -1)
// Updates NumApps to "5"
OUTPUT (Registry):
NumApps = "5"
4 = "C:\Program Files\AutoCAD 2000\Support\ConstructiVision\pcms2.arx"
5Startup = "C:\Program Files\AutoCAD 2000\Support\ConstructiVision\csv.vlx"
Files the Installer WRITES (Outputs)¶
1. Application Files (from data1.cab)¶
Destination: C:\Program Files\AutoCAD 2000\Support\ConstructiVision\
Files Written:
C:\Program Files\AutoCAD 2000\Support\ConstructiVision\
??? csv.vlx (100-200 KB - Main program for AC2000)
??? pcms.arx (150-300 KB - Cost management module)
??? pcms2.arx (100-200 KB - Extended cost module)
??? csv.hlp (50-100 KB - Help file)
??? csv.mnc (10-20 KB - Compiled menu)
??? csv.mnr (5-10 KB - Menu resource)
??? csv.mns (5-10 KB - Menu source)
??? csv.mnu (5-10 KB - Menu template)
??? csvmenu.lsp (2-5 KB - Menu loader LISP script)
??? Manual.rtf (500 KB - 2 MB - User manual)
??? Wincss.exe (50-100 KB - Registration manager)
??? Uninst.isu (2-5 KB - Uninstaller configuration)
Write Method:
TARGETDIR = string19
ComponentMoveData(MEDIA, moveFlags, reserved)
// Extracts files from data1.cab to TARGETDIR
2. Sample Files (Optional)¶
Destination: C:\Program Files\AutoCAD 2000\Project Files\CSV Sample Site\
Files Written:
C:\Program Files\AutoCAD 2000\Project Files\CSV Sample Site\
??? CSS001.dwg through CSS017.dwg (17 sample panel drawings, ~50-200 KB each)
??? CSSsite.dwg (Sample site drawing, ~500 KB - 1 MB)
??? Btch.scr (Batch utilities script, ~1-2 KB)
??? Mprop.mpr (Mass properties output, ~1 KB)
??? Mprop.scr (Mass properties script, ~1 KB)
??? Panel.scr (Panel script template, ~1-2 KB)
??? Pnllist.txt (Panel list, ~1-2 KB)
??? [xx]clist.txt (Entity list data files, ~2-5 KB each)
??? [xx]Tlist.txt (Tilt-up entity data, ~2-5 KB each)
??? Wcl.txt (Weld connection definitions, ~2-5 KB)
??? Wclsave.txt (Weld connection backup, ~2-5 KB)
Write Method:
string21 = string20 + "CSV Sample Site\"
ComponentSetTarget(MEDIA, "<smpdir>", string21)
// Redirects <smpdir> component to sample directory
3. acad.rx (Modified)¶
File: C:\Program Files\AutoCAD 2000\acad.rx
Backup: C:\Program Files\AutoCAD 2000\acad._rx
Modifications:
BEFORE Installation:
C:\Program Files\AutoCAD 2000\Express\acetutil.arx
C:\Program Files\AutoCAD 2000\Express\acettest.arx
C:\Program Files\AutoCAD 2000\Express\acetmain.arx
AFTER Installation:
C:\Program Files\AutoCAD 2000\Support\ConstructiVision\csv.arx
C:\Program Files\AutoCAD 2000\Support\ConstructiVision\pcms.arx
C:\Program Files\AutoCAD 2000\Express\acetutil.arx
C:\Program Files\AutoCAD 2000\Express\acettest.arx
C:\Program Files\AutoCAD 2000\Express\acetmain.arx
Write Method:
// Backup original
CopyFile("acad.rx", "acad._rx")
// Create/Open for modification
OpenFileMode(3) // Read/Write
CreateFile(fileHandle, string15, "acad.rx")
// Insert csv.arx at beginning (position 0)
lString2 = string19 + "csv.arx"
FileInsertLine("acad.rx", lString2, position=0, addNewline=1)
// Insert pcms.arx at beginning (csv.arx now at position 1)
lString2 = string19 + "pcms.arx"
FileInsertLine("acad.rx", lString2, position=0, addNewline=1)
CloseFile(fileHandle)
Important Notes:
Lines inserted at position 0 (beginning of file)
pcms.arx inserted AFTER csv.arx, so pcms.arx ends up first in file
Load order in file: pcms.arx, csv.arx, then existing entries
AutoCAD loads ARX modules in order listed
Why This Order Matters:
Some sources suggest pcms.arx should load AFTER csv.arx (depends on csv.arx)
Inserting at position 0 twice reverses order
Possible BUG: This may cause dependency issues if pcms.arx needs csv.arx symbols
4. Windows Registry - Application Registration¶
Root: HKEY_USERS\.Default\Software\Autodesk\Autocad\R15.0\
4c. Autoload Registration¶
Key: HKU\.Default\Software\Autodesk\Autocad\R15.0\Dialogs\Appload\Startup\
Values Written:
BEFORE Installation:
NumApps = "3"
1 = "C:\SomeApp\app1.arx"
2 = "C:\AnotherApp\app2.arx"
3 = "C:\ThirdApp\app3.arx"
AFTER Installation:
NumApps = "5"
1 = "C:\SomeApp\app1.arx"
2 = "C:\AnotherApp\app2.arx"
3 = "C:\ThirdApp\app3.arx"
4 = "C:\Program Files\AutoCAD 2000\Support\ConstructiVision\pcms2.arx"
5Startup = "C:\Program Files\AutoCAD 2000\Support\ConstructiVision\csv.vlx"
Write Method:
string25 = string23 + "\\Dialogs\\Appload\\Startup"
// Read current count
RegDBGetKeyValueEx(string25, "NumApps", dataType, string27, valueSize)
StrToNum(number50, string27) // number50 = 3
// Add pcms2.arx
number50 = number50 + 1 // 4
NumToStr(string26, number50) // "4"
lString0 = string19 + "pcms2.arx"
RegDBSetKeyValueEx(string25, string26, REG_SZ, lString0, -1)
// Add csv.vlx
number50 = number50 + 1 // 5
NumToStr(string26, number50) // "5"
string26 = string26 + "Startup" // "5Startup"
lString0 = string19 + "csv.vlx"
RegDBSetKeyValueEx(string25, string26, REG_SZ, lString0, -1)
// Update count
NumToStr(string27, number50) // "5"
RegDBSetKeyValueEx(string25, "NumApps", dataType, string27, -1)
Note: The “5Startup” naming convention is peculiar but appears to be intentional
5. Windows Registry - Uninstall Information¶
Root: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Uninstall\
Key Created: HKLM\...\Uninstall\ConstructiVision\
Values Written:
DisplayName = "ConstructiVision for AutoCAD R15.0"
UninstallString = "C:\Program Files\AutoCAD 2000\Support\ConstructiVision\_ISDel.exe"
InstallLocation = "C:\Program Files\AutoCAD 2000\Support\ConstructiVision"
Publisher = "ConstructiVision"
DisplayVersion = "3.60"
Write Method:
RegDBSetDefaultRoot(HKEY_LOCAL_MACHINE)
RegDBSetItem(REGDB_UNINSTALL_NAME, "ConstructiVision " + string18)
RegDBSetItem(REGDB_UNINSTALL_KEY, registryPath)
RegDBSetItem(REGDB_UNINSTALL_DISPLAYNAME, "ConstructiVision for AutoCAD " + string18)
Complete Data Flow Diagram¶
???????????????????????????????????????????????????????????????????????
? INSTALLATION MEDIA (CD/Download) ?
???????????????????????????????????????????????????????????????????????
? ?
? ???????????????? ???????????????? ???????????????? ?
? ? setup.ins ? ? data1.cab ? ? license.txt ? ?
? ? (compiled) ? ? (app files) ? ? (EULA) ? ?
? ???????????????? ???????????????? ???????????????? ?
? ? ? ? ?
??????????????????????????????????????????????????????????????????????
? ? ?
? ? ?
? ? ?
????????????? ? ????????????????
? String ? ? ? Display to ?
? Table ? ? ? User (EULA) ?
? (embedded)? ? ????????????????
????????????? ?
? ?
? ?
? ?
??????????????????????? ?
? USER'S FILE SYSTEM ? ?
??????????????????????? ?
? ? ?
? Search All Drives ? ?
? ? ? ?
? ? ? ?
? ???????????????? ? ?
? ?acad2000.cfg ??????????????????? READ (detect AutoCAD location)
? ???????????????? ? ?
? ? ? ?
? ?????????????????????????? EXTRACT: AutoCAD root path
? ? ? ? Result: C:\Program Files\AutoCAD 2000\
? ? ? ?
? ? ? ?
? ???????????????? ? ?
? ? acad.rx ??????????????????? READ (check existing entries)
? ???????????????? ? ?
? ? ? ?
? ?????????????????????????? BACKUP: acad._rx
? ? ? ?
? ? ? ?
? ? ? ?
? ???????????????? ? ???????????????????????????
? ? acad._rx ? ? ? PROCESS & COMPUTE: ?
? ? (backup) ? ? ? ?
? ???????????????? ? ? ⢠Installation paths ?
? ? ? ⢠Registry keys ?
? ???????????????? ⢠Menu group names ?
? ? ? ? ⢠Autoload indices ?
? ? ? ???????????????????????????
? ? ? ?
? ???????????????? ? ?
? ? acad.rx ????????????????????????? WRITE (insert CSV entries)
? ? (modified) ? ? ? New lines at position 0
? ???????????????? ? ?
? ? ?
? ????????????????????????????????? WRITE (application files)
? ? ? ? from data1.cab
? ? ? ?
? ???????????????? ? ?
? ?ConstructiVision\ ? ?
? ???????????????? ? ?
? ? csv.vlx ??????????????????
? ? pcms.arx ? ?
? ? pcms2.arx ? ?
? ? csv.mnc ? ?
? ? csv.hlp ? ?
? ? csvmenu.lsp ? ?
? ? Wincss.exe ? ?
? ? Manual.rtf ? ?
? ? ... ? ?
? ???????????????? ?
? ?
? ???????????????? ?
? ?CSV Sample ? ?
? ?Site\ ??????????????????????????? WRITE (sample files)
? ???????????????? ? from data1.cab (optional)
? ? CSS001.dwg ? ?
? ? CSSsite.dwg ? ?
? ? *.scr, *.txt ? ?
? ???????????????? ?
???????????????????????
?
?
?
???????????????????????????????????????????????????????????????
? WINDOWS REGISTRY ?
???????????????????????????????????????????????????????????????
? ?
? HKEY_USERS\.Default\Software\Autodesk\Autocad\R15.0\ ?
? ? ?
? ?? Profiles\<<Unnamed Profile>>\Menus\ ?
? ? ?? ACAD = "acad;express;ConstructiVisioncsv" ???????? WRITE
? ? ?? Group1 = "ConstructiVisioncsv" ???????? WRITE
? ? ?? Pop1 = "CSV Pop1" ???????? WRITE
? ? ?
? ?? Dialogs\Appload\Startup\ ?
? ?? NumApps = "5" ???????? WRITE (updated)
? ?? 4 = "...\pcms2.arx" ???????? WRITE
? ?? 5Startup = "...\csv.vlx" ???????? WRITE
? ?
? HKEY_LOCAL_MACHINE\...\Uninstall\ConstructiVision\ ?
? ?? DisplayName = "ConstructiVision for AC R15.0"???????? WRITE
? ?? UninstallString = "...\\_ISDel.exe" ???????? WRITE
? ?? InstallLocation = "...\\ConstructiVision" ???????? WRITE
? ?? Publisher = "ConstructiVision" ???????? WRITE
? ?
???????????????????????????????????????????????????????????????
AutoCAD 2000 Specific Details¶
Why AutoCAD 2000 is Different from R14¶
Aspect |
AutoCAD R14 |
AutoCAD 2000 |
|---|---|---|
Main Program File |
|
|
Registry Version |
|
|
Config File |
|
|
Visual LISP |
Not included |
Integrated |
ARX API Version |
14.x |
15.x (incompatible) |
Default Install |
|
|
Files Used for AutoCAD 2000¶
Primary Module:
csv.vlx- Visual LISP eXecutable (compiled LISP code)More flexible than ARX for UI and high-level logic
Can call ARX functions but doesn’t require C++ recompilation
Supporting ARX Modules:
pcms.arx- Cost management (still C++ for performance)pcms2.arx- Extended cost features (still C++ for performance)
Registry Paths for AutoCAD 2000¶
Base: HKU\.Default\Software\Autodesk\Autocad\R15.0\
Menu Registration:
\Profiles\<<Unnamed Profile>>\Menus\
ACAD = "acad;express;ConstructiVisioncsv"
Group1 = "ConstructiVisioncsv"
Pop1 = "CSV Pop1"
Autoload Registration:
\Dialogs\Appload\Startup\
NumApps = "5"
4 = "C:\Program Files\AutoCAD 2000\Support\ConstructiVision\pcms2.arx"
5Startup = "C:\Program Files\AutoCAD 2000\Support\ConstructiVision\csv.vlx"
Installation Paths for AutoCAD 2000¶
AutoCAD Root:
C:\Program Files\AutoCAD 2000\
ConstructiVision Installation:
C:\Program Files\AutoCAD 2000\Support\ConstructiVision\
??? csv.vlx (Main program - AC2000 specific)
??? pcms.arx (Cost mgmt - binary compatible)
??? pcms2.arx (Extended - binary compatible)
??? csv.mnc (Compiled menu)
??? csv.hlp (Help file)
??? csvmenu.lsp (Menu loader)
??? Manual.rtf (Documentation)
??? Wincss.exe (Registration manager)
Sample Files:
C:\Program Files\AutoCAD 2000\Project Files\CSV Sample Site\
??? [Sample drawings and scripts]
AutoCAD Configuration:
C:\Program Files\AutoCAD 2000\acad2000.cfg (READ ONLY)
C:\Program Files\AutoCAD 2000\acad.rx (MODIFIED)
C:\Program Files\AutoCAD 2000\acad._rx (BACKUP CREATED)
Summary of File Relationships¶
READ Dependencies¶
setup.ins (installer executable)
Contains: Compiled installer logic
Embeds: String table, UI resources, component definitions
Reads: license.txt, acad2000.cfg, acad.rx, registry
license.txt ? Displayed to user in EULA dialog
acad2000.cfg ? Parsed to extract AutoCAD installation path
acad.rx ? Checked for existing entries, backed up, then modified
Windows Registry ? Read to determine menu structure and autoload count
data1.cab ? Extracted to target directories
WRITE Outputs¶
Application Files ?
[AutoCAD]\Support\ConstructiVision\All .arx, .vlx, .mnc, .lsp, .hlp, .exe, .rtf files
Sample Files ?
[AutoCAD]\Project Files\CSV Sample Site\All .dwg, .scr, .txt sample files
acad.rx ? Modified to include ConstructiVision ARX paths
Backup created as acad._rx
Registry (User Hive) ? Menu and autoload configuration
HKU\.Default\...\Autocad\R15.0\Profiles\...\Menus\HKU\.Default\...\Autocad\R15.0\Dialogs\Appload\Startup\
Registry (Machine Hive) ? Uninstall information
HKLM\...\Uninstall\ConstructiVision\
Transformation Processes¶
Path Detection: acad2000.cfg location ? AutoCAD root path
Path Construction: Root path ? Installation paths
Version Mapping: AutoCAD version ? Registry key paths
Menu Integration: Installation path ? Menu group names
Autoload Indexing: Existing count ? New entry positions
Key Insights for Modernization¶
Critical Dependencies¶
acad2000.cfg is the anchor - Entire installation flow depends on finding this file
Modern approach: Use Autodesk registry keys instead of file search
acad.rx modification is fragile - Direct text file editing is error-prone
Modern approach: Use AutoCAD’s API to register ARX modules
Registry writes to HKU.Default - May not affect all user profiles
Modern approach: Use HKLM\Software\Autodesk… for machine-wide config
No version checking - Installer assumes files in data1.cab are correct for detected AutoCAD
Modern approach: Embed multiple versions or download version-specific files
Data That Must Be Preserved¶
For any modernization effort, these data flows must be maintained:
AutoCAD Installation Detection - Must determine where AutoCAD is installed
File Deployment - Core files and optional samples must reach correct directories
Menu Integration - CSV menu must appear in AutoCAD menu bar
Autoload Registration - Modules must load automatically on AutoCAD startup
Uninstall Information - Must be removable via Windows Control Panel
Recommended Modern Approach¶
Registry-First Detection:
Check: HKLM\Software\Autodesk\AutoCAD\R15.0\AcadLocation Fallback: Search for acad2000.cfg only if registry missing
MSI Package with Custom Actions:
Replace InstallShield with Windows Installer
Use Custom Actions for AutoCAD-specific integration
Modern AutoCAD Integration:
Use .bundle format (AutoCAD 2013+) instead of acad.rx
Use ARX OnLoad registration instead of file modification
Per-User vs Per-Machine:
Install files per-machine (Program Files)
Register menu/autoload per-user (HKCU)
Runtime-Generated Files (Post-Installation) ??¶
Important: The following files are NOT created by the installer. They are created dynamically by the ConstructiVision application after installation, on first invocation.
Batch Files for DOS SHELL Commands¶
Location: [AutoCAD Root]\ (e.g., C:\Program Files\AutoCAD 2000\)
Files Created:
cv1.bat (<200 bytes)
cv2.bat (<200 bytes)
cv3.bat (<200 bytes)
From README.txt:
“Invoking ConstructiVision after Installation will create up to 3 tiny (less than 200 bytes) batch files in the AutoCAD program directory. These files execute certain DOS functions via AutoCAD’s SHELL command, and make it possible to utilize ConstructiVision’s powerful features without the need for VBA support. These files all begin with the letters “cv”, and have the “.bat” extension.”
Purpose:
Execute DOS commands via AutoCAD’s
(command "SHELL" ...)LISP functionAvoid dependency on VBA (Visual Basic for Applications)
Provide lightweight alternative to ObjectARX SHELL wrappers
Enable file operations, directory management, system commands
Creation Method:
Written by ConstructiVision application code (likely csv.vlx or pcms.arx)
Created on first use of features requiring SHELL command execution
Automatically recreated if deleted
Critical Warning: ?? DO NOT move, rename, or edit these batch files!
ConstructiVision expects them in the AutoCAD root directory
Application hardcodes paths to these files
Modification or relocation causes application crashes
If deleted, will be recreated on next invocation
Typical Contents (Inferred):
cv1.bat - File operations
@echo off
REM ConstructiVision File Operations
%1 %2 %3 %4 %5
exit
cv2.bat - Directory operations
@echo off
REM ConstructiVision Directory Operations
%1 %2 %3 %4 %5
exit
cv3.bat - System commands
@echo off
REM ConstructiVision System Commands
%1 %2 %3 %4 %5
exit
Note: Actual batch file contents are determined by the application based on which features are used. Parameters (%1, %2, etc.) are passed from LISP code.
Modernization Consideration:
Modern Windows has better process control APIs
WiX installer should document this behavior
Consider replacing SHELL commands with native ARX file I/O
Batch files may trigger antivirus warnings on modern Windows
Appendix: File Size Summary¶
File |
Size |
Purpose |
|---|---|---|
setup.ins |
62 KB |
Installer compiled script |
setup.rul |
109 KB |
Decompiled source (not in package) |
data1.cab |
2.6 MB |
All application files |
_sys1.cab |
175 KB |
InstallShield system files |
Setup.exe |
72 KB |
Launcher |
Setup.bmp |
1.4 MB |
Welcome screen graphic |
Total Package |
~4.5 MB |
Full installation media |
Document Metadata¶
Created: 2025
Source: Decompiled setup.rul analysis
Focus: AutoCAD 2000 installation paths and registry keys
Purpose: Document file dependencies for modernization planning
End of Document